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 +4 -4
- data/app/decorators/tramway/core/application_decorator.rb +3 -39
- data/app/decorators/tramway/core/associations/class_helper.rb +40 -0
- data/app/decorators/tramway/core/associations/object_helper.rb +13 -0
- data/app/forms/tramway/core/application_form.rb +4 -0
- data/app/helpers/tramway/core/copy_to_clipboard_helper.rb +6 -4
- data/app/uploaders/photo_uploader.rb +1 -1
- data/config/locales/en/helpers.yml +1 -0
- data/lib/tramway/core/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 794b0a09c09fa7b4ba63ed246ebe1dc1809f3744cd53acc4d9d58c4eebd690f3
|
4
|
+
data.tar.gz: c834a2ab88aac405a344945a5411034aea8ed952dd4f616dcceb22ea853de091
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -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
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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.
|
15
|
+
File.exist?(default_url) ? default_url : ''
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
data/lib/tramway/core/version.rb
CHANGED
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.
|
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-
|
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
|