tramway-core 1.16.2.1 → 1.17

Sign up to get free protection for your applications and to get access to all the features.
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