tramway-core 1.16.2.1 → 1.17

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: 929785989e7be8ac305b420a555e8e47a0d9cd301c413ea902d1b86d14c5c44c
4
- data.tar.gz: 5d6390f4b01917f9889e8044fd048460f7a520ae0a3803a75729614977435e89
3
+ metadata.gz: 794b0a09c09fa7b4ba63ed246ebe1dc1809f3744cd53acc4d9d58c4eebd690f3
4
+ data.tar.gz: c834a2ab88aac405a344945a5411034aea8ed952dd4f616dcceb22ea853de091
5
5
  SHA512:
6
- metadata.gz: 44a801fd2329591b6f7de6352650d3e913cf49299fa35098a52c724e317d9abd42b57021204c3a9d2a78746d6bfa58b6b50cfe185af907a1bf0032e588ad531a
7
- data.tar.gz: a2d64fd4fb44800d94fd3c2d9a4bb4e050c5d1eaf73189c0c8dd719090e8538cf1650213973349060b7872a95b7592f2a4b50ab2eb3e904666e1d6450cc84914
6
+ metadata.gz: e38836d55bed1db9f83e23f5c7705a0c98977fb845cffe18728ca30584d2659b153986b48f5c95c7d134ea08211caa3e9941ad09d9397adc7ea273a7e4388a94
7
+ data.tar.gz: 1a8d9e9a054b9f42a93e88f3d506c1d489e7a7a139dd0eaa0595bdc47642b6fc3f6b6b77f074e81803c4d0edce7114bd5b054d2ee2dafc2442778676abfe1396
@@ -7,6 +7,7 @@ class Tramway::Core::ApplicationDecorator
7
7
  include ActionView::Context
8
8
  include ::FontAwesome5::Rails::IconHelper
9
9
  include ::Tramway::Core::CopyToClipboardHelper
10
+ include ::Tramway::Core::Associations::ObjectHelper
10
11
 
11
12
  def initialize(object)
12
13
  @object = object
@@ -22,6 +23,8 @@ class Tramway::Core::ApplicationDecorator
22
23
  end
23
24
 
24
25
  class << self
26
+ include ::Tramway::Core::Associations::ClassHelper
27
+
25
28
  def collections
26
29
  [:all]
27
30
  end
@@ -49,45 +52,6 @@ class Tramway::Core::ApplicationDecorator
49
52
  end
50
53
  end
51
54
 
52
- def decorate_association(association_name, decorator: nil, as: nil, state_machines: [])
53
- @@decorated_associations ||= []
54
- @@decorated_associations << association_name
55
-
56
- define_method association_name do
57
- association = object.class.reflect_on_association(association_name)
58
- if association.nil?
59
- error = Tramway::Error.new(plugin: :core, method: :decorate_association, message: "Model #{object.class} does not have association named `#{association_name}`")
60
- raise error.message
61
- end
62
- class_name = if association.polymorphic?
63
- object.send(association_name).class
64
- else
65
- unless association.options[:class_name]
66
- error = Tramway::Error.new(plugin: :core, method: :decorate_association, message: "Please, specify `#{association_name}` association class_name in #{object.class} model. For example: `has_many :#{association_name}, class_name: '#{association_name.to_s.singularize.camelize}'`")
67
- raise error.message
68
- end
69
- association.options[:class_name]
70
- end
71
- decorator_class_name = decorator || "#{class_name.to_s.singularize}Decorator".constantize
72
- if association.class == ActiveRecord::Reflection::HasManyReflection
73
- return object.send(association_name).active.map do |association_object|
74
- decorator_class_name.decorate association_object
75
- end
76
- end
77
- if association.class == ActiveRecord::Reflection::BelongsToReflection
78
- return decorator_class_name.decorate object.send association_name
79
- end
80
- end
81
-
82
- define_method "#{association_name}_as" do
83
- as
84
- end
85
-
86
- define_method "#{association_name}_state_machines" do
87
- state_machines
88
- end
89
- end
90
-
91
55
  def model_class
92
56
  to_s.sub(/Decorator$/, '').constantize
93
57
  end
@@ -0,0 +1,40 @@
1
+ module Tramway::Core::Associations::ClassHelper
2
+ def decorate_association(association_name, decorator: nil, as: nil, state_machines: [])
3
+ @@decorated_associations ||= []
4
+ @@decorated_associations << association_name
5
+
6
+ define_main_association_method association_name, decorator
7
+
8
+ define_method "#{association_name}_as" do
9
+ as
10
+ end
11
+
12
+ define_method "#{association_name}_state_machines" do
13
+ state_machines
14
+ end
15
+
16
+ define_method "add_#{association_name}_form" do
17
+ "Admin::#{object.class.to_s.pluralize}::Add#{association_name.to_s.camelize.singularize}Form".constantize.new object
18
+ end
19
+ end
20
+
21
+
22
+ def define_main_association_method(association_name, decorator)
23
+ define_method association_name do
24
+ association = object.class.reflect_on_association(association_name)
25
+ if association.nil?
26
+ error = Tramway::Error.new(plugin: :core, method: :decorate_association, message: "Model #{object.class} does not have association named `#{association_name}`")
27
+ raise error.message
28
+ end
29
+ decorator_class_name = decorator || "#{class_name(association).to_s.singularize}Decorator".constantize
30
+ if association.class.in? [ ActiveRecord::Reflection::HasManyReflection, ActiveRecord::Reflection::HasAndBelongsToManyReflection ]
31
+ return object.send(association_name).active.map do |association_object|
32
+ decorator_class_name.decorate association_object
33
+ end
34
+ end
35
+ if association.class == ActiveRecord::Reflection::BelongsToReflection
36
+ return decorator_class_name.decorate object.send association_name
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,13 @@
1
+ module Tramway::Core::Associations::ObjectHelper
2
+ def class_name(association)
3
+ if association.polymorphic?
4
+ object.send(association_name).class
5
+ else
6
+ unless association.options[:class_name]
7
+ error = Tramway::Error.new(plugin: :core, method: :decorate_association, message: "Please, specify `#{association_name}` association class_name in #{object.class} model. For example: `has_many :#{association_name}, class_name: '#{association_name.to_s.singularize.camelize}'`")
8
+ raise error.message
9
+ end
10
+ association.options[:class_name]
11
+ end
12
+ end
13
+ end
@@ -65,6 +65,10 @@ module Tramway::Core
65
65
  @@model_class.model_name
66
66
  end
67
67
 
68
+ def associations
69
+ @@associations
70
+ end
71
+
68
72
  def form_properties(**args)
69
73
  @form_properties = args
70
74
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Core
3
5
  module CopyToClipboardHelper
4
6
  def copy_to_clipboard(id)
5
7
  button_tag class: 'btn btn-info clipboard-btn',
6
- data: { clipboard_action: 'copy', clipboard_target: "##{id}" },
7
- style: 'margin-left: 15px' do
8
- fa_icon 'copy'
9
- end
8
+ data: { clipboard_action: 'copy', clipboard_target: "##{id}" },
9
+ style: 'margin-left: 15px' do
10
+ fa_icon 'copy'
11
+ end
10
12
  end
11
13
  end
12
14
  end
@@ -12,7 +12,7 @@ class PhotoUploader < ApplicationUploader
12
12
  file.file.match(%r{/system/uploads/.*}).to_s
13
13
  else
14
14
  default_url = '/assets/tramway/core/mona_lisa_from_prado_square.jpg'
15
- File.exists?(default_url) ? default_url : ''
15
+ File.exist?(default_url) ? default_url : ''
16
16
  end
17
17
  end
18
18
 
@@ -13,6 +13,7 @@ en:
13
13
  search: Search
14
14
  reset: Reset
15
15
  download: Download
16
+ add: Add
16
17
  scope:
17
18
  found: Found
18
19
  "yes": yes
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Core
5
- VERSION = '1.16.2.1'
5
+ VERSION = '1.17'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.2.1
4
+ version: '1.17'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-05 00:00:00.000000000 Z
11
+ date: 2020-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: audited
@@ -355,6 +355,8 @@ files:
355
355
  - app/controllers/tramway/core/application_controller.rb
356
356
  - app/decorators/tramway/core/application_decorated_collection.rb
357
357
  - app/decorators/tramway/core/application_decorator.rb
358
+ - app/decorators/tramway/core/associations/class_helper.rb
359
+ - app/decorators/tramway/core/associations/object_helper.rb
358
360
  - app/decorators/tramway/core/concerns/attributes_decorator_helper.rb
359
361
  - app/forms/tramway/core/application_form.rb
360
362
  - app/forms/tramway/core/extendable_form.rb