para 0.7.0 → 0.7.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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/para/admin/tabs.coffee +1 -1
- data/app/assets/stylesheets/para/admin/src/_form.sass +8 -1
- data/app/assets/stylesheets/para/admin/src/_list.sass +22 -0
- data/app/assets/stylesheets/para/admin/src/_navigation.sass +39 -16
- data/app/assets/stylesheets/para/admin/src/_nested-many.sass +5 -4
- data/app/assets/stylesheets/para/admin/src/_nested_one.sass +11 -3
- data/app/assets/stylesheets/para/admin/src/_responsive.sass +26 -9
- data/app/helpers/para/form_helper.rb +1 -0
- data/app/models/para/page/section.rb +42 -2
- data/app/views/para/admin/shared/_navigation.html.haml +1 -1
- data/config/locales/en.yml +65 -2
- data/lib/generators/para/exporter/exporter_generator.rb +7 -3
- data/lib/generators/para/exporter/templates/base_exporter.rb +1 -1
- data/lib/generators/para/exporter/templates/csv_exporter.rb +1 -1
- data/lib/generators/para/exporter/templates/xls_exporter.rb +1 -1
- data/lib/generators/para/install/templates/initializer.rb +4 -0
- data/lib/para/attribute_field/datetime.rb +1 -1
- data/lib/para/components_configuration.rb +5 -1
- data/lib/para/config.rb +3 -0
- data/lib/para/form_builder/attributes_mappings_tracker.rb +11 -4
- data/lib/para/form_builder/tabs.rb +1 -0
- data/lib/para/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: ea023e2c7951df293b131af9c362b630a80acedb
|
4
|
+
data.tar.gz: e4a5edf55b4d9a1f98a7deac738a28169c227dfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac5856d930a5a18d535b5a5636809598ab4676a2f349523265edf1a87bdfdfb7efc5f94ad720315468d56c55b46895f5184ace70f4a95b719747437f1758a37d
|
7
|
+
data.tar.gz: e001063051553067ba717acb4900368bfd054b97a46e7ea8bbdbdbc0e70369e22d8dbfe41cd53437bbfd545434b968688c61d494847ea234ae8f45f8c383f016
|
@@ -62,9 +62,13 @@ legend
|
|
62
62
|
.tab-pane
|
63
63
|
+clearfix
|
64
64
|
.form-group:last-of-type,
|
65
|
-
.form-group:only-child
|
65
|
+
.form-group:only-child,
|
66
|
+
.nested-one-field:last-of-type
|
66
67
|
margin-bottom: 0
|
67
68
|
|
69
|
+
.nested-one-field
|
70
|
+
margin-bottom: $form-group-margin-bottom
|
71
|
+
|
68
72
|
.form-control
|
69
73
|
font-size: 14px
|
70
74
|
|
@@ -112,6 +116,8 @@ legend
|
|
112
116
|
//** Redactor
|
113
117
|
.redactor-editor
|
114
118
|
+outline-input-form
|
119
|
+
strong, b
|
120
|
+
font-weight: 700
|
115
121
|
|
116
122
|
.redactor-toolbar
|
117
123
|
border: none
|
@@ -194,6 +200,7 @@ legend
|
|
194
200
|
position: fixed
|
195
201
|
bottom: 0px
|
196
202
|
right: 50px
|
203
|
+
left: auto
|
197
204
|
padding: 8px
|
198
205
|
z-index: $zindex-navbar-fixed - 10
|
199
206
|
background-color: $gray-lighter
|
@@ -57,5 +57,27 @@
|
|
57
57
|
&.full
|
58
58
|
font-size: 0.9em
|
59
59
|
|
60
|
+
.input-group
|
61
|
+
+filter-style
|
62
|
+
.form-control
|
63
|
+
&:focus
|
64
|
+
+box-shadow(none)
|
65
|
+
.form-control,
|
66
|
+
.input-group-btn
|
67
|
+
background-color: transparent
|
68
|
+
border: none
|
69
|
+
+border-left-radius(20px)
|
70
|
+
.input-group-btn
|
71
|
+
overflow: hidden
|
72
|
+
+border-left-radius(0)
|
73
|
+
+border-right-radius(20px)
|
74
|
+
.btn
|
75
|
+
background-color: transparent
|
76
|
+
color: $gray
|
77
|
+
border-color: transparent
|
78
|
+
&:hover
|
79
|
+
color: $gray-dark
|
80
|
+
|
81
|
+
|
60
82
|
.page-entries-info
|
61
83
|
font-weight: 300
|
@@ -18,9 +18,8 @@
|
|
18
18
|
+material-box-shadow-soft(3)
|
19
19
|
|
20
20
|
.navmenu-brand
|
21
|
-
// +background(linear-gradient(to top right, $brand-primary, $brand-info))
|
22
21
|
background-color: $blue-darker
|
23
|
-
color:
|
22
|
+
color: #fff
|
24
23
|
display: block
|
25
24
|
font-size: 1.4em
|
26
25
|
font-weight: 300
|
@@ -35,7 +34,6 @@
|
|
35
34
|
color: white
|
36
35
|
|
37
36
|
.navmenu-nav
|
38
|
-
// background-color: $navbar-default-bg
|
39
37
|
background-color: $gray-lighter
|
40
38
|
height: calc(100% - 60px)
|
41
39
|
width: $left-menu-width-open
|
@@ -51,8 +49,6 @@
|
|
51
49
|
color: $gray
|
52
50
|
&:hover,
|
53
51
|
&:focus
|
54
|
-
// background-color: $navbar-default-bg
|
55
|
-
// color: white
|
56
52
|
background-color: $gray
|
57
53
|
color: $gray-lighter
|
58
54
|
|
@@ -64,8 +60,6 @@
|
|
64
60
|
padding: 0
|
65
61
|
|
66
62
|
.component-section-title
|
67
|
-
// background-color: $navbar-default-bg
|
68
|
-
// color: white
|
69
63
|
background-color: $gray-lighter
|
70
64
|
color: $text-color
|
71
65
|
font-weight: bold
|
@@ -86,29 +80,26 @@
|
|
86
80
|
|
87
81
|
.component-item
|
88
82
|
a, button
|
89
|
-
|
90
|
-
// color: $gray-light
|
91
|
-
color: $text-color
|
83
|
+
background-color: transparent
|
92
84
|
display: block
|
93
85
|
font-weight: 400
|
94
86
|
line-height: 19px
|
87
|
+
color: $text-color
|
88
|
+
font-weight: 400
|
95
89
|
padding: 11px 13px 11px 15px
|
96
90
|
text-decoration: none
|
97
91
|
|
98
92
|
+default-transition
|
99
93
|
&:hover,
|
100
94
|
&:focus
|
101
|
-
// background-color: $navbar-default-bg
|
102
|
-
background-color: $gray-lighter
|
103
95
|
padding-left: 25px
|
96
|
+
background-color: $gray-lighter
|
104
97
|
|
105
98
|
&.active
|
106
99
|
a, button
|
107
|
-
// background-color: lighten($navbar-default-bg, 10%)
|
108
|
-
background-color: $gray-light
|
109
|
-
border-color: $brand-primary
|
110
100
|
border-left: 2px solid $brand-primary
|
111
|
-
|
101
|
+
background-color: $gray-light
|
102
|
+
color: $text-color
|
112
103
|
padding-left: 25px
|
113
104
|
|
114
105
|
//== Top navbar
|
@@ -148,3 +139,35 @@
|
|
148
139
|
.navbar-toggle
|
149
140
|
float: left
|
150
141
|
display: block
|
142
|
+
|
143
|
+
//** Dark theme override
|
144
|
+
//***********************
|
145
|
+
.dark-theme.navmenu-default
|
146
|
+
.navmenu-brand
|
147
|
+
+background(linear-gradient(to top right, $brand-primary, $brand-info))
|
148
|
+
.navmenu-nav
|
149
|
+
background-color: $navbar-default-bg
|
150
|
+
> li > a
|
151
|
+
&:hover,
|
152
|
+
&:focus
|
153
|
+
background-color: $navbar-default-bg
|
154
|
+
color: white
|
155
|
+
.component-section-title
|
156
|
+
background-color: $navbar-default-bg
|
157
|
+
color: white
|
158
|
+
&:hover,
|
159
|
+
&:focus
|
160
|
+
background-color: transparent
|
161
|
+
color: white
|
162
|
+
.component-item
|
163
|
+
a, button
|
164
|
+
background-color: $text-color
|
165
|
+
color: $gray-lighter
|
166
|
+
&:hover,
|
167
|
+
&:focus
|
168
|
+
background-color: $navbar-default-bg
|
169
|
+
&.active
|
170
|
+
a, button
|
171
|
+
background-color: lighten($navbar-default-bg, 10%)
|
172
|
+
border-color: $brand-primary
|
173
|
+
color: white
|
@@ -49,18 +49,19 @@
|
|
49
49
|
float: left
|
50
50
|
padding: 10px
|
51
51
|
text-align: center
|
52
|
-
width:
|
52
|
+
width: 100%
|
53
53
|
|
54
54
|
> a
|
55
55
|
+border-radius(2px)
|
56
56
|
+default-transition
|
57
|
-
background: image_url('para/admin/template-section.svg') no-repeat
|
57
|
+
background: image_url('para/admin/template-section.svg') no-repeat $gray-lighter
|
58
|
+
background-position: center 10px
|
58
59
|
border: 1px dashed $gray
|
59
60
|
color: $gray
|
60
61
|
display: block
|
61
62
|
font-weight: bold
|
62
|
-
height:
|
63
|
-
padding:
|
63
|
+
height: 115px
|
64
|
+
padding: 70px 5px 5px 5px
|
64
65
|
text-transform: uppercase
|
65
66
|
width: 100%
|
66
67
|
white-space: normal
|
@@ -4,10 +4,18 @@
|
|
4
4
|
|
5
5
|
//== Main style
|
6
6
|
//
|
7
|
-
//##
|
7
|
+
//## Label have to be like a legend if is the nested_one
|
8
8
|
|
9
9
|
.form-group.nested_one
|
10
10
|
label.control-label.nested_one
|
11
|
-
font-weight:
|
12
|
-
font-size:
|
11
|
+
font-weight: 600
|
12
|
+
font-size: 21px
|
13
13
|
color: $blue-darker
|
14
|
+
text-transform: inherit
|
15
|
+
margin-top: 15px
|
16
|
+
margin-bottom: 15px
|
17
|
+
|
18
|
+
.tab-pane
|
19
|
+
> .form-group.nested_one
|
20
|
+
label.control-label.nested_one
|
21
|
+
margin-top: 0
|
@@ -7,6 +7,20 @@
|
|
7
7
|
|
8
8
|
/* Small devices (tablets, 768px and up) */
|
9
9
|
@media (min-width: $screen-sm-min)
|
10
|
+
//== Fixed actions
|
11
|
+
//
|
12
|
+
//## See form.sass
|
13
|
+
.form-fixed-actions
|
14
|
+
.form-actions
|
15
|
+
.btn
|
16
|
+
margin-bottom: 0
|
17
|
+
margin-right: 5px
|
18
|
+
|
19
|
+
//== Nested many
|
20
|
+
//
|
21
|
+
//## See neste_many.sass
|
22
|
+
.nested-many-field.nested-many-field-inset .nested-many-inset-add-button.open > .dropdown-menu > li
|
23
|
+
width: 50%
|
10
24
|
|
11
25
|
/* Medium devices (desktops, 992px and up) */
|
12
26
|
@media (min-width: $screen-md-min)
|
@@ -32,19 +46,21 @@
|
|
32
46
|
.loading-spinner
|
33
47
|
margin-left: ($left-menu-width-open / 2) - ($spinner-size / 2)
|
34
48
|
|
35
|
-
//==
|
49
|
+
//== Nested many
|
36
50
|
//
|
37
|
-
//## See
|
38
|
-
.
|
39
|
-
.
|
40
|
-
// left: $left-menu-width-open + 50px
|
41
|
-
.btn
|
42
|
-
margin-bottom: 0
|
43
|
-
margin-right: 5px
|
51
|
+
//## See neste_many.sass
|
52
|
+
.nested-many-field.nested-many-field-inset .nested-many-inset-add-button.open > .dropdown-menu > li
|
53
|
+
width: 33.333333%
|
44
54
|
|
45
55
|
/* Large devices (large desktops, 1200px and up) */
|
46
56
|
@media (min-width: $screen-lg-min)
|
47
|
-
|
57
|
+
//== Nested many
|
58
|
+
//
|
59
|
+
//## See neste_many.sass
|
60
|
+
.nested-many-field.nested-many-field-inset .nested-many-inset-add-button.open > .dropdown-menu > li > a
|
61
|
+
background-position: center center
|
62
|
+
padding: 75px 5px
|
63
|
+
height: 100%
|
48
64
|
|
49
65
|
//== Max width
|
50
66
|
//
|
@@ -83,6 +99,7 @@
|
|
83
99
|
.form-actions
|
84
100
|
padding-right: 15px
|
85
101
|
padding-left: 15px
|
102
|
+
left: 50px
|
86
103
|
.btn
|
87
104
|
width: 100%
|
88
105
|
|
@@ -12,14 +12,34 @@ module Para
|
|
12
12
|
end
|
13
13
|
|
14
14
|
class << self
|
15
|
+
|
16
|
+
# This method is a shortcut to create a has_one through relation
|
17
|
+
def section_resource(*args, &block)
|
18
|
+
_ensure_section_resource_relation
|
19
|
+
_create_section_resource_has_one_relation_for(*args, &block)
|
20
|
+
end
|
21
|
+
|
15
22
|
# This method is a shortcut to create a has_many through relation
|
16
23
|
def section_resources(*args, &block)
|
17
24
|
_ensure_section_resources_relation
|
18
|
-
|
25
|
+
_create_section_resource_has_many_relation_for(*args, &block)
|
19
26
|
end
|
20
27
|
|
21
28
|
private
|
22
29
|
|
30
|
+
def _ensure_section_resource_relation
|
31
|
+
return if @section_resource_already_initialized
|
32
|
+
|
33
|
+
has_one :section_resource, -> { ordered },
|
34
|
+
foreign_key: 'section_id',
|
35
|
+
class_name: '::Para::Page::SectionResource',
|
36
|
+
dependent: :destroy
|
37
|
+
|
38
|
+
accepts_nested_attributes_for :section_resource, allow_destroy: true
|
39
|
+
|
40
|
+
@section_resource_already_initialized = true
|
41
|
+
end
|
42
|
+
|
23
43
|
def _ensure_section_resources_relation
|
24
44
|
return if @section_resources_already_initialized
|
25
45
|
|
@@ -32,7 +52,27 @@ module Para
|
|
32
52
|
@section_resources_already_initialized = true
|
33
53
|
end
|
34
54
|
|
35
|
-
def
|
55
|
+
def _create_section_resource_has_one_relation_for(*args, &block)
|
56
|
+
options = args.extract_options!
|
57
|
+
|
58
|
+
# Allow using :class_name option instead of :source_type to feel more
|
59
|
+
# like a direct has_many relation macro, and try to deduce the target
|
60
|
+
# class name from the relation name.
|
61
|
+
target_class_name = options.fetch(:class_name) do
|
62
|
+
args.first.to_s.singularize.camelize
|
63
|
+
end
|
64
|
+
|
65
|
+
# Fill the through relation options but let the user override them
|
66
|
+
options.reverse_merge!(
|
67
|
+
through: :section_resource,
|
68
|
+
source: :resource,
|
69
|
+
source_type: target_class_name
|
70
|
+
)
|
71
|
+
|
72
|
+
has_one(*args, options, &block)
|
73
|
+
end
|
74
|
+
|
75
|
+
def _create_section_resource_has_many_relation_for(*args, &block)
|
36
76
|
options = args.extract_options!
|
37
77
|
|
38
78
|
# Allow using :class_name option instead of :source_type to feel more
|
data/config/locales/en.yml
CHANGED
@@ -11,9 +11,28 @@ en:
|
|
11
11
|
destroy:
|
12
12
|
success: "%{model} deleted"
|
13
13
|
error: "Could not delete %{model}"
|
14
|
+
clone:
|
15
|
+
success: "%{model} cloned"
|
16
|
+
error: "Could not clone %{model}"
|
17
|
+
|
18
|
+
jobs:
|
19
|
+
para/importer/base:
|
20
|
+
progressing: "The file is being imported, please wait a few moments ..."
|
21
|
+
success: "The import of the file was successfully completed"
|
22
|
+
success_with_errors: |
|
23
|
+
The import of the file was done, but some lines
|
24
|
+
were not taken into account due to errors :
|
25
|
+
other_errors: "<br>And <b>%{count}</b> others errors ..."
|
26
|
+
error: "The selected file contains errors and could not be imported"
|
27
|
+
|
28
|
+
para/exporter/base:
|
29
|
+
progressing: "The file is being exported, please wait a few moments ..."
|
30
|
+
success: "The export file was generated, its download will start ..."
|
31
|
+
error: "Error generating the export file ..."
|
14
32
|
|
15
33
|
admin:
|
16
|
-
title:
|
34
|
+
title: Administration
|
35
|
+
brand: "<b>Admin</b>istration"
|
17
36
|
toggle_navigation: "Open navigation"
|
18
37
|
back_to_app: "Back to app"
|
19
38
|
sign_out: "Sign out"
|
@@ -21,6 +40,9 @@ en:
|
|
21
40
|
confirmation:
|
22
41
|
shared:
|
23
42
|
destroy: 'Are you sure that you want to delete %{model} ?'
|
43
|
+
|
44
|
+
component:
|
45
|
+
none_created: "No components yet ..."
|
24
46
|
|
25
47
|
component:
|
26
48
|
create: "Create a component"
|
@@ -33,6 +55,9 @@ en:
|
|
33
55
|
|
34
56
|
dashboard:
|
35
57
|
title: "Dashboard"
|
58
|
+
statcard:
|
59
|
+
ressources_count: "Number of entries : %{count}"
|
60
|
+
component_form_ressource: "See page"
|
36
61
|
|
37
62
|
component_section:
|
38
63
|
add: "Add a component section"
|
@@ -49,6 +74,16 @@ en:
|
|
49
74
|
add: "Add"
|
50
75
|
remove: "Remove"
|
51
76
|
new: "New"
|
77
|
+
multi_select:
|
78
|
+
available:
|
79
|
+
title: "Available"
|
80
|
+
no_items: "Search for items with the search bar above"
|
81
|
+
add_all: "Add all"
|
82
|
+
already_selected: "Add"
|
83
|
+
selected:
|
84
|
+
title: "Add"
|
85
|
+
no_items: "Use the search form on the left to add items."
|
86
|
+
remove_all: "Remove all"
|
52
87
|
|
53
88
|
list:
|
54
89
|
search_title: "Search"
|
@@ -58,13 +93,17 @@ en:
|
|
58
93
|
|
59
94
|
export:
|
60
95
|
name: "Export %{name}"
|
61
|
-
as: "
|
96
|
+
as: "Exporting (.%{extension})"
|
62
97
|
|
63
98
|
import:
|
64
99
|
name: Import
|
65
100
|
select: "Select file"
|
66
101
|
change: "Change file"
|
102
|
+
help_text: |
|
103
|
+
Select an Excel file (.xls, .xlsx) ou CSV (.csv) to import and
|
104
|
+
click the "Importing" button.
|
67
105
|
placeholder: File format ( .csv .xlsx )
|
106
|
+
row_error_prefix: "Line %{number} :"
|
68
107
|
|
69
108
|
shared:
|
70
109
|
save: "Save"
|
@@ -73,6 +112,10 @@ en:
|
|
73
112
|
search: "Search"
|
74
113
|
save_and_edit: "Save and edit"
|
75
114
|
save_and_add_another_button: "Save and create a other"
|
115
|
+
destroy: "Destroy"
|
116
|
+
edit: "Edit"
|
117
|
+
copy: "Duplicate"
|
118
|
+
close: "Close"
|
76
119
|
|
77
120
|
types:
|
78
121
|
boolean:
|
@@ -103,4 +146,24 @@ en:
|
|
103
146
|
type: "Type"
|
104
147
|
model_type: "Resource"
|
105
148
|
namespaced: "Only list component's resources"
|
149
|
+
|
150
|
+
activemodel:
|
151
|
+
models:
|
152
|
+
settings_rails/form:
|
153
|
+
one: "Configuration"
|
154
|
+
other: "Configuration"
|
155
|
+
para/exporter/base:
|
156
|
+
one: "Export of data"
|
157
|
+
other: "Exports of data"
|
158
|
+
|
159
|
+
helpers:
|
160
|
+
page_entries_info:
|
161
|
+
number_per_page: Number of entries per page
|
162
|
+
one_page:
|
163
|
+
display_entries:
|
164
|
+
zero: "No entries found"
|
165
|
+
one: "Display of entries <b>1 - 1</b> to <b>1</b> in total"
|
166
|
+
other: "Display of entries <b>1 - %{count}</b> to <b>%{count}</b> in total"
|
167
|
+
more_pages:
|
168
|
+
display_entries: "Display of entries <b>%{first} - %{last}</b> to <b>%{total}</b> in total"
|
106
169
|
|
@@ -14,15 +14,19 @@ module Para
|
|
14
14
|
|
15
15
|
template(
|
16
16
|
"#{ base_exporter_template_name_for(format) }_exporter.rb",
|
17
|
-
"app/exporters/#{
|
17
|
+
"app/exporters/#{ exporter_name }.rb"
|
18
18
|
)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
23
|
|
24
|
-
def
|
25
|
-
|
24
|
+
def exporter_class_name
|
25
|
+
exporter_name.camelize
|
26
|
+
end
|
27
|
+
|
28
|
+
def exporter_name
|
29
|
+
[plural_file_name, 'exporter'].join('_')
|
26
30
|
end
|
27
31
|
|
28
32
|
def base_exporter_template_name_for(format)
|
@@ -26,6 +26,10 @@ Para.config do |config|
|
|
26
26
|
#
|
27
27
|
# config.resource_name_methods += [:full_name]
|
28
28
|
|
29
|
+
# Configure the theme navigation bar color not gray but blue darker
|
30
|
+
#
|
31
|
+
# config.dark_theme = true
|
32
|
+
|
29
33
|
# Set if the Para::Breadcrumb::Controller module should be included into the
|
30
34
|
# app, allowing easy breadcrumbs management in the app.
|
31
35
|
#
|
@@ -19,7 +19,11 @@ module Para
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def method_missing(method, *args, &block)
|
22
|
-
component_for(method)
|
22
|
+
if (component = component_for(method))
|
23
|
+
component.tap(&ActiveDecorator::Decorator.instance.method(:decorate))
|
24
|
+
else
|
25
|
+
super
|
26
|
+
end
|
23
27
|
end
|
24
28
|
|
25
29
|
def section_for(identifier)
|
data/lib/para/config.rb
CHANGED
@@ -19,8 +19,11 @@ module Para
|
|
19
19
|
super(attribute_name, options)
|
20
20
|
end
|
21
21
|
|
22
|
-
def fields_for(*args,
|
23
|
-
|
22
|
+
def fields_for(*args, &block)
|
23
|
+
fields_options = args.extract_options!
|
24
|
+
fields_options.reverse_merge!(track_attribute_mappings: options[:track_attribute_mappings])
|
25
|
+
|
26
|
+
super(*args, fields_options) do |fields|
|
24
27
|
fields_html = @template.capture { block.call(fields) }
|
25
28
|
|
26
29
|
fields_html + fields.attributes_mappings_field_for(fields)
|
@@ -28,14 +31,18 @@ module Para
|
|
28
31
|
end
|
29
32
|
|
30
33
|
def attributes_mappings_field_for(fields)
|
34
|
+
return unless options[:track_attribute_mappings]
|
35
|
+
|
31
36
|
hidden_field :_attributes_mappings, value: @attributes_mappings.to_json,
|
32
37
|
data: { :'attributes-mappings' => fields.options[:child_index] }
|
33
38
|
end
|
34
39
|
|
35
40
|
private
|
36
41
|
|
37
|
-
def store_attribute_mapping_for(attribute_name,
|
38
|
-
|
42
|
+
def store_attribute_mapping_for(attribute_name, input_options, &block)
|
43
|
+
return unless options[:track_attribute_mappings]
|
44
|
+
|
45
|
+
input = find_input(attribute_name, input_options, &block)
|
39
46
|
type = input.class.name.demodulize.underscore.gsub(/_input\z/, '')
|
40
47
|
|
41
48
|
@attributes_mappings[attribute_name] = type
|
data/lib/para/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: para
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentin Ballestrino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|