bullet_train 1.4.4 → 1.4.5

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: 5d073ab349f58c17453f4e4d3f493e97202a56a9c6d521bffe36109f4e78d63b
4
- data.tar.gz: 870e67cb3d4b7562f3fb8faad380bc45d3b0866b9f51bedc808481db82ce61f3
3
+ metadata.gz: 1996b94dbb7fda2db6472e01a23499b91947f4b3faf3a97ac1b5b20630505e3a
4
+ data.tar.gz: 608ea60207cb19ff2c4b73d8b9129ed5d1e3fe2a0190645754b55372132f1c72
5
5
  SHA512:
6
- metadata.gz: 02a859e9c7b3be4b50ede0d7f45bf4fb53614953a5056bfc94511facb63179b56d4b8b94227fdce6bd23bf3af78d4e5d5ccc0d92c89abf6662a6c868f8c7a15d
7
- data.tar.gz: 648560376f7307b66aa2eb52788c82278f5c277e8d34d22f6808d3053216634c5e482fd6b995102af9313c3aed123062764ca89c171eaa5b562475e2c42ec314
6
+ metadata.gz: be8f7010714d24a73dd42ef91530e2d61f20b520bc39ca1444d5cf6881df10869d1836823e2dab378b0b8d12e0bb6a00be201db9c896ddd6242bc067e2522713
7
+ data.tar.gz: 3907fad30d953b8f7e693ec1f3e2bf56917de2fcf0bcbb5e8d8306bdeb7664663408bf013158670f8e55da0428a2313a680446e888cc097b622552ccedfc4865
@@ -1,10 +1,15 @@
1
1
  module Account::UsersHelper
2
+ def photo_url_for_active_storage_attachment attachment, options
3
+ size_details = {resize_to_limit: [options[:width], options[:height]]}
4
+ attachment.representation(size_details)
5
+ end
6
+
2
7
  def profile_photo_for(url: nil, email: nil, first_name: nil, last_name: nil, profile_header: false)
3
8
  size_details = profile_header ? {width: 700, height: 200} : {width: 100, height: 100}
4
9
  size_details[:crop] = :fill
5
10
 
6
11
  if cloudinary_enabled? && !url.blank?
7
- cl_image_path(url, size_details[:width], size_details[:height], size_details[:crop])
12
+ cl_image_path(url, size_details)
8
13
  elsif !url.blank?
9
14
  url + "?" + size_details.to_param
10
15
  else
@@ -38,7 +43,7 @@ module Account::UsersHelper
38
43
  # leaving them in case we have other developers depending on these methods.
39
44
  def profile_header_photo_for(url: nil, email: nil, first_name: nil, last_name: nil)
40
45
  if cloudinary_enabled? && !url.blank?
41
- cl_image_path(url, width: 700, height: 200, crop: :fill)
46
+ cl_image_path(url, {width: 700, height: 200, crop: :fill})
42
47
  elsif !url.blank?
43
48
  url + "?" + {size: 200}.to_param
44
49
  else
@@ -10,11 +10,13 @@
10
10
  </div>
11
11
 
12
12
  <div class="sm:col-span-2">
13
- <% if cloudinary_enabled? %>
14
- <%= render 'shared/fields/cloudinary_image', method: :profile_photo_id %>
15
- <% else %>
16
- <%= render 'shared/fields/file_field', method: :profile_photo %>
17
- <% end %>
13
+ <%
14
+ image_method = :profile_photo
15
+ if cloudinary_enabled?
16
+ image_method = :profile_photo_id
17
+ end
18
+ %>
19
+ <%= render 'shared/fields/image', method: image_method %>
18
20
  </div>
19
21
 
20
22
  <div class="sm:col-span-2">
@@ -81,12 +81,12 @@ When you're including multiple fields, you can DRY up redundant settings (e.g. `
81
81
  <% with_field_settings form: form do %>
82
82
  <%= render 'shared/fields/text_field', method: :text_field_value, options: {autofocus: true} %>
83
83
  <%= render 'shared/fields/buttons', method: :button_value %>
84
- <%= render 'shared/fields/cloudinary_image', method: :cloudinary_image_value %>
84
+ <%= render 'shared/fields/image', method: :cloudinary_image_value %>
85
85
  <% end %>
86
86
  ```
87
87
 
88
88
  ## Field partials that integrate with third-party service providers
89
- - `cloudinary_image` makes it trivial to upload photos and videos to [Cloudinary](https://cloudinary.com) and store their resulting Cloudinary ID as an attribute of the model backing the form. To enable this field partial, sign up for Cloudinary and copy the "Cloudinary URL" they provide you with into your `config/application.yml` as `CLOUDINARY_URL`. If you use our [Heroku app.json](https://github.com/bullet-train-co/bullet_train/blob/main/app.json) to provision your production environment, this will happen in that environment automatically.
89
+ - `image` makes it trivial to upload photos and videos to [Cloudinary](https://cloudinary.com) and store their resulting Cloudinary ID as an attribute of the model backing the form. To enable this field partial, sign up for Cloudinary and copy the "Cloudinary URL" they provide you with into your `config/application.yml` as `CLOUDINARY_URL`. If you use our [Heroku app.json](https://github.com/bullet-train-co/bullet_train/blob/main/app.json) to provision your production environment, this will happen in that environment automatically.
90
90
 
91
91
  ## Yaml Configuration
92
92
  The localization Yaml file (where you configure label and option values for a field) is automatically generated when you run Super Scaffolding for a model. If you haven't done this yet, the localization Yaml file for `Scaffolding::CompletelyConcrete::TangibleThing` serves as a good example. Under `en.scaffolding/completely_concrete/tangible_things.fields` you'll see definitions like this:
@@ -126,7 +126,7 @@ Certain form field partials like `buttons` and `super_select` can also have thei
126
126
  |--------------------------------------------------------|--------------|------------------|-------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
127
127
  | `boolean` | `boolean` | | `assign_boolean` | | |
128
128
  | [`buttons`](/docs/field-partials/buttons.md) | `string` | Optionally | `assign_checkboxes` | | |
129
- | `cloudinary_image` | `string` | | | | |
129
+ | `image` | `string` or `attachment`* | | | | |
130
130
  | `color_picker` | `string` | | | [pickr](https://simonwep.github.io/pickr/) | |
131
131
  | `date_and_time_field` | `datetime` | | | [Date Range Picker](https://www.daterangepicker.com) | |
132
132
  | `date_field` | `date` | | | [Date Range Picker](https://www.daterangepicker.com) | |
@@ -139,9 +139,12 @@ Certain form field partials like `buttons` and `super_select` can also have thei
139
139
  | [`super_select`](/docs/field-partials/super-select.md) | `string` | Optionally | `assign_select_options` | [Select2](https://select2.org) | Provides powerful option search, AJAX search, and multi-select functionality. |
140
140
  | `text_area` | `text` | | | | |
141
141
  | `text_field` | `string` | | | | |
142
- | `number_field` | `integer` | | | | |
142
+ | `number_field` | `integer` | | | | |
143
143
  | `trix_editor` | `text` | | | [Trix](https://github.com/basecamp/trix) | Basic HTML-powered formatting features and support for at-mentions amongst team members. |
144
144
 
145
+ * The data type for `image` fields will vary based on whether you're using Cloudinary or ActiveStorage.
146
+ For Cloudinary you should use `string`, and for ActiveStorage you should use `attachment`.
147
+
145
148
  ## A Note On Data Types
146
149
  Set the data type to `jsonb` whenever passing the `multiple` option to a new attribute.
147
150
  ```
@@ -228,6 +228,46 @@ end
228
228
 
229
229
  Honestly, it's crazy that we got to the point where we can handle this particular use case automatically. It seems simple, but there is so much going on to make this feature work.
230
230
 
231
+ ### 7. Scaffolding image upload attributes
232
+
233
+ Bullet Train comes with two different ways to handle image uploads.
234
+
235
+ * Cloudinary - This option allows your app deployment to be simpler because you don't need to ship any image manipulation libraries. But it does introduce a dependence on a 3rd party service.
236
+ * ActiveStorage - This option doesn't include reliance on a 3rd party service, but you do have to include image manipulation libararies in your deployment process.
237
+
238
+ #### Scaffolding images with Cloudinary
239
+
240
+ When you scaffold your model you need to include a `string` where Cloudinary can store a reference to the image.
241
+
242
+ For instance to scaffold a `Project` model with a `logo` image upload.
243
+
244
+ ```
245
+ rails g model Project team:references name:string logo:string
246
+ ```
247
+
248
+ Then you can use `image` as a field type for super scaffolding:
249
+
250
+ ```
251
+ bin/super-scaffold crud Project Team name:text_field logo:image
252
+ rake db:migrate
253
+ ```
254
+ #### Scaffolding images with ActiveStorage
255
+
256
+ When you scaffold your model you need to generate an `attachment` type attribute.
257
+
258
+ For instance to scaffold a `Project` model with a `logo` image upload.
259
+
260
+ ```
261
+ rails g model Project team:references name:string logo:attachment
262
+ ```
263
+
264
+ Then you can use `image` as a field type for super scaffolding:
265
+
266
+ ```
267
+ bin/super-scaffold crud Project Team name:text_field logo:image
268
+ rake db:migrate
269
+ ```
270
+
231
271
  ## Additional Notes
232
272
 
233
273
  ### `TangibleThing` and `CreativeConcept`
@@ -1,3 +1,3 @@
1
1
  module BulletTrain
2
- VERSION = "1.4.4"
2
+ VERSION = "1.4.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.4
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-19 00:00:00.000000000 Z
11
+ date: 2023-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard