scaffolding_extensions 1.1.8 → 1.1.9
Sign up to get free protection for your applications and to get access to all the features.
@@ -48,9 +48,9 @@ module ScaffoldingExtensions
|
|
48
48
|
def scaffold_redirect(action, suffix, notice=nil, oid=nil)
|
49
49
|
action_suffix = "#{action}#{suffix}"
|
50
50
|
meth = "scaffold_#{action_suffix}_redirect"
|
51
|
-
return send(meth, notice) if respond_to?(meth)
|
51
|
+
return send(meth, notice) if respond_to?(meth, true)
|
52
52
|
meth = "scaffold_#{action}_redirect"
|
53
|
-
return send(meth, suffix, notice) if respond_to?(meth)
|
53
|
+
return send(meth, suffix, notice) if respond_to?(meth, true)
|
54
54
|
scaffold_flash[:notice] = notice if notice
|
55
55
|
scaffold_redirect_to(scaffold_url(action_suffix, oid ? {:id=>oid} : {}))
|
56
56
|
end
|
@@ -48,6 +48,8 @@ module ScaffoldingExtensions::MetaModel
|
|
48
48
|
# for fields of type text (iv: @scaffold_convert_text_to_string)
|
49
49
|
# - :table_classes: Set the default table classes for different scaffolded HTML tables
|
50
50
|
# (iv: @scaffold_table_classes)
|
51
|
+
# - :column_type_options: Override the default options for a given column type
|
52
|
+
# (iv: @scaffold_column_type_options)
|
51
53
|
# - :column_types: Override the default column type for a given attribute
|
52
54
|
# (iv: @scaffold_column_types)
|
53
55
|
# - :column_options: Override the default column options for a given attribute
|
@@ -71,6 +73,7 @@ module ScaffoldingExtensions::MetaModel
|
|
71
73
|
# autocompleter (iv: @scaffold_auto_complete_options)
|
72
74
|
SCAFFOLD_OPTIONS = {:text_to_string=>false,
|
73
75
|
:table_classes=>{:form=>'formtable', :list=>'sortable', :show=>'sortable'},
|
76
|
+
:column_type_options=>{},
|
74
77
|
:column_types=>{},
|
75
78
|
:column_options=>{},
|
76
79
|
:association_list_class=>''.freeze,
|
@@ -220,8 +223,10 @@ module ScaffoldingExtensions::MetaModel
|
|
220
223
|
# @scaffold_column_names, a hash with the column name as a symbol key and the human name
|
221
224
|
# string as the value.
|
222
225
|
def scaffold_column_name(column_name)
|
223
|
-
@scaffold_column_names ||=
|
224
|
-
@scaffold_column_names[column_name] ||= if
|
226
|
+
@scaffold_column_names ||= {}
|
227
|
+
@scaffold_column_names[column_name] ||= if n = SCAFFOLD_OPTIONS[:column_names][column_name]
|
228
|
+
n
|
229
|
+
elsif scaffold_association(column_name)
|
225
230
|
scaffold_associated_human_name(column_name)
|
226
231
|
else
|
227
232
|
column_name.to_s.humanize
|
@@ -232,8 +237,9 @@ module ScaffoldingExtensions::MetaModel
|
|
232
237
|
# @scaffold_column_options_hash, a hash with the column name as a symbol key and the html
|
233
238
|
# options hash as the value.
|
234
239
|
def scaffold_column_options(column_name)
|
235
|
-
@scaffold_column_options_hash ||=
|
236
|
-
@
|
240
|
+
@scaffold_column_options_hash ||= {}
|
241
|
+
@scaffold_column_options ||= {}
|
242
|
+
@scaffold_column_options[column_name] ||= scaffold_merge_hashes(@scaffold_column_options_hash[column_name], SCAFFOLD_OPTIONS[:column_options][column_name], scaffold_column_type_options(scaffold_column_type(column_name)))
|
237
243
|
end
|
238
244
|
|
239
245
|
# Returns the column type for the given scaffolded column name. Can be set via the instance
|
@@ -241,8 +247,8 @@ module ScaffoldingExtensions::MetaModel
|
|
241
247
|
# type symbol as a value. Associations have the :association type, and other types are looked
|
242
248
|
# up via columns_hash[column_name].type. If no type is provided, :string is used by default.
|
243
249
|
def scaffold_column_type(column_name)
|
244
|
-
@scaffold_column_types ||=
|
245
|
-
if type =
|
250
|
+
@scaffold_column_types ||= {}
|
251
|
+
@scaffold_column_types[column_name] ||= if type = SCAFFOLD_OPTIONS[:column_types][column_name]
|
246
252
|
type
|
247
253
|
elsif scaffold_association(column_name)
|
248
254
|
:association
|
@@ -253,6 +259,15 @@ module ScaffoldingExtensions::MetaModel
|
|
253
259
|
end
|
254
260
|
end
|
255
261
|
|
262
|
+
# The HTML options for a given column type, affecting all columns of that type.
|
263
|
+
# Can be set with the @scaffold_column_type_options instance variable, which should
|
264
|
+
# be a hash with the column type as a symbol key and the html options hash
|
265
|
+
# as the value.
|
266
|
+
def scaffold_column_type_options(type)
|
267
|
+
@scaffold_column_type_options ||= {}
|
268
|
+
@scaffold_column_type_options[type] ||= SCAFFOLD_OPTIONS[:column_type_options][type] || {}
|
269
|
+
end
|
270
|
+
|
256
271
|
# Returns the foreign key for the field if it is an association, or the field
|
257
272
|
# as a string if it is not.
|
258
273
|
def scaffold_field_id(field)
|
@@ -445,8 +460,8 @@ module ScaffoldingExtensions::MetaModel
|
|
445
460
|
# the instance variable @scaffold_table_classes, a hash with the type as the symbol key
|
446
461
|
# and the value as the html class string.
|
447
462
|
def scaffold_table_class(type)
|
448
|
-
@scaffold_table_classes ||=
|
449
|
-
@scaffold_table_classes[type]
|
463
|
+
@scaffold_table_classes ||= {}
|
464
|
+
@scaffold_table_classes[type] ||= SCAFFOLD_OPTIONS[:table_classes][type]
|
450
465
|
end
|
451
466
|
|
452
467
|
# Run the block inside a database transaction
|
@@ -548,6 +563,14 @@ module ScaffoldingExtensions::MetaModel
|
|
548
563
|
scaffold_associated_class(association).scaffold_include(:association)
|
549
564
|
end
|
550
565
|
|
566
|
+
# Merge all given hashes in order of preference, so earlier hashes are considered more important.
|
567
|
+
# A nil value is treated the same as the empty hash.
|
568
|
+
def scaffold_merge_hashes(*hashes)
|
569
|
+
h = {}
|
570
|
+
hashes.reverse.each{|hash| h.merge!(hash) if hash}
|
571
|
+
h
|
572
|
+
end
|
573
|
+
|
551
574
|
# Condition to ensure field is not NULL
|
552
575
|
def scaffold_notnull_condition(field)
|
553
576
|
["#{scaffold_table_name}.#{field} IS NOT NULL"]
|
@@ -15,7 +15,7 @@ module ScaffoldingExtensions
|
|
15
15
|
def scaffold_method_iv_override(m, action)
|
16
16
|
return nil unless action
|
17
17
|
meth = "scaffold_#{action}_#{m}"
|
18
|
-
if respond_to?(meth)
|
18
|
+
if respond_to?(meth, true)
|
19
19
|
Proc.new{send(meth)}
|
20
20
|
elsif instance_variables.include?(meth = "@#{meth}")
|
21
21
|
Proc.new{instance_variable_get(meth)}
|
@@ -27,7 +27,7 @@ module ScaffoldingExtensions
|
|
27
27
|
def scaffold_method_override(m, action, *args)
|
28
28
|
return nil unless action
|
29
29
|
meth = "scaffold_#{action}_#{m}"
|
30
|
-
Proc.new{send(meth, *args)} if respond_to?(meth)
|
30
|
+
Proc.new{send(meth, *args)} if respond_to?(meth, true)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -24,8 +24,8 @@ class Test::Unit::TestCase
|
|
24
24
|
# Test that getting all display actions for the scaffold returns success
|
25
25
|
def scaffold_test(model, options = {})
|
26
26
|
klass = @controller.class
|
27
|
-
methods = options[:only] ? klass.scaffold_normalize_options
|
28
|
-
methods -= klass.scaffold_normalize_options
|
27
|
+
methods = options[:only] ? klass.send(:scaffold_normalize_options, options[:only]) : ScaffoldingExtensions::DEFAULT_METHODS
|
28
|
+
methods -= klass.send(:scaffold_normalize_options, options[:except]) if options[:except]
|
29
29
|
methods.each do |action|
|
30
30
|
assert_nothing_raised("Error requesting scaffolded action #{action} for model #{model.name}") do
|
31
31
|
get "#{action}_#{model.scaffold_name}", nil, scaffold_session
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scaffolding_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-08-08 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|