tramway-core 1.17.2.5 → 1.17.4.2
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/README.md +1 -1
- data/app/controllers/tramway/core/application_controller.rb +4 -0
- data/app/forms/tramway/core/application_form.rb +15 -3
- data/app/forms/tramway/core/application_forms/association_object_helpers.rb +1 -1
- data/app/forms/tramway/core/application_forms/constant_object_actions.rb +8 -1
- data/app/helpers/tramway/core/application_helper.rb +4 -0
- data/app/helpers/tramway/core/inputs_helper.rb +93 -0
- data/app/uploaders/photo_uploader.rb +4 -0
- data/app/views/tramway/core/shared/_input.html.haml +25 -0
- data/lib/tramway/core/application.rb +1 -1
- data/lib/tramway/core/version.rb +1 -1
- data/lib/yaml/errors.yml +3 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de93e7e3470ae4475e2562917ada23727724ed9f5d3a9e8629bb79abdc9abba3
|
4
|
+
data.tar.gz: 6eb2a75350e87dfcc01c80da40090ac4c14a7ef4d6d713a1e1ec6ad6fba36e8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70846eaa98acc8df08009b4c5b0ee6e954c885e87342eaa17f0cbce2cb4fa25f78a51604b234170ee0502c33195e74095a5a27b14565cf04ae6612630896092a
|
7
|
+
data.tar.gz: 020e281d3e91424d0af2ccf2e4f8554b2f1295b399433f7ce5238fe181d1d1fb4ec999773bd408a57af12e7386d5bd39211bc15d32e1562b3dc1d0de61e124cd
|
data/README.md
CHANGED
@@ -132,7 +132,7 @@ end
|
|
132
132
|
|
133
133
|
### CopyToClipboardHelper
|
134
134
|
|
135
|
-
[app/helpers/tramway/core/copy_to_clipboard_helper.rb](https://github.com/ulmic/tramway-dev/blob/develop/tramway-core/app/helpers/tramway/core/copy_to_clipboard_helper.rb)
|
135
|
+
[app/helpers/tramway/core/copy_to_clipboard_helper.rb] (https://github.com/ulmic/tramway-dev/blob/develop/tramway-core/app/helpers/tramway/core/copy_to_clipboard_helper.rb)
|
136
136
|
|
137
137
|
#### Install
|
138
138
|
|
@@ -5,6 +5,8 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
|
|
5
5
|
include Tramway::Core::ApplicationForms::ConstantObjectActions
|
6
6
|
include Tramway::Core::ApplicationForms::PropertiesObjectHelper
|
7
7
|
|
8
|
+
attr_accessor :submit_message
|
9
|
+
|
8
10
|
def initialize(object = nil)
|
9
11
|
object ||= self.class.model_class.new
|
10
12
|
super(object).tap do
|
@@ -36,6 +38,14 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
|
|
36
38
|
@@associations
|
37
39
|
end
|
38
40
|
|
41
|
+
def to_model
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def persisted?
|
46
|
+
model.id.nil?
|
47
|
+
end
|
48
|
+
|
39
49
|
class << self
|
40
50
|
include Tramway::Core::ApplicationForms::ConstantClassActions
|
41
51
|
|
@@ -86,7 +96,7 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
|
|
86
96
|
@@model_class = model_class_name.constantize
|
87
97
|
rescue StandardError
|
88
98
|
Tramway::Error.raise_error :tramway, :core, :application_form, :model_class, :there_is_not_model_class,
|
89
|
-
|
99
|
+
name: name, model_class_name: model_class_name
|
90
100
|
end
|
91
101
|
end
|
92
102
|
end
|
@@ -113,8 +123,10 @@ class Tramway::Core::ApplicationForm < ::Reform::Form
|
|
113
123
|
|
114
124
|
def save
|
115
125
|
super
|
126
|
+
rescue ArgumentError => e
|
127
|
+
Tramway::Error.raise_error :tramway, :core, :application_form, :save, :argument_error, message: e.message
|
116
128
|
rescue StandardError => e
|
117
|
-
Tramway::Error.raise_error :tramway, :core, :application_form, :
|
118
|
-
|
129
|
+
Tramway::Error.raise_error :tramway, :core, :application_form, :save, :looks_like_you_have_method,
|
130
|
+
method_name: e.name.to_s.gsub('=', ''), model_class: @@model_class, class_name: self.class
|
119
131
|
end
|
120
132
|
end
|
@@ -17,7 +17,7 @@ module Tramway::Core::ApplicationForms::AssociationObjectHelpers
|
|
17
17
|
association_class = association_class.constantize if association_class.is_a? String
|
18
18
|
if association_class.nil?
|
19
19
|
Tramway::Error.raise_error :tramway, :core, :application_form, :initialize, :polymorphic_class_is_nil,
|
20
|
-
|
20
|
+
association_name: association
|
21
21
|
else
|
22
22
|
super association_class.find value.split('_')[-1]
|
23
23
|
send "#{association}_type=", association_class.to_s
|
@@ -8,6 +8,13 @@ module Tramway::Core::ApplicationForms::ConstantObjectActions
|
|
8
8
|
def build_errors; end
|
9
9
|
|
10
10
|
def attributes
|
11
|
-
properties.reduce({})
|
11
|
+
properties.reduce({}) do |hash, property|
|
12
|
+
value = if model.respond_to? :values
|
13
|
+
model.values[property.first.to_s]
|
14
|
+
else
|
15
|
+
model.send(property.first.to_s)
|
16
|
+
end
|
17
|
+
hash.merge! property.first => value
|
18
|
+
end
|
12
19
|
end
|
13
20
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tramway::Core::InputsHelper
|
4
|
+
def association_params(form_object:, property:, value:, object:, options: {})
|
5
|
+
full_class_name_association = form_object.class.full_class_name_association(property)
|
6
|
+
unless full_class_name_association
|
7
|
+
raise "It seems you've defined association attributes with `property` method. Please, use `association` method. `association :#{property}`"
|
8
|
+
end
|
9
|
+
if full_class_name_association.is_a? Array
|
10
|
+
raise "It seems you've used `association` input type in the Form. Please, use `polymorphic_association` type. `#{property}: :polymorphic_association`"
|
11
|
+
end
|
12
|
+
|
13
|
+
{
|
14
|
+
label: false,
|
15
|
+
input_html: {
|
16
|
+
name: "#{object}[#{property}]",
|
17
|
+
id: "#{object}_#{property}",
|
18
|
+
value: (form_object.send(property) || form_object.model.send("#{property}_id") || value)
|
19
|
+
},
|
20
|
+
selected: (form_object.model.send("#{property}_id") || value),
|
21
|
+
collection: full_class_name_association.active.map do |obj|
|
22
|
+
decorator_class(full_class_name_association).decorate obj
|
23
|
+
end.sort_by(&:name)
|
24
|
+
}.merge options
|
25
|
+
end
|
26
|
+
|
27
|
+
def polymorphic_association_params(object:, form_object:, property:, value:, options: {})
|
28
|
+
full_class_names = form_object.model.class.send("#{property}_type").values.map &:constantize
|
29
|
+
collection = full_class_names.map do |class_name|
|
30
|
+
class_name.active.map do |obj|
|
31
|
+
decorator_class(class_name).decorate obj
|
32
|
+
end
|
33
|
+
end.flatten.sort_by { |obj| obj.name.to_s }
|
34
|
+
builded_value = if form_object.send(property).present?
|
35
|
+
"#{form_object.send(property).class.to_s.underscore}_#{form_object.send(property).id}"
|
36
|
+
else
|
37
|
+
"#{value[:type]&.underscore}_#{value[:id]}"
|
38
|
+
end
|
39
|
+
{
|
40
|
+
as: :select,
|
41
|
+
label: false,
|
42
|
+
input_html: {
|
43
|
+
name: "#{object}[#{property}]",
|
44
|
+
id: "#{object}_#{property}",
|
45
|
+
value: builded_value
|
46
|
+
},
|
47
|
+
selected: builded_value,
|
48
|
+
collection: collection,
|
49
|
+
label_method: lambda do |obj|
|
50
|
+
"#{obj.class.model_name.human} | #{obj.name}"
|
51
|
+
end,
|
52
|
+
value_method: lambda do |obj|
|
53
|
+
"#{obj.class.to_s.underscore.sub(/_decorator$/, '')}_#{obj.id}"
|
54
|
+
end
|
55
|
+
}.merge options
|
56
|
+
end
|
57
|
+
|
58
|
+
def value_from_params(model_class:, property:, type:)
|
59
|
+
case type
|
60
|
+
when :polymorphic_association, 'polymorphic_association'
|
61
|
+
{
|
62
|
+
id: params.dig(model_class.to_s.underscore, property.to_s),
|
63
|
+
type: params.dig(model_class.to_s.underscore, "#{property}_type")
|
64
|
+
}
|
65
|
+
else
|
66
|
+
params.dig(model_class.to_s.underscore, property.to_s)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def default_params(property:, object:, form_object:, value:, options: {})
|
71
|
+
{
|
72
|
+
label: false,
|
73
|
+
input_html: {
|
74
|
+
name: "#{object}[#{property}]",
|
75
|
+
id: "#{object}_#{property}",
|
76
|
+
value: (form_object.send(property) || form_object.model.send(property) || value)
|
77
|
+
},
|
78
|
+
selected: (form_object.model.send(property) || value)
|
79
|
+
}.merge options
|
80
|
+
end
|
81
|
+
|
82
|
+
def else_params(property:, object:, type:, form_object:, value:, options: {})
|
83
|
+
{
|
84
|
+
as: type,
|
85
|
+
label: false,
|
86
|
+
input_html: {
|
87
|
+
name: "#{object}[#{property}]",
|
88
|
+
id: "#{object}_#{property}",
|
89
|
+
value: (form_object.send(property) || form_object.model.send(property) || value)
|
90
|
+
}
|
91
|
+
}.merge options
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
- model_class = defined?(record) ? record.model : model_class
|
2
|
+
- form_object = defined?(record) ? record : instance_variable_get("@#{object}_form")
|
3
|
+
- input_params = { property: property, object: object, form_object: form_object, value: value }
|
4
|
+
- if !type.class.in?([ Symbol, String ]) && type[:input_options]
|
5
|
+
- input_params.merge!(options: type[:input_options])
|
6
|
+
- type = type[:type]
|
7
|
+
- if type.class.in?([ Symbol, String ]) || type&.dig(:input_options)
|
8
|
+
- type = type.to_sym
|
9
|
+
= form.label form_object.model.class.human_attribute_name property
|
10
|
+
- case type
|
11
|
+
- when :default
|
12
|
+
= form.input property, **default_params(**input_params)
|
13
|
+
- when :association
|
14
|
+
= form.association property, **association_params(**input_params)
|
15
|
+
- when :polymorphic_association
|
16
|
+
= form.input property, **polymorphic_association_params(**input_params.merge(value: value))
|
17
|
+
- else
|
18
|
+
= form.input property, **else_params(**input_params.merge(type: type))
|
19
|
+
- else
|
20
|
+
- property_value = form_object.model.values.present? && form_object.model.values[property.to_s]
|
21
|
+
= render 'tramway/core/shared/input_extended', field: type[:extended_form_property], class_name: :record, value: property_value, f: form
|
22
|
+
|
23
|
+
- if params[:errors].present? && params[:errors][property]&.first
|
24
|
+
.alert.alert-danger
|
25
|
+
= params[:errors][property]&.first
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Tramway::Core::Application
|
4
|
-
attr_accessor :name, :url, :model_class, :title, :tagline, :found_date, :phone, :email
|
4
|
+
attr_accessor :name, :url, :model_class, :title, :tagline, :found_date, :phone, :email, :main_image
|
5
5
|
|
6
6
|
def public_name
|
7
7
|
name.to_s.gsub('_', ' ').camelize
|
data/lib/tramway/core/version.rb
CHANGED
data/lib/yaml/errors.yml
CHANGED
@@ -13,8 +13,10 @@ tramway:
|
|
13
13
|
validates:
|
14
14
|
you_need_to_set_model_class: 'You need to set `model_class` name while using validations. Just write `self.model_class = YOUR_MODEL_NAME` in the class area.'
|
15
15
|
submit:
|
16
|
-
looks_like_you_have_method: "Looks like you have method `%{method_name}` in %{model_class}. You should rename it or rename property in %{class_name}"
|
17
16
|
params_should_not_be_nil: "ApplicationForm::Params should not be nil"
|
17
|
+
save:
|
18
|
+
looks_like_you_have_method: "Looks like you have method `%{method_name}` in %{model_class}. You should rename it or rename property in %{class_name}"
|
19
|
+
argument_error: "We have ArgumentError with message: %{message}"
|
18
20
|
model_class:
|
19
21
|
there_is_not_model_class: "There is not model class name for %{name}. Should be %{model_class_name} or you can use another class to initialize form object or just initialize form with object."
|
20
22
|
concerns:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tramway-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.17.2
|
4
|
+
version: 1.17.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: audited
|
@@ -376,7 +376,9 @@ files:
|
|
376
376
|
- app/forms/tramway/core/extendable_forms_helpers/validators.rb
|
377
377
|
- app/forms/tramway/core/extended_application_form.rb
|
378
378
|
- app/forms/tramway/core/form_creator.rb
|
379
|
+
- app/helpers/tramway/core/application_helper.rb
|
379
380
|
- app/helpers/tramway/core/copy_to_clipboard_helper.rb
|
381
|
+
- app/helpers/tramway/core/inputs_helper.rb
|
380
382
|
- app/helpers/tramway/core/title_helper.rb
|
381
383
|
- app/inputs/date_picker_input.rb
|
382
384
|
- app/models/tramway/core/application_record.rb
|
@@ -385,6 +387,7 @@ files:
|
|
385
387
|
- app/uploaders/image_defaults.rb
|
386
388
|
- app/uploaders/photo_uploader.rb
|
387
389
|
- app/views/tramway/core/404.haml
|
390
|
+
- app/views/tramway/core/shared/_input.html.haml
|
388
391
|
- app/views/tramway/core/shared/_input_extended.html.haml
|
389
392
|
- app/views/tramway/core/shared/_messages.html.haml
|
390
393
|
- app/views/tramway/core/shared/input_extended_types/_checkbox.html.haml
|