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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1fd2dbf4e83157c214af26cda3f420c2262424d412e0be024370276a376c9f1
4
- data.tar.gz: 0d7183e4be0137e326e4c65e01af71c3d9d43a8085245dceb67d5903332a616e
3
+ metadata.gz: de93e7e3470ae4475e2562917ada23727724ed9f5d3a9e8629bb79abdc9abba3
4
+ data.tar.gz: 6eb2a75350e87dfcc01c80da40090ac4c14a7ef4d6d713a1e1ec6ad6fba36e8f
5
5
  SHA512:
6
- metadata.gz: a757831c656315d7fe43f5b76a0fff363170d55b2042a1f520bda007c57605f93f36a808e6f82d82b0f7aa94f523c12b552efae501fc076165f2bc88bf4ea94f
7
- data.tar.gz: ca9475b9bfaa9bd0c80fdfd14d502dbec4e30712d6c2260e9ac6b8607d16851d4eac117e795301d102c3a73d07fa802a3ff57e9c8f78e125e52dce13493a8269
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
 
@@ -11,4 +11,8 @@ class Tramway::Core::ApplicationController < ActionController::Base
11
11
  def load_extensions
12
12
  ::Tramway::Extensions.load if defined? ::Tramway::Extensions
13
13
  end
14
+
15
+ def model_class
16
+ params[:model].constantize
17
+ end
14
18
  end
@@ -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
- name: name, model_class_name: model_class_name
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, :submit, :looks_like_you_have_method,
118
- method_name: e.name.to_s.gsub('=', ''), model_class: @@model_class, class_name: self.class
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
- association_name: association
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({}) { |hash, property| hash.merge! property.first => model.values[property.first.to_s] }
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,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tramway::Core::ApplicationHelper
4
+ 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
@@ -16,6 +16,10 @@ class PhotoUploader < ApplicationUploader
16
16
  end
17
17
  end
18
18
 
19
+ def present?
20
+ super && width.present? && height.present?
21
+ end
22
+
19
23
  version :medium do
20
24
  process resize_to_fill: [400, 400]
21
25
  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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Core
5
- VERSION = '1.17.2.5'
5
+ VERSION = '1.17.4.2'
6
6
  end
7
7
  end
@@ -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.5
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-03-24 00:00:00.000000000 Z
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