releaf-core 2.1.0 → 2.2.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.
- checksums.yaml +4 -4
- data/app/builders/releaf/builders/table_builder.rb +0 -1
- data/app/lib/releaf/action_controller/exceptions.rb +2 -2
- data/app/lib/releaf/responders.rb +0 -2
- data/app/models/releaf/settings.rb +154 -1
- data/app/views/releaf/error_pages/{access_denied.html.haml → forbidden.html.haml} +0 -0
- data/lib/generators/releaf/templates/config/app.yml +3 -0
- data/lib/releaf/root/settings_manager.rb +9 -1
- data/lib/releaf-core.rb +0 -1
- metadata +13 -15
- data/app/lib/releaf/responders/access_denied_responder.rb +0 -9
- data/app/lib/releaf/responders/error_responder.rb +0 -9
- data/app/lib/releaf/responders/page_not_found_responder.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf0ce248be934f51e65b01bf42bf8fa3d46c82163f5dee629d42536e480c1dbf
|
4
|
+
data.tar.gz: 49b27b2b95128d445129d4c3d4fad7e1410ea750ef1c3235daecb0bb845ca95c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 886526531af17482e95918a74c28de9cc261d32543a6c0978556743a9bded4debbcebc1c1e420321b493dfb2124ac47e6aec03d9ec3fd9773ba3502774dbc3f7
|
7
|
+
data.tar.gz: e974d509669fe47308c49ddbbdb8c86d54a7c035af8dc1eb84e3dd16aa8261fe7a09d8484766d2c4c88d07f8f9bcbd15339da60cb7a13b92b829e4d43de97a04
|
@@ -174,7 +174,6 @@ class Releaf::Builders::TableBuilder
|
|
174
174
|
I18n.l(value, format: format) unless value.nil?
|
175
175
|
end
|
176
176
|
|
177
|
-
|
178
177
|
def format_time_content(resource, column)
|
179
178
|
value = column_value(resource, column)
|
180
179
|
format = Releaf::Builders::Utilities::DateFields.date_or_time_default_format(:time)
|
@@ -7,10 +7,10 @@ module Releaf::ActionController::Exceptions
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def page_not_found
|
10
|
-
|
10
|
+
render "releaf/error_pages/page_not_found", status: :not_found, formats: :html
|
11
11
|
end
|
12
12
|
|
13
13
|
def access_denied
|
14
|
-
|
14
|
+
render "releaf/error_pages/forbidden", status: :forbidden, formats: :html
|
15
15
|
end
|
16
16
|
end
|
@@ -11,8 +11,6 @@ module Releaf::Responders
|
|
11
11
|
update: Releaf::Responders::AfterSaveResponder,
|
12
12
|
confirm_destroy: Releaf::Responders::ConfirmDestroyResponder,
|
13
13
|
destroy: Releaf::Responders::DestroyResponder,
|
14
|
-
access_denied: Releaf::Responders::AccessDeniedResponder,
|
15
|
-
page_not_found: Releaf::Responders::PageNotFoundResponder,
|
16
14
|
}
|
17
15
|
end
|
18
16
|
|
@@ -1,4 +1,32 @@
|
|
1
|
-
class Releaf::Settings <
|
1
|
+
class Releaf::Settings < ActiveRecord::Base
|
2
|
+
|
3
|
+
self.table_name = table_name_prefix + "settings"
|
4
|
+
|
5
|
+
class SettingNotFound < RuntimeError; end
|
6
|
+
|
7
|
+
belongs_to :thing, polymorphic: true, optional: true
|
8
|
+
|
9
|
+
# get the value field, YAML decoded
|
10
|
+
def value
|
11
|
+
YAML.load(self[:value], permitted_classes: [DateTime, Time, Date]) if self[:value].present?
|
12
|
+
end
|
13
|
+
|
14
|
+
# set the value field, YAML encoded
|
15
|
+
def value=(new_value)
|
16
|
+
self[:value] = new_value.to_yaml
|
17
|
+
end
|
18
|
+
|
19
|
+
def rewrite_cache
|
20
|
+
Rails.cache.write(cache_key, value)
|
21
|
+
end
|
22
|
+
|
23
|
+
def expire_cache
|
24
|
+
Rails.cache.delete(cache_key)
|
25
|
+
end
|
26
|
+
|
27
|
+
def cache_key
|
28
|
+
self.class.cache_key(var, thing)
|
29
|
+
end
|
2
30
|
|
3
31
|
scope :registered, -> { where(var: registered_keys, thing_type: nil, thing_id: nil).order(:var) }
|
4
32
|
|
@@ -36,4 +64,129 @@ class Releaf::Settings < RailsSettings::Base
|
|
36
64
|
def self.supported_types
|
37
65
|
[:boolean, :date, :time, :datetime, :integer, :float, :decimal, :email, :text, :textarea, :richtext]
|
38
66
|
end
|
67
|
+
|
68
|
+
class << self
|
69
|
+
def cache_prefix(&block)
|
70
|
+
@cache_prefix = block
|
71
|
+
end
|
72
|
+
|
73
|
+
def cache_key(var_name, scope_object)
|
74
|
+
scope = ["rails_settings_cached"]
|
75
|
+
scope << @cache_prefix.call if @cache_prefix
|
76
|
+
scope << "#{scope_object.class.name}-#{scope_object.id}" if scope_object
|
77
|
+
scope << var_name.to_s
|
78
|
+
scope.join("/")
|
79
|
+
end
|
80
|
+
|
81
|
+
def [](key)
|
82
|
+
return super(key) unless rails_initialized?
|
83
|
+
val = Rails.cache.fetch(cache_key(key, @object)) do
|
84
|
+
super(key)
|
85
|
+
end
|
86
|
+
val
|
87
|
+
end
|
88
|
+
|
89
|
+
# set a setting value by [] notation
|
90
|
+
def []=(var_name, value)
|
91
|
+
super
|
92
|
+
Rails.cache.write(cache_key(var_name, @object), value)
|
93
|
+
value
|
94
|
+
end
|
95
|
+
|
96
|
+
# get or set a variable with the variable as the called method
|
97
|
+
# rubocop:disable Style/MethodMissing
|
98
|
+
def method_missing(method, *args)
|
99
|
+
method_name = method.to_s
|
100
|
+
super(method, *args)
|
101
|
+
rescue NoMethodError
|
102
|
+
# set a value for a variable
|
103
|
+
if method_name[-1] == "="
|
104
|
+
var_name = method_name.sub("=", "")
|
105
|
+
value = args.first
|
106
|
+
self[var_name] = value
|
107
|
+
else
|
108
|
+
# retrieve a value
|
109
|
+
self[method_name]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# destroy the specified settings record
|
114
|
+
def destroy(var_name)
|
115
|
+
var_name = var_name.to_s
|
116
|
+
obj = object(var_name)
|
117
|
+
raise SettingNotFound, "Setting variable \"#{var_name}\" not found" if obj.nil?
|
118
|
+
|
119
|
+
obj.destroy
|
120
|
+
true
|
121
|
+
end
|
122
|
+
|
123
|
+
# retrieve all settings as a hash (optionally starting with a given namespace)
|
124
|
+
def get_all(starting_with = nil)
|
125
|
+
vars = thing_scoped.select("var, value")
|
126
|
+
vars = vars.where("var LIKE '#{starting_with}%'") if starting_with
|
127
|
+
result = {}
|
128
|
+
vars.each { |record| result[record.var] = record.value }
|
129
|
+
result.reverse_merge!(default_settings(starting_with))
|
130
|
+
result.with_indifferent_access
|
131
|
+
end
|
132
|
+
|
133
|
+
def where(sql = nil)
|
134
|
+
vars = thing_scoped.where(sql) if sql
|
135
|
+
vars
|
136
|
+
end
|
137
|
+
|
138
|
+
# get a setting value by [] notation
|
139
|
+
def [](var_name)
|
140
|
+
val = object(var_name)
|
141
|
+
return val.value if val
|
142
|
+
end
|
143
|
+
|
144
|
+
# set a setting value by [] notation
|
145
|
+
def []=(var_name, value)
|
146
|
+
var_name = var_name.to_s
|
147
|
+
|
148
|
+
record = object(var_name) || thing_scoped.new(var: var_name)
|
149
|
+
record.value = value
|
150
|
+
record.save!
|
151
|
+
|
152
|
+
value
|
153
|
+
end
|
154
|
+
|
155
|
+
def merge!(var_name, hash_value)
|
156
|
+
raise ArgumentError unless hash_value.is_a?(Hash)
|
157
|
+
|
158
|
+
old_value = self[var_name] || {}
|
159
|
+
raise TypeError, "Existing value is not a hash, can't merge!" unless old_value.is_a?(Hash)
|
160
|
+
|
161
|
+
new_value = old_value.merge(hash_value)
|
162
|
+
self[var_name] = new_value if new_value != old_value
|
163
|
+
|
164
|
+
new_value
|
165
|
+
end
|
166
|
+
|
167
|
+
def object(var_name)
|
168
|
+
return nil unless table_exists?
|
169
|
+
thing_scoped.where(var: var_name.to_s).first
|
170
|
+
end
|
171
|
+
|
172
|
+
def thing_scoped
|
173
|
+
unscoped.where("thing_type is NULL and thing_id is NULL")
|
174
|
+
end
|
175
|
+
|
176
|
+
def source(filename)
|
177
|
+
Default.source(filename)
|
178
|
+
end
|
179
|
+
|
180
|
+
def rails_initialized?
|
181
|
+
Rails.application && Rails.application.initialized?
|
182
|
+
end
|
183
|
+
|
184
|
+
private
|
185
|
+
|
186
|
+
def default_settings(starting_with = nil)
|
187
|
+
return {} unless Default.enabled?
|
188
|
+
return Default.instance if starting_with.nil?
|
189
|
+
Default.instance.select { |key, _| key.to_s.start_with?(starting_with) }
|
190
|
+
end
|
191
|
+
end
|
39
192
|
end
|
File without changes
|
@@ -1,8 +1,16 @@
|
|
1
1
|
module Releaf::Root
|
2
2
|
class SettingsManager
|
3
|
+
CAST_MAP = {
|
4
|
+
"false" => false,
|
5
|
+
"true" => true,
|
6
|
+
}
|
3
7
|
|
4
8
|
def self.read(controller:, key:)
|
5
|
-
controller.send(:cookies)[key]
|
9
|
+
value = controller.send(:cookies)[key]
|
10
|
+
|
11
|
+
return CAST_MAP[value] if CAST_MAP.key? value
|
12
|
+
|
13
|
+
value
|
6
14
|
end
|
7
15
|
|
8
16
|
def self.write(controller:, key:, value:)
|
data/lib/releaf-core.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: releaf-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CubeSystems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -179,33 +179,33 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '1.4'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: net-smtp
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
187
|
+
version: '0.3'
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
194
|
+
version: '0.3'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: dragonfly
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: '0
|
201
|
+
version: '1.0'
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version: '0
|
208
|
+
version: '1.0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: ckeditor_rails
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,14 +254,14 @@ dependencies:
|
|
254
254
|
requirements:
|
255
255
|
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version: '4.
|
257
|
+
version: '4.0'
|
258
258
|
type: :runtime
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: '4.
|
264
|
+
version: '4.0'
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: globalize
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -801,12 +801,9 @@ files:
|
|
801
801
|
- app/lib/releaf/resource_table_fields.rb
|
802
802
|
- app/lib/releaf/resource_utilities.rb
|
803
803
|
- app/lib/releaf/responders.rb
|
804
|
-
- app/lib/releaf/responders/access_denied_responder.rb
|
805
804
|
- app/lib/releaf/responders/after_save_responder.rb
|
806
805
|
- app/lib/releaf/responders/confirm_destroy_responder.rb
|
807
806
|
- app/lib/releaf/responders/destroy_responder.rb
|
808
|
-
- app/lib/releaf/responders/error_responder.rb
|
809
|
-
- app/lib/releaf/responders/page_not_found_responder.rb
|
810
807
|
- app/lib/releaf/search.rb
|
811
808
|
- app/lib/releaf/settings/normalize_value.rb
|
812
809
|
- app/lib/releaf/settings/register.rb
|
@@ -823,7 +820,7 @@ files:
|
|
823
820
|
- app/views/releaf/action/show.ruby
|
824
821
|
- app/views/releaf/action/toolbox.ruby
|
825
822
|
- app/views/releaf/error_pages/_error.html.haml
|
826
|
-
- app/views/releaf/error_pages/
|
823
|
+
- app/views/releaf/error_pages/forbidden.html.haml
|
827
824
|
- app/views/releaf/error_pages/page_not_found.html.haml
|
828
825
|
- lib/generators/dummy/install_generator.rb
|
829
826
|
- lib/generators/dummy/templates/assets/config/manifest.js
|
@@ -883,6 +880,7 @@ files:
|
|
883
880
|
- lib/generators/dummy/templates/views/layouts/application.html.haml
|
884
881
|
- lib/generators/dummy/templates/views/text_pages/show.haml
|
885
882
|
- lib/generators/releaf/install_generator.rb
|
883
|
+
- lib/generators/releaf/templates/config/app.yml
|
886
884
|
- lib/generators/releaf/templates/initializers/haml.rb
|
887
885
|
- lib/generators/releaf/templates/initializers/releaf.rb
|
888
886
|
- lib/generators/releaf/templates/migrations/create_releaf_nodes.rb
|
@@ -931,7 +929,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
931
929
|
- !ruby/object:Gem::Version
|
932
930
|
version: '0'
|
933
931
|
requirements: []
|
934
|
-
rubygems_version: 3.
|
932
|
+
rubygems_version: 3.3.7
|
935
933
|
signing_key:
|
936
934
|
specification_version: 4
|
937
935
|
summary: core gem for releaf
|