record_collection 0.5.3 → 0.6.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/assets/javascripts/record_collection/optionals.js.coffee +10 -3
- data/lib/generators/collection_scaffold/templates/controller.rb +15 -14
- data/lib/record_collection/base.rb +5 -0
- data/lib/record_collection/rails/form_options_helper.rb +10 -4
- data/lib/record_collection/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ee07c5d52e0e54488e931828ea1e6fa5fcfcf11
|
4
|
+
data.tar.gz: 287f65ae03ea2093b1f8bfa8fecde2d5acb3d9c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af0f6e48b22e6456ceb5b74f3c8989df45e0cf8b19f67650aea3bcd2ed8d99aa15b9a7cbbaccafe7ba47ac1fd3be00c99937e138511ca0550e8d14e0e3293de1
|
7
|
+
data.tar.gz: 302c8acc483678b28be818e928d6f5ad193c8a71f36ce1c3c94fb270f83bb90916701aed6c7f2ad8a75dc185bd17d7cbf13544ffd404f68f434da3084f7ab8ea
|
@@ -16,12 +16,13 @@ class Optionals
|
|
16
16
|
check_box = container.find('input')
|
17
17
|
initially_checked = check_box.is(':checked')
|
18
18
|
field_name = check_box.attr('name')
|
19
|
+
one = container.data('one')
|
19
20
|
|
20
21
|
label_text = container.find('label').text()
|
21
22
|
|
22
23
|
value_field = $('<input>').attr('type', 'hidden').val(0)
|
23
24
|
# Set name based on activated state
|
24
|
-
if container.hasClass('active')
|
25
|
+
if one or container.hasClass('active')
|
25
26
|
value_field.attr 'name', field_name
|
26
27
|
else
|
27
28
|
value_field.attr 'name', "disabled_#{field_name}"
|
@@ -29,8 +30,6 @@ class Optionals
|
|
29
30
|
# Clear the container and initialize to inactive
|
30
31
|
container.html('')
|
31
32
|
|
32
|
-
label = $('<span></span>').addClass('optional-boolean-label').text label_text
|
33
|
-
|
34
33
|
activator_toggle = $('<span></span>').addClass('optional-boolean-activator-toggle').click ->
|
35
34
|
container.toggleClass('active').toggleClass('inactive')
|
36
35
|
if container.hasClass('active')
|
@@ -38,6 +37,11 @@ class Optionals
|
|
38
37
|
else
|
39
38
|
value_field.attr 'name', "disabled_#{value_field.attr('name')}"
|
40
39
|
|
40
|
+
label = $('<span></span>').addClass('optional-boolean-label').text label_text
|
41
|
+
label.click ->
|
42
|
+
if container.hasClass('inactive')
|
43
|
+
activator_toggle.click()
|
44
|
+
|
41
45
|
value_toggle = $('<span></span>').addClass('optional-boolean-toggle').click ->
|
42
46
|
return if container.hasClass('inactive')
|
43
47
|
if $(@).hasClass('active')
|
@@ -57,12 +61,14 @@ class Optionals
|
|
57
61
|
container.append label
|
58
62
|
container.append value_toggle
|
59
63
|
container.append value_field
|
64
|
+
activator_toggle.hide() if one
|
60
65
|
|
61
66
|
prependActivator: (container)->
|
62
67
|
value_field = container.find('select,input')
|
63
68
|
# INITIAL STATE IS DISABLED, Activation by triggering click if needed
|
64
69
|
value_field.attr 'name', "disabled_#{value_field.attr('name')}"
|
65
70
|
container.addClass('inactive')
|
71
|
+
one = container.data('one')
|
66
72
|
|
67
73
|
label_text = container.find('label').text()
|
68
74
|
|
@@ -97,6 +103,7 @@ class Optionals
|
|
97
103
|
container.find('label').remove()
|
98
104
|
|
99
105
|
activator_toggle.click() if container.hasClass('active')
|
106
|
+
activator_toggle.hide() if one
|
100
107
|
|
101
108
|
root = @
|
102
109
|
root.Optionals = new Optionals()
|
@@ -47,7 +47,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
47
47
|
# DELETE <%= route_url %>/1
|
48
48
|
def destroy
|
49
49
|
@<%= orm_instance.destroy %>
|
50
|
-
redirect_to <%= index_helper %>
|
50
|
+
redirect_to <%= index_helper %>_path, notice: t('action.destroy.successful', model: <%= class_name %>.model_name.human)
|
51
51
|
end
|
52
52
|
|
53
53
|
# GET <%= route_url %>/collection_edit
|
@@ -59,25 +59,26 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
59
59
|
def collection_update
|
60
60
|
@collection = <%= class_name %>::Collection.find(params[:ids])
|
61
61
|
if @collection.update params[:collection]
|
62
|
-
redirect_to <%= index_helper %>
|
62
|
+
redirect_to <%= index_helper %>_path, notice: t('action.collection_update.successful', model: <%= class_name %>.model_name.human)
|
63
63
|
else
|
64
64
|
render :collection_edit
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
private
|
69
|
-
# Use callbacks to share common setup or constraints between actions.
|
70
|
-
def set_<%= singular_table_name %>
|
71
|
-
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
|
72
|
-
end
|
73
69
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
70
|
+
# Use callbacks to share common setup or constraints between actions.
|
71
|
+
def set_<%= singular_table_name %>
|
72
|
+
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
|
73
|
+
end
|
74
|
+
|
75
|
+
# Only allow a trusted parameter "white list" through.
|
76
|
+
def <%= "#{singular_table_name}_params" %>
|
77
|
+
<%- if attributes_names.empty? -%>
|
78
|
+
params[:<%= singular_table_name %>]
|
79
|
+
<%- else -%>
|
80
|
+
params.require(:<%= singular_table_name %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
|
81
|
+
<%- end -%>
|
82
|
+
end
|
82
83
|
end
|
83
84
|
<% end -%>
|
@@ -91,6 +91,11 @@ module RecordCollection
|
|
91
91
|
self
|
92
92
|
end
|
93
93
|
|
94
|
+
# Return a hash of the changed attributes of the collection:
|
95
|
+
# {
|
96
|
+
# name: 'Ben',
|
97
|
+
# ....etc...
|
98
|
+
# }
|
94
99
|
def changed_attributes
|
95
100
|
@changed_attributes ||= attributes.reject{|attr, val| val.nil? }
|
96
101
|
end
|
@@ -19,7 +19,7 @@ class ActionView::Helpers::FormBuilder
|
|
19
19
|
classes = get_optional_classes(attr, base_class: 'optional-boolean')
|
20
20
|
label_tag = label(attr, options[:label])
|
21
21
|
check_box_tag = check_box(attr, options)
|
22
|
-
add_collection_ids @template.content_tag(:div, label_tag + check_box_tag , class: classes, data:
|
22
|
+
add_collection_ids @template.content_tag(:div, label_tag + check_box_tag , class: classes, data: get_data_attributes(attr))
|
23
23
|
end
|
24
24
|
|
25
25
|
def optional_check_box(attr)
|
@@ -28,17 +28,22 @@ class ActionView::Helpers::FormBuilder
|
|
28
28
|
|
29
29
|
def optional_input(attr, options = {})
|
30
30
|
classes = get_optional_classes(attr, base_class: 'optional-input')
|
31
|
-
add_collection_ids @template.content_tag(:div, input(attr, options), class: classes, data:
|
31
|
+
add_collection_ids @template.content_tag(:div, input(attr, options), class: classes, data: get_data_attributes(attr))
|
32
32
|
end
|
33
33
|
|
34
34
|
def optional_text_field(attr, options={})
|
35
35
|
classes = get_optional_classes(attr, base_class: 'optional-text-field')
|
36
|
-
add_collection_ids @template.content_tag(:div, label(attr, options[:label]) + text_field(attr, options), class: classes, data:
|
36
|
+
add_collection_ids @template.content_tag(:div, label(attr, options[:label]) + text_field(attr, options), class: classes, data: get_data_attributes(attr))
|
37
37
|
end
|
38
38
|
|
39
39
|
def optional_text_area(attr, options={})
|
40
40
|
classes = get_optional_classes(attr, base_class: 'optional-text-area')
|
41
|
-
add_collection_ids @template.content_tag(:div, label(attr, options[:label]) + text_area(attr, options), class: classes, data:
|
41
|
+
add_collection_ids @template.content_tag(:div, label(attr, options[:label]) + text_area(attr, options), class: classes, data: get_data_attributes(attr))
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_data_attributes(attr, options = {})
|
45
|
+
one = object.respond_to?(:one?) && object.one?
|
46
|
+
{attribute: attr, one: one}
|
42
47
|
end
|
43
48
|
|
44
49
|
def get_optional_classes(attr, options = {})
|
@@ -51,6 +56,7 @@ class ActionView::Helpers::FormBuilder
|
|
51
56
|
active = true unless object.public_send(attr).nil? # Activate if collection attribute is not nil
|
52
57
|
classes = [options[:base_class] || 'optional-input', 'optional-attribute-container', attr]
|
53
58
|
classes << (active ? 'active' : 'inactive')
|
59
|
+
classes << 'one' if object.respond_to?(:one?) and object.one?
|
54
60
|
classes << 'error' if object.errors[attr].present?
|
55
61
|
classes
|
56
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: record_collection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin ter Kuile
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|