tramway-core 1.18 → 1.18.1
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 +26 -2
- data/app/forms/tramway/core/application_form.rb +8 -4
- data/app/forms/tramway/core/application_forms/association_object_helpers.rb +2 -2
- data/app/forms/tramway/core/application_forms/properties_object_helper.rb +3 -10
- data/app/forms/tramway/core/application_forms/submit_helper.rb +4 -1
- data/app/forms/tramway/core/extendable_forms_helpers/class_builder.rb +1 -1
- data/app/forms/tramway/core/extendable_forms_helpers/more_properties_helper.rb +6 -2
- data/app/forms/tramway/core/extendable_forms_helpers/submit/class_helpers.rb +5 -5
- data/app/forms/tramway/core/extendable_forms_helpers/submit/object_helpers.rb +14 -0
- data/app/models/tramway/core/application_record.rb +5 -0
- data/app/uploaders/application_uploader.rb +1 -0
- data/app/uploaders/file_uploader.rb +2 -2
- data/app/uploaders/image_defaults.rb +2 -2
- data/app/uploaders/photo_uploader.rb +1 -5
- data/lib/tramway/core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88f57e54e293b5c5a85a88563762fd8c26df2ccbcb6eedebcb8ad1636d19ab08
|
4
|
+
data.tar.gz: 721461846180ea4eb78ebdbc314029be09ff3c391c995900ef0d2a498236af62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b641dc9b842fb20fef05c90a73ed0007ddb9804b45cef8e6b74b2c6eea99e6610580d79450a7ef121a53a373685369addb83078e0db5e658c2129306c542c62c
|
7
|
+
data.tar.gz: 7f19244857938c969c03e52d49c063d34b52e25e4aad17d9bdee41bc7d12b2e650f241ec51a2f6a90ce71ab2cc2fd5409ac5d26857c59b464d44a095632d69c8
|
data/README.md
CHANGED
@@ -34,7 +34,31 @@ Rails.application.config.assets.precompile += %w( *.jpg *.png *.js )
|
|
34
34
|
```
|
35
35
|
# Usage
|
36
36
|
|
37
|
-
##
|
37
|
+
## Tramway::Core::ApplicationRecord
|
38
|
+
|
39
|
+
### uploader
|
40
|
+
|
41
|
+
Tramway use [carrierwave](https://github.com/carrierwaveuploader/carrierwave) for file uploading by default. To mount uploader you should use `uploader` method
|
42
|
+
|
43
|
+
Interface: `uploader(attribute_name, uploader_name, **options)`
|
44
|
+
|
45
|
+
* attribute_name - ActiveRecord attribute to mount uploader
|
46
|
+
* uploader_name - **short** uploader name. You need to connect uploaders which are compatible with Tramway. Available uploaders:
|
47
|
+
* :photo - you can see it [here](https://github.com/Purple-Magic/tramway-core/blob/develop/app/uploaders/photo_uploader.rb)
|
48
|
+
* :file - you can see it [here](https://github.com/Purple-Magic/tramway-core/blob/develop/app/uploaders/file_uploader.rb)
|
49
|
+
* options - you are available to set options for uploaders exactly for this model. Available options:
|
50
|
+
* versions - **only for :photo**. Set needed versions for file to be cropped. If empty - 0 zero versions will be used. All versions you can see [here](https://github.com/Purple-Magic/tramway-core/blob/develop/app/uploaders/photo_uploader.rb)
|
51
|
+
* extensions - whitelist of file extensions. If empty will be used default whitelist from the uploaders (links above)
|
52
|
+
|
53
|
+
Example:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
class User < Tramway::Core::ApplicationRecord
|
57
|
+
uploader :avatar, :photo, version: [ :small, :medium ], extensions: [ :jpg, :jpeg ]
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
61
|
+
## Tramway::Core::ApplicationDecorator
|
38
62
|
### Associations
|
39
63
|
|
40
64
|
Your can decorate association models. Supporting all types of association
|
@@ -157,7 +181,7 @@ copy_to_clipboard "some_id" # some_id is HTML id of element. Content of this ele
|
|
157
181
|
#### 1. Generate model that you to use. We create Organization, for example
|
158
182
|
|
159
183
|
```shell
|
160
|
-
rails g model organization name:text public_name:text tagline:text address:text phone:text coordinates:point
|
184
|
+
rails g model organization name:text public_name:text tagline:text address:text phone:text coordinates:point state: text favicon:text # remember! State field is required, if you use tramway-admin
|
161
185
|
rails db:migrate
|
162
186
|
```
|
163
187
|
|
@@ -39,11 +39,15 @@ class Tramway::Core::ApplicationForm
|
|
39
39
|
delegate :defined_enums, to: :model_class
|
40
40
|
|
41
41
|
def properties(*props)
|
42
|
+
props.each { |prop| property prop }
|
43
|
+
end
|
44
|
+
|
45
|
+
def property(prop)
|
42
46
|
@@properties ||= []
|
43
|
-
@@properties
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
+
@@properties << prop
|
48
|
+
delegate prop, to: :model
|
49
|
+
define_method("#{prop}=") do |value|
|
50
|
+
model.send "#{prop}=", value
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
@@ -7,7 +7,7 @@ module Tramway::Core::ApplicationForms::AssociationObjectHelpers
|
|
7
7
|
else
|
8
8
|
self.class.send(:define_method, "#{association}=") do |value|
|
9
9
|
model.send "#{association}_id=", value
|
10
|
-
|
10
|
+
model.send "#{association}=", class_name.find(value)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -20,7 +20,7 @@ module Tramway::Core::ApplicationForms::AssociationObjectHelpers
|
|
20
20
|
Tramway::Error.raise_error :tramway, :core, :application_form, :initialize, :polymorphic_class_is_nil,
|
21
21
|
association_name: association
|
22
22
|
else
|
23
|
-
|
23
|
+
model.send "#{association}=", association_class.find(value.split('_')[-1])
|
24
24
|
send "#{association}_type=", association_class.to_s
|
25
25
|
end
|
26
26
|
end
|
@@ -5,19 +5,12 @@ module Tramway::Core::ApplicationForms::PropertiesObjectHelper
|
|
5
5
|
@form_properties = args
|
6
6
|
end
|
7
7
|
|
8
|
-
def form_properties_additional(**args)
|
9
|
-
@form_properties_additional = args
|
10
|
-
end
|
11
|
-
|
12
8
|
def properties
|
13
|
-
|
14
|
-
|
9
|
+
@form_properties ||= {}
|
15
10
|
yaml_config_file_path = Rails.root.join('app', 'forms', "#{self.class.name.underscore}.yml")
|
16
11
|
|
17
|
-
return
|
12
|
+
return @form_properties unless File.exist? yaml_config_file_path
|
18
13
|
|
19
|
-
@form_properties
|
20
|
-
@form_properties.deep_merge! @form_properties_additional if @form_properties_additional
|
21
|
-
@form_properties
|
14
|
+
@form_properties.deep_merge YAML.load_file(yaml_config_file_path).deep_symbolize_keys
|
22
15
|
end
|
23
16
|
end
|
@@ -4,7 +4,10 @@ module Tramway::Core::ApplicationForms::SubmitHelper
|
|
4
4
|
def submit(params)
|
5
5
|
if params
|
6
6
|
params.each { |key, value| send("#{key}=", value) }
|
7
|
-
|
7
|
+
result = save
|
8
|
+
result.tap do
|
9
|
+
collecting_associations_errors unless result
|
10
|
+
end
|
8
11
|
else
|
9
12
|
Tramway::Error.raise_error(:tramway, :core, :application_form, :submit, :params_should_not_be_nil)
|
10
13
|
end
|
@@ -24,7 +24,7 @@ module Tramway::Core::ExtendableFormsHelpers::ClassBuilder
|
|
24
24
|
field = property[1][:object]
|
25
25
|
define_file_property_assignment_method property, field
|
26
26
|
else
|
27
|
-
next unless property[1][:validates].present?
|
27
|
+
# next unless property[1][:validates].present?
|
28
28
|
|
29
29
|
define_assignment_method property
|
30
30
|
end
|
@@ -9,8 +9,12 @@ module Tramway::Core::ExtendableFormsHelpers::MorePropertiesHelper
|
|
9
9
|
|
10
10
|
def define_assignment_method(property)
|
11
11
|
define_method "#{property[0]}=" do |value|
|
12
|
-
property[1][:validates].
|
13
|
-
|
12
|
+
if property[1][:validates].present?
|
13
|
+
property[1][:validates].each do |pair|
|
14
|
+
make_validates property[0], pair, value
|
15
|
+
end
|
16
|
+
else
|
17
|
+
model.values.merge property[0] => value
|
14
18
|
end
|
15
19
|
end
|
16
20
|
end
|
@@ -5,14 +5,14 @@ module Tramway::Core::ExtendableFormsHelpers::Submit::ClassHelpers
|
|
5
5
|
define_method 'submit' do |params|
|
6
6
|
model.values ||= {}
|
7
7
|
extended_params = extended(simple_properties, more_properties, params)
|
8
|
-
params
|
9
|
-
method_name = "#{key}="
|
10
|
-
send method_name, value if respond_to?(method_name)
|
11
|
-
end
|
8
|
+
every_attribute_set params
|
12
9
|
model.values = extended_params.reduce(model.values) do |hash, pair|
|
13
10
|
hash.merge! pair[0] => pair[1]
|
14
11
|
end
|
15
|
-
|
12
|
+
|
13
|
+
return unless model.errors.empty?
|
14
|
+
|
15
|
+
save_in_submit params
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -4,4 +4,18 @@ module Tramway::Core::ExtendableFormsHelpers::Submit::ObjectHelpers
|
|
4
4
|
def extended(simple_properties, more_properties, params)
|
5
5
|
params.except(*simple_properties.keys).except(*jsonb_ignored_properties(more_properties)).permit!.to_h
|
6
6
|
end
|
7
|
+
|
8
|
+
def every_attribute_set(params)
|
9
|
+
params.each do |key, value|
|
10
|
+
method_name = "#{key}="
|
11
|
+
send(method_name, value) if respond_to?(method_name)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def save_in_submit(_params)
|
16
|
+
result = save
|
17
|
+
result.tap do
|
18
|
+
collecting_associations_errors unless result
|
19
|
+
end
|
20
|
+
end
|
7
21
|
end
|
@@ -46,11 +46,16 @@ class Tramway::Core::ApplicationRecord < ActiveRecord::Base
|
|
46
46
|
def uploader(attribute_name, uploader_name, **options)
|
47
47
|
mount_uploader attribute_name, "#{uploader_name.to_s.camelize}Uploader".constantize
|
48
48
|
@versions = options[:versions] if uploader_name == :photo
|
49
|
+
@extensions = options[:extensions]
|
49
50
|
end
|
50
51
|
|
51
52
|
def photo_versions
|
52
53
|
@versions
|
53
54
|
end
|
55
|
+
|
56
|
+
def file_extensions
|
57
|
+
@extensions
|
58
|
+
end
|
54
59
|
end
|
55
60
|
|
56
61
|
# FIXME: detect inhertited locales
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class FileUploader < ApplicationUploader
|
4
|
-
def
|
5
|
-
%w[pdf doc docx xls csv xlsx jpg svg png jpeg gif]
|
4
|
+
def extension_whitelist
|
5
|
+
model.class.file_extensions || %w[pdf doc docx xls csv xlsx jpg svg png jpeg gif]
|
6
6
|
end
|
7
7
|
end
|
@@ -4,7 +4,7 @@ class PhotoUploader < ApplicationUploader
|
|
4
4
|
include ImageDefaults
|
5
5
|
|
6
6
|
def default_url
|
7
|
-
ActionController::Base.helpers.asset_path('
|
7
|
+
ActionController::Base.helpers.asset_path('mona_lisa_from_prado_square.png')
|
8
8
|
end
|
9
9
|
|
10
10
|
def url
|
@@ -16,10 +16,6 @@ class PhotoUploader < ApplicationUploader
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
def present?
|
20
|
-
super && width.present? && height.present?
|
21
|
-
end
|
22
|
-
|
23
19
|
version :medium, if: :medium_version_is_needed? do
|
24
20
|
process resize_to_fill: [400, 400]
|
25
21
|
end
|
data/lib/tramway/core/version.rb
CHANGED
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:
|
4
|
+
version: 1.18.1
|
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-04-
|
12
|
+
date: 2020-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: audited
|