card 1.20.0 → 1.20.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/card.gemspec +1 -1
- data/lib/card.rb +7 -3
- data/lib/card/act_manager/stage_director.rb +22 -10
- data/lib/card/cache/persistent.rb +15 -9
- data/lib/card/format/nest.rb +12 -5
- data/lib/card/format/nest/fetch.rb +2 -1
- data/lib/card/format/render.rb +5 -2
- data/lib/card/set/event.rb +7 -1
- data/lib/card/subcards.rb +3 -3
- data/lib/card/view/cache.rb +1 -1
- data/lib/card/view/fetch.rb +17 -5
- data/lib/card/view/options.rb +52 -26
- data/lib/cardio.rb +2 -1
- data/mod/account/spec/set/right/account_spec.rb +17 -3
- data/mod/admin/set/self/admin.rb +0 -2
- data/mod/admin/spec/set/self/admin_spec.rb +14 -11
- data/mod/bootstrap/set/all/bootstrap/helper.rb +27 -29
- data/mod/carrierwave/set/type/file.rb +1 -1
- data/mod/carrierwave/set/type/image.rb +18 -6
- data/mod/core/set/all/collection.rb +33 -7
- data/mod/core/set/all/fetch.rb +16 -3
- data/mod/core/set/all/permissions.rb +6 -12
- data/mod/core/set/all/trash.rb +3 -1
- data/mod/core/spec/set/all/collection_spec.rb +9 -8
- data/mod/email/set/all/notify.rb +27 -17
- data/mod/email/set/right/follow.rb +49 -36
- data/mod/email/set/type/email_template.rb +25 -69
- data/mod/email/set/type/email_template/email_config.rb +63 -0
- data/mod/email/set/type_plus_right/user/follow.rb +3 -3
- data/mod/machines/lib/stylesheets/style_cards.scss +292 -0
- data/mod/pointer/set/abstract/01_pointer.rb +8 -8
- data/mod/pointer/set/abstract/01_pointer/edit.rb +6 -2
- data/mod/prosemirror_editor/lib/javascript/script_prosemirror.js +12283 -11605
- data/mod/prosemirror_editor/lib/javascript/script_prosemirror_config.js.coffee +1 -1
- data/mod/standard/set/abstract/01_search_params.rb +1 -1
- data/mod/standard/set/abstract/search/paging.rb +4 -4
- data/mod/standard/set/all/comment.rb +67 -47
- data/mod/standard/set/all/links.rb +2 -2
- data/mod/standard/set/all/rich_html/content.rb +1 -1
- data/mod/standard/set/all/rich_html/editing.rb +3 -2
- data/mod/standard/set/all/rich_html/form.rb +21 -12
- data/mod/standard/set/all/rich_html/header.rb +9 -0
- data/mod/standard/set/all/rich_html/menu.rb +16 -12
- data/mod/standard/set/all/rich_html/toolbar.rb +140 -130
- data/mod/standard/set/all/rich_html/wrapper.rb +11 -1
- data/mod/standard/set/rstar/rules_editor.rb +2 -34
- data/mod/standard/set/self/search.rb +1 -1
- data/mod/standard/set/type/set.rb +4 -4
- data/mod/standard/spec/set/type/email_template/email_config_spec.rb +218 -0
- data/mod/standard/spec/set/type/email_template_spec.rb +3 -185
- data/spec/lib/card/cache_spec.rb +0 -1
- data/spec/lib/card/format/render_spec.rb +19 -0
- data/spec/lib/card/stage_director_spec.rb +1 -1
- data/tmpsets/set/mod001-core/all/actify.rb +5 -6
- data/tmpsets/set/mod001-core/all/fetch.rb +14 -12
- data/tmpsets/set/mod001-core/all/name.rb +1 -1
- data/tmpsets/set/mod001-core/all/permissions.rb +12 -22
- data/tmpsets/set/mod001-core/all/tracked_attributes.rb +76 -0
- data/tmpsets/set/mod001-core/all/utils.rb +40 -3
- data/tmpsets/set/mod002-history/all/history.rb +1 -2
- data/tmpsets/set/mod008-solid_cache/abstract/solid_cache.rb +1 -1
- data/tmpsets/set/mod013-carrierwave/abstract/attachment.rb +282 -0
- data/tmpsets/set/mod013-carrierwave/type/file.rb +155 -0
- data/tmpsets/set/mod013-carrierwave/type/image.rb +96 -0
- data/tmpsets/set/mod014-admin/self/admin.rb +113 -0
- data/tmpsets/set/mod014-admin/self/admin_info.rb +110 -0
- data/tmpsets/set/mod014-admin/self/version.rb +15 -0
- data/tmpsets/set/mod015-developer/all/event_viz.rb +59 -0
- data/tmpsets/set/mod015-developer/all/view_viz.rb +30 -0
- data/tmpsets/set/mod015-developer/right/debug.rb +96 -0
- metadata +15 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c534f962f8efbd355dba40eb9c56d372a404ad31
|
4
|
+
data.tar.gz: 96581a6169cfb59c688226d2dec3ae3e649e4a78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22480806d1d43f92b17003808caa026c0bd7061b210669cd5d761ae319b740e9e227685e08e9eb4b4abe7ec303db26ce49ed743a7181f3393abe24f2afdc1b66
|
7
|
+
data.tar.gz: ebc1391547c721118de7c1198936e5f27ab094f5e8285a7120a98d980298546eec0de17f2d2dafe829b6fc79653fdb7244e0df8e95b95df7543f9ee5246086b2
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.20.
|
1
|
+
1.20.1
|
data/card.gemspec
CHANGED
@@ -47,7 +47,7 @@ Gem::Specification.new do |s|
|
|
47
47
|
["sass", "~> 3.2"],
|
48
48
|
["coffee-script", "~> 2.2"],
|
49
49
|
["uglifier", "~> 3.0"],
|
50
|
-
["nokogiri", "~> 1.6.8"],
|
50
|
+
["nokogiri", "~> 1.6.8"], # 1.7 needs ruby 2.1
|
51
51
|
["haml", "~> 4.0"],
|
52
52
|
["kaminari", "~> 0.16"],
|
53
53
|
["bootstrap-kaminari-views", "~> 0"],
|
data/lib/card.rb
CHANGED
@@ -50,8 +50,8 @@ class Card < ActiveRecord::Base
|
|
50
50
|
serializable_attr_accessor(
|
51
51
|
:action, :supercard, :superleft,
|
52
52
|
:current_act, :current_action,
|
53
|
-
:comment,
|
54
|
-
:update_referers,
|
53
|
+
:comment, # obviated soon
|
54
|
+
:update_referers, # wrong mechanism for this
|
55
55
|
:update_all_users, # if the above is wrong then this one too
|
56
56
|
:silent_change, # and this probably too
|
57
57
|
:remove_rule_stash,
|
@@ -66,12 +66,16 @@ class Card < ActiveRecord::Base
|
|
66
66
|
|
67
67
|
# VALIDATION PHASE
|
68
68
|
:initialize_stage, :prepare_to_validate_stage, :validate_stage,
|
69
|
+
:initialize_final_stage, :prepare_to_validate_final_stage,
|
70
|
+
:validate_final_stage,
|
69
71
|
|
70
72
|
# STORAGE PHASE
|
71
73
|
:prepare_to_store_stage, :store_stage, :finalize_stage,
|
74
|
+
:prepare_to_store_final_stage, :store_final_stage, :finalize_final_stage,
|
72
75
|
|
73
76
|
# INTEGRATION PHASE
|
74
|
-
:integrate_stage, :integrate_with_delay_stage
|
77
|
+
:integrate_stage, :integrate_with_delay_stage,
|
78
|
+
:integrate_final_stage, :integrate_with_delay_final_stage
|
75
79
|
)
|
76
80
|
|
77
81
|
# Validation and integration phase are only called for the act card
|
@@ -202,12 +202,22 @@ class Card
|
|
202
202
|
def run_single_stage stage, &block
|
203
203
|
return true unless valid_next_stage? stage
|
204
204
|
# puts "#{@card.name}: #{stage} stage".red
|
205
|
+
prepare_stage_run stage
|
206
|
+
execute_stage_run stage, &block
|
207
|
+
rescue => e
|
208
|
+
@card.clean_after_stage_fail
|
209
|
+
raise e
|
210
|
+
end
|
205
211
|
|
212
|
+
def prepare_stage_run stage
|
206
213
|
@stage = stage_index stage
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
214
|
+
return unless stage == :initialize
|
215
|
+
|
216
|
+
@running ||= true
|
217
|
+
prepare_for_phases
|
218
|
+
end
|
219
|
+
|
220
|
+
def execute_stage_run stage, &block
|
211
221
|
# in the store stage it can be necessary that
|
212
222
|
# other subcards must be saved before we save this card
|
213
223
|
if stage == :store
|
@@ -215,24 +225,26 @@ class Card
|
|
215
225
|
else
|
216
226
|
run_stage_callbacks stage
|
217
227
|
run_subdirector_stages stage
|
228
|
+
run_final_stage_callbacks stage
|
218
229
|
end
|
219
|
-
rescue => e
|
220
|
-
@card.clean_after_stage_fail
|
221
|
-
raise e
|
222
230
|
end
|
223
231
|
|
224
|
-
def run_stage_callbacks stage
|
232
|
+
def run_stage_callbacks stage, callback_postfix=""
|
225
233
|
Rails.logger.debug "#{stage}: #{@card.name}"
|
226
234
|
# we use abort :success in the :store stage for :save_draft
|
227
235
|
if stage_index(stage) <= stage_index(:store) && !main?
|
228
236
|
@card.abortable do
|
229
|
-
@card.run_callbacks :"#{stage}_stage"
|
237
|
+
@card.run_callbacks :"#{stage}#{callback_postfix}_stage"
|
230
238
|
end
|
231
239
|
else
|
232
|
-
@card.run_callbacks :"#{stage}_stage"
|
240
|
+
@card.run_callbacks :"#{stage}#{callback_postfix}_stage"
|
233
241
|
end
|
234
242
|
end
|
235
243
|
|
244
|
+
def run_final_stage_callbacks stage
|
245
|
+
run_stage_callbacks stage, "_final"
|
246
|
+
end
|
247
|
+
|
236
248
|
def run_subdirector_stages stage
|
237
249
|
@subdirectors.each do |subdir|
|
238
250
|
subdir.catch_up_to_stage stage
|
@@ -63,7 +63,7 @@ class Card
|
|
63
63
|
# the cache. Note that Cardio.cache is a simple Rails::Cache, not
|
64
64
|
# a Card::Cache object.
|
65
65
|
def stamp
|
66
|
-
@stamp ||= Cardio.cache.fetch
|
66
|
+
@stamp ||= Cardio.cache.fetch(stamp_key) { new_stamp }
|
67
67
|
end
|
68
68
|
|
69
69
|
# key for looking up the current stamp
|
@@ -73,7 +73,7 @@ class Card
|
|
73
73
|
|
74
74
|
# stamp generator
|
75
75
|
def new_stamp
|
76
|
-
Time.now.to_i.to_s 32
|
76
|
+
Time.now.to_i.to_s(32) + rand(9999).to_s(32)
|
77
77
|
end
|
78
78
|
|
79
79
|
# prefix added to cache key to create a system-wide unique key
|
@@ -96,17 +96,23 @@ class Card
|
|
96
96
|
# @param key [String]
|
97
97
|
# @param attribute [String, Symbol]
|
98
98
|
def write_attribute key, attribute, value
|
99
|
-
|
99
|
+
return value unless @store
|
100
|
+
if (object = deep_read key)
|
100
101
|
object.instance_variable_set "@#{attribute}", value
|
101
102
|
write key, object
|
102
103
|
end
|
103
104
|
value
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
105
|
+
end
|
106
|
+
|
107
|
+
def deep_read key
|
108
|
+
local_cache = @store.send :local_cache
|
109
|
+
local_cache.clear if local_cache
|
110
|
+
read key
|
111
|
+
end
|
112
|
+
|
113
|
+
def read_attribute key, attribute
|
114
|
+
object = deep_read key
|
115
|
+
object.instance_variable_get "@#{attribute}"
|
110
116
|
end
|
111
117
|
|
112
118
|
def write key, value
|
data/lib/card/format/nest.rb
CHANGED
@@ -50,20 +50,27 @@ class Card
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def nest_subformat nested_card, opts, view
|
53
|
-
return self if reuse_format? opts, view
|
53
|
+
return self if reuse_format? opts[:nest_name], view
|
54
54
|
sub = subformat nested_card
|
55
55
|
sub.main! if opts[:main]
|
56
56
|
sub
|
57
57
|
end
|
58
58
|
|
59
|
-
def reuse_format?
|
60
|
-
|
61
|
-
|
59
|
+
def reuse_format? nest_name, view
|
60
|
+
nest_name =~ /^_(self)?$/ &&
|
61
|
+
card.context_card == card &&
|
62
|
+
!nest_recursion_risk?(view)
|
63
|
+
end
|
64
|
+
|
65
|
+
def nest_recursion_risk? view
|
66
|
+
content_view?(view) && voo.structure
|
62
67
|
end
|
63
68
|
|
64
69
|
def content_view? view
|
65
70
|
# TODO: this should be specified in view definition
|
66
|
-
[
|
71
|
+
[
|
72
|
+
:core, :content, :titled, :open, :closed, :open_content
|
73
|
+
].member? view.to_sym
|
67
74
|
end
|
68
75
|
|
69
76
|
# Main difference compared to #nest is that you can use
|
@@ -7,6 +7,7 @@ class Card
|
|
7
7
|
case cardish
|
8
8
|
when Card then cardish
|
9
9
|
when Symbol, Integer then Card.fetch cardish
|
10
|
+
when "_", "_self" then card.context_card
|
10
11
|
else
|
11
12
|
opts[:nest_name] = cardish.to_s
|
12
13
|
Card.fetch cardish, new: nest_new_args(opts)
|
@@ -19,7 +20,7 @@ class Card
|
|
19
20
|
nest_name = nest_opts[:nest_name].to_s
|
20
21
|
new_args = { name: nest_name, type: nest_opts[:type] }
|
21
22
|
|
22
|
-
new_args[:supercard] = card unless nest_name.strip.blank?
|
23
|
+
new_args[:supercard] = card.context_card unless nest_name.strip.blank?
|
23
24
|
# special case. gets absolutized incorrectly. fix in smartname?
|
24
25
|
|
25
26
|
nest_new_main_args new_args if nest_name =~ /^_main\+/
|
data/lib/card/format/render.rb
CHANGED
@@ -49,8 +49,11 @@ class Card
|
|
49
49
|
|
50
50
|
# setting (:alway, :never, :nested) designated in view definition
|
51
51
|
def view_cache_setting view
|
52
|
-
|
53
|
-
respond_to?(
|
52
|
+
method = self.class.view_cache_setting_method view
|
53
|
+
coded_setting = respond_to?(method) ? send(method) : :standard
|
54
|
+
return :never if coded_setting == :never
|
55
|
+
# seems unwise to override a hard-coded "never"
|
56
|
+
(voo && voo.cache) || coded_setting
|
54
57
|
end
|
55
58
|
|
56
59
|
def stub_render cached_content
|
data/lib/card/set/event.rb
CHANGED
@@ -78,11 +78,17 @@ class Card
|
|
78
78
|
if opts[:after] || opts[:before]
|
79
79
|
# ignore :in options
|
80
80
|
elsif opts[:in]
|
81
|
-
opts[:after] =
|
81
|
+
opts[:after] =
|
82
|
+
callback_name opts.delete(:in), opts.delete(:after_subcards)
|
82
83
|
end
|
83
84
|
opts[:on] = [:create, :update] if opts[:on] == :save
|
84
85
|
end
|
85
86
|
|
87
|
+
def callback_name stage, after_subcards=false
|
88
|
+
name = after_subcards ? "#{stage}_final_stage" : "#{stage}_stage"
|
89
|
+
name.to_sym
|
90
|
+
end
|
91
|
+
|
86
92
|
def define_event_method event, call_method
|
87
93
|
class_eval do
|
88
94
|
define_method event do
|
data/lib/card/subcards.rb
CHANGED
@@ -41,8 +41,6 @@ class Card
|
|
41
41
|
case name_or_card_or_attr
|
42
42
|
when Card
|
43
43
|
new_by_card name_or_card_or_attr, attr_or_opts
|
44
|
-
when Symbol, String
|
45
|
-
new_by_attributes name_or_card_or_attr, attr_or_opts
|
46
44
|
when Hash
|
47
45
|
args = name_or_card_or_attr
|
48
46
|
if args[:name]
|
@@ -50,6 +48,8 @@ class Card
|
|
50
48
|
else
|
51
49
|
multi_add args
|
52
50
|
end
|
51
|
+
else
|
52
|
+
new_by_attributes name_or_card_or_attr, attr_or_opts
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -251,7 +251,7 @@ class Card
|
|
251
251
|
(absolute_name.parts.size - @context_card.cardname.parts.size) > 2
|
252
252
|
left_card = new_by_attributes absolute_name.left
|
253
253
|
new_by_card left_card, transact_in_stage: attributes[:transact_in_stage]
|
254
|
-
left_card.new_by_attributes absolute_name, attributes
|
254
|
+
left_card.subcards.new_by_attributes absolute_name, attributes
|
255
255
|
else
|
256
256
|
subcard_args = extract_subcard_args! attributes
|
257
257
|
t_i_s = attributes.delete(:transact_in_stage)
|
data/lib/card/view/cache.rb
CHANGED
@@ -20,7 +20,7 @@ class Card
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# answers: should this cache fetch depend on one already in progress?
|
23
|
-
# Note that
|
23
|
+
# Note that if you create a brand new format object (ie, not a subformat)
|
24
24
|
# midrender, (eg card.format...), it needs to be treated as unrelated to
|
25
25
|
# any caching in progress.
|
26
26
|
def caching?
|
data/lib/card/view/fetch.rb
CHANGED
@@ -11,10 +11,12 @@ class Card
|
|
11
11
|
# - creating a stub within another render
|
12
12
|
# (so that the stub may be rendered later)
|
13
13
|
def fetch &block
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
with_fetch_logging do |cache_level|
|
15
|
+
case cache_level
|
16
|
+
when :yield then yield
|
17
|
+
when :cache_yield then cache_fetch(&block)
|
18
|
+
when :stub then stub
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
@@ -27,11 +29,21 @@ class Card
|
|
27
29
|
# * *standard* (default) cache independently or dependently, but
|
28
30
|
# don't double cache
|
29
31
|
# * *never* don't ever cache this view
|
30
|
-
def
|
32
|
+
def determine_cache_level
|
31
33
|
return :yield unless Cardio.config.view_cache
|
32
34
|
send "#{caching? ? 'dependent' : 'independent'}_cache_level"
|
33
35
|
end
|
34
36
|
|
37
|
+
def with_fetch_logging
|
38
|
+
cache_level = determine_cache_level
|
39
|
+
logging = false # TODO: make configurable
|
40
|
+
if logging
|
41
|
+
puts "FETCH_VIEW (#{card.name}##{requested_view})" \
|
42
|
+
"cache-level = #{cache_level}"
|
43
|
+
end
|
44
|
+
yield cache_level
|
45
|
+
end
|
46
|
+
|
35
47
|
# INDEPENDENT CACHING
|
36
48
|
# takes place on its own (not within another view being cached)
|
37
49
|
|
data/lib/card/view/options.rb
CHANGED
@@ -7,30 +7,31 @@ class Card
|
|
7
7
|
nest: [
|
8
8
|
:view, # view to render
|
9
9
|
:show, # render these views when optional
|
10
|
-
:hide, # do render these views when optional
|
10
|
+
:hide, # do not render these views when optional
|
11
11
|
:nest_name, # name as used in nest
|
12
12
|
:nest_syntax # full nest syntax
|
13
13
|
],
|
14
14
|
# note: show/hide can be single view (Symbol), list of views (Array),
|
15
15
|
# or comma separated views (String)
|
16
16
|
heir: [
|
17
|
-
:main,
|
18
|
-
:home_view,
|
19
|
-
:edit_structure
|
20
|
-
|
17
|
+
:main, # format object is page's "main" object (Boolean)
|
18
|
+
:home_view, # view for slot to return to when no view specified
|
19
|
+
:edit_structure # use a different structure for editing (Array)
|
21
20
|
],
|
22
21
|
both: [
|
23
|
-
:help,
|
24
|
-
:structure,
|
25
|
-
:title,
|
26
|
-
:variant,
|
27
|
-
#
|
28
|
-
:editor,
|
29
|
-
#
|
30
|
-
:type,
|
31
|
-
:size,
|
32
|
-
:params,
|
33
|
-
:items
|
22
|
+
:help, # cue text when editing
|
23
|
+
:structure, # overrides the content of the card
|
24
|
+
:title, # overrides the name of the card
|
25
|
+
:variant, # override the canonical version of the name with
|
26
|
+
# a different variant
|
27
|
+
:editor, # inline_nests makes a form within standard content
|
28
|
+
# (Symbol)
|
29
|
+
:type, # set the default type of new cards
|
30
|
+
:size, # set an image size
|
31
|
+
:params, # parameters for add button. deprecate?
|
32
|
+
:items, # options for items (Hash)
|
33
|
+
:cache # change view cache behaviour
|
34
|
+
# (Symbol<:always, :standard, :never>)
|
34
35
|
],
|
35
36
|
none: [
|
36
37
|
:skip_perms, # do not check permissions for this view (Boolean)
|
@@ -55,6 +56,24 @@ class Card
|
|
55
56
|
def heir_keys
|
56
57
|
@heir_keys ||= ::Set.new(keymap[:both]) + keymap[:heir]
|
57
58
|
end
|
59
|
+
|
60
|
+
def accessible_keys
|
61
|
+
heir_keys + [:nest_name, :nest_syntax] - [:items]
|
62
|
+
end
|
63
|
+
|
64
|
+
def define_getter option_key
|
65
|
+
define_method option_key do
|
66
|
+
norm_method = "normalize_#{option_key}"
|
67
|
+
value = live_options[option_key]
|
68
|
+
try(norm_method, value) || value
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def define_setter option_key
|
73
|
+
define_method "#{option_key}=" do |value|
|
74
|
+
live_options[option_key] = value
|
75
|
+
end
|
76
|
+
end
|
58
77
|
end
|
59
78
|
|
60
79
|
# There are two primary options hashes:
|
@@ -76,28 +95,35 @@ class Card
|
|
76
95
|
live_options[:items] ||= {}
|
77
96
|
end
|
78
97
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
value = live_options[option_key]
|
83
|
-
try(norm_method, value) || value
|
84
|
-
end
|
85
|
-
|
86
|
-
define_method "#{option_key}=" do |value|
|
87
|
-
live_options[option_key] = value
|
88
|
-
end
|
98
|
+
accessible_keys.each do |option_key|
|
99
|
+
define_getter option_key
|
100
|
+
define_setter option_key
|
89
101
|
end
|
90
102
|
|
91
103
|
def normalize_editor value
|
92
104
|
value && value.to_sym
|
93
105
|
end
|
94
106
|
|
107
|
+
def normalize_cache value
|
108
|
+
value && value.to_sym
|
109
|
+
end
|
110
|
+
|
95
111
|
# options to be used in data attributes of card slots (normalized options
|
96
112
|
# with standard keys)
|
97
113
|
def slot_options
|
98
114
|
normalized_options.select { |k, _v| Options.all_keys.include? k }
|
99
115
|
end
|
100
116
|
|
117
|
+
def closest_live_option key
|
118
|
+
if live_options.key? key
|
119
|
+
live_options[key]
|
120
|
+
else
|
121
|
+
(parent && parent.closest_live_option(key)) ||
|
122
|
+
(format.parent && format.parent.voo &&
|
123
|
+
format.parent.voo.closest_live_option(key))
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
101
127
|
private
|
102
128
|
|
103
129
|
# option normalization includes standardizing options into a hash with
|
data/lib/cardio.rb
CHANGED
@@ -47,6 +47,7 @@ module Cardio
|
|
47
47
|
acts_per_page: 10,
|
48
48
|
space_last_in_multispace: true,
|
49
49
|
closed_search_limit: 10,
|
50
|
+
paging_limit: 20,
|
50
51
|
|
51
52
|
non_createable_types: [%w(signup setting set)],
|
52
53
|
view_cache: false,
|
@@ -58,7 +59,7 @@ module Cardio
|
|
58
59
|
|
59
60
|
file_storage: :local,
|
60
61
|
file_buckets: {},
|
61
|
-
file_default_bucket:
|
62
|
+
file_default_bucket: nil
|
62
63
|
}
|
63
64
|
end
|
64
65
|
|