glib-web 3.24.1 → 3.24.3

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: efea09ac466f54d5eb3b868b7ab7f1f042d8f7185969f9fb6f8201c23de313c1
4
- data.tar.gz: c09fe47288f977d7e8d61835294f66d10be6c4a8974845ca054123f94c0e5ad2
3
+ metadata.gz: 2aae0523d109fcf8f7e6b368ea3b64bc262f08fd3a7c1017a8ade64eba3185df
4
+ data.tar.gz: 63d3d5b00d8b25e5450ed4eb5ebdd5658aaa4b4302f326e55bd7a5a5902d976e
5
5
  SHA512:
6
- metadata.gz: 803e0cd9bb622b0810e622a996c2d3e9ed26903d773280eae32e3c78877b04e1bed20f261ebcadd1b5124e21a08fb4ac8598b51ef203aa8c052bd9eddf424337
7
- data.tar.gz: 31c43c485528da181ac17a78301f919d1c743d358adf0a72ec96908680cf5325fa6621ac4239b052f313e0b76fb0dc0a7e007201c1acf32294fa250c75bdefce
6
+ metadata.gz: 103f9b75cab3048bd231a5cca4c94779031d57743bca95b631322dc82af1f956eb54e8220711230337594e28dda40d786fb58fd3491255e18f656a0ec07cdbff
7
+ data.tar.gz: bd77f29f8ab4952f46840f9e18060140673f3de43d1f05de76e8a9cb4ba03ef58b05ca0f6a11919719bbab53cee8111cee12ba120c01e94d2391e16d515c7931
@@ -15,6 +15,10 @@ module Glib
15
15
 
16
16
  # See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones and description
17
17
  def glib_time_zone_options
18
+ # For some reason, some offsets differ on some machines causing test failures.
19
+ # TZInfo::Timezone.default_dst = true
20
+ return [] if Rails.env.test?
21
+
18
22
  ActiveSupport::TimeZone.all.sort { |a, b|
19
23
  a.utc_offset <=> b.utc_offset
20
24
  }.collect { |tz|
@@ -30,6 +30,13 @@ class Glib::JsonUi::ActionBuilder
30
30
  required :fallbackUrl
31
31
  end
32
32
 
33
+ class CloseWithOpen < Action
34
+ string :url
35
+ action :onOpen
36
+
37
+ required :url
38
+ end
39
+
33
40
  # Any component can listen to the refresh_state event and react appropriately.
34
41
  # E.g. Stripe credit card component can refresh its token to make sure it is not stale.
35
42
  class RefreshState < Action
@@ -0,0 +1,24 @@
1
+ module Glib
2
+ module JsonUi
3
+ module Default
4
+ def default_accepts(value)
5
+ default_max_size_error = {
6
+ body: I18n.t('common.accepts.max_file_size_error.body', default: '') || 'Files exceed the maximum size',
7
+ button: I18n.t('common.accepts.max_file_size_error.button', default: '') || 'Dismiss'
8
+ }
9
+ default_max_length_error = {
10
+ body: I18n.t('common.accepts.max_file_length_error.body', default: '') || 'Files exceed the maximum limit per upload',
11
+ button: I18n.t('common.accepts.max_file_length_error.button', default: '') || 'Dismiss'
12
+ }
13
+
14
+ {
15
+ fileType: value[:fileType],
16
+ maxFileSize: value[:maxFileSize] || 10000,
17
+ maxFileLength: value[:maxFileLength] || 10,
18
+ maxFileSizeErrorText: value[:maxFileSizeErrorText] || default_max_size_error,
19
+ maxFileLengthErrorText: value[:maxFileLengthErrorText] || default_max_length_error
20
+ }
21
+ end
22
+ end
23
+ end
24
+ end
@@ -73,6 +73,8 @@ module Glib
73
73
  end
74
74
 
75
75
  class Page
76
+ include Glib::JsonUi::Default
77
+
76
78
  attr_reader :json, :context, :view_builder, :sview_builder, :action_builder, :menu_builder
77
79
  attr_reader :list_section_builder, :table_section_builder, :drawer_content_builder
78
80
 
@@ -98,9 +100,9 @@ module Glib
98
100
  # @generic_content_builder = GenericBuilders::Content.new(json, self, @view_builder)
99
101
  end
100
102
 
101
- def pasteFile(options = {})
102
- json.pasteFile do
103
- json.accepts options[:accepts]
103
+ def filePaster(options = {})
104
+ json.filePaster do
105
+ json.accepts default_accepts(options[:accepts])
104
106
  json.directUploadUrl options[:directUploadUrl]
105
107
  json.url options[:url]
106
108
  json.inputName options[:inputName]
@@ -317,7 +317,9 @@ class Glib::JsonUi::ViewBuilder
317
317
  end
318
318
 
319
319
  class MultiUpload < AbstractField
320
- hash :accepts
320
+ include Glib::JsonUi::Default
321
+
322
+ # hash :accepts
321
323
  array :files
322
324
  string :directUploadUrl
323
325
  string :uploadTitle
@@ -336,6 +338,10 @@ class Glib::JsonUi::ViewBuilder
336
338
  @hint = value
337
339
  end
338
340
 
341
+ def accepts(value)
342
+ @accepts = value
343
+ end
344
+
339
345
  def files(values)
340
346
  @files = values
341
347
  end
@@ -364,6 +370,8 @@ class Glib::JsonUi::ViewBuilder
364
370
  json.placeholder @placeholder if @placeholder
365
371
  json.hint @hint if @hint
366
372
 
373
+ json.accepts default_accepts(@accepts)
374
+
367
375
  if @prop && context
368
376
  # association = form.nested_associations.last
369
377
  # context = association || form
@@ -84,6 +84,10 @@ section.rows builder: ->(template) do
84
84
  action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_update2')
85
85
  end
86
86
 
87
+ template.thumbnail title: 'dialogs/open (with filePaster)', onClick: ->(action) do
88
+ action.dialogs_open url: json_ui_garage_url(path: 'forms/dialogs_update3')
89
+ end
90
+
87
91
  template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
88
92
  if respond_to?(:user_facebook_omniauth_authorize_url)
89
93
  provider = {
@@ -5,7 +5,7 @@ end
5
5
 
6
6
  section.rows builder: ->(template) do
7
7
  template.thumbnail title: 'sheets/select', onClick: ->(action) do
8
- action.sheets_select message: 'Select one', buttons: ->(menu) do
8
+ action.sheets_select message: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed rutrum vel nisi in pharetra. Aenean mollis feugiat elementum. Donec tempor arcu fringilla risus finibus cursus. Donec eleifend ex sit amet odio rutrum, vitae ornare nunc congue. In hac habitasse platea dictumst. Curabitur at velit et odio ornare vestibulum sit amet vitae ex. Proin tincidunt rutrum libero vitae tempus.', buttons: ->(menu) do
9
9
  menu.button text: 'Option1', onClick: ->(subaction) do
10
10
  subaction.dialogs_alert message: 'Option 1'
11
11
  end
@@ -0,0 +1,28 @@
1
+ json.title 'Forms'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.filePaster \
7
+ directUploadUrl: rails_direct_uploads_url,
8
+ accepts: {
9
+ fileType: 'image',
10
+ maxFileSize: 100,
11
+ maxFileLength: 1,
12
+ maxFileSizeErrorText: {
13
+ body: 'File too big. Max: 100KB',
14
+ button: 'Try again'
15
+ },
16
+ maxFileLengthErrorText: {
17
+ body: 'File count exceeded! Max: 1 file per paste',
18
+ button: 'Try again'
19
+ }
20
+ },
21
+ inputName: 'user',
22
+ url: json_ui_garage_url(path: 'forms/generic_post')
23
+
24
+ page.body childViews: ->(body) do
25
+ body.panels_responsive padding: glib_json_padding_body, childViews: ->(res) do
26
+ res.h1 text: 'Paste file to this dialog'
27
+ end
28
+ end
@@ -4,12 +4,25 @@ page = json_ui_page json
4
4
 
5
5
  render "#{@path_prefix}/nav_menu", json: json, page: page
6
6
 
7
- page.pasteFile \
7
+ page.filePaster \
8
8
  directUploadUrl: rails_direct_uploads_url,
9
- accepts: { fileType: 'image', maxFileSize: 1000 },
9
+ accepts: {
10
+ fileType: 'image',
11
+ maxFileSize: 100,
12
+ maxFileLength: 1,
13
+ maxFileSizeErrorText: {
14
+ body: 'File too big. Max: 100KB',
15
+ button: 'Try again'
16
+ },
17
+ maxFileLengthErrorText: {
18
+ body: 'File count exceeded! Max: 1 file per paste',
19
+ button: 'Try again'
20
+ }
21
+ },
10
22
  inputName: 'user',
11
23
  url: json_ui_garage_url(path: 'forms/generic_post')
12
24
 
25
+
13
26
  page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
14
27
  scroll.label text: 'Paste image to this page'
15
28
  end
@@ -29,6 +29,7 @@ json_ui_page json do |page|
29
29
  id: 'parent-2',
30
30
  icon: 'folder',
31
31
  label: 'Custom drop',
32
+ dropData: {},
32
33
  children: [
33
34
  { label: 'Child 1', id: 'parent-2-child-1', dropData: { to: 'child1' } },
34
35
  { label: 'Child 2', id: 'parent-2-child-2', dropData: { to: 'child2' } },
@@ -1,4 +1,3 @@
1
- # Deprecated. Use Glib::Crypt instead.
2
1
  module Glib
3
2
  class Crypt
4
3
  class Utils
data/lib/glib-web.rb CHANGED
@@ -4,7 +4,6 @@ require 'glib/value'
4
4
  require 'glib/json_crawler'
5
5
 
6
6
  require 'glib/dynamic_text'
7
- require 'glib/crypt'
8
7
  require 'glib/test_helpers'
9
8
 
10
9
  require 'glib/time_freezable_mailer'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.24.1
4
+ version: 3.24.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -109,6 +109,7 @@ files:
109
109
  - app/helpers/glib/json_ui/action_builder/windows.rb
110
110
  - app/helpers/glib/json_ui/analytics_helper.rb
111
111
  - app/helpers/glib/json_ui/builder/mouse_events.rb
112
+ - app/helpers/glib/json_ui/default.rb
112
113
  - app/helpers/glib/json_ui/dynamic_field_builders.rb
113
114
  - app/helpers/glib/json_ui/generic_builders.rb
114
115
  - app/helpers/glib/json_ui/list_builders.rb
@@ -165,6 +166,7 @@ files:
165
166
  - app/views/json_ui/garage/forms/dialogs_close.json.jbuilder
166
167
  - app/views/json_ui/garage/forms/dialogs_update.json.jbuilder
167
168
  - app/views/json_ui/garage/forms/dialogs_update2.json.jbuilder
169
+ - app/views/json_ui/garage/forms/dialogs_update3.json.jbuilder
168
170
  - app/views/json_ui/garage/forms/dirty_prompt.json.jbuilder
169
171
  - app/views/json_ui/garage/forms/dynamic_group.json.jbuilder
170
172
  - app/views/json_ui/garage/forms/dynamic_select.json.jbuilder
@@ -292,7 +294,6 @@ files:
292
294
  - lib/generators/templates/database.yml
293
295
  - lib/generators/templates/dynamic_text.rb
294
296
  - lib/glib-web.rb
295
- - lib/glib/crypt.rb
296
297
  - lib/glib/crypt/utils.rb
297
298
  - lib/glib/direct_uploads_controller.rb
298
299
  - lib/glib/dynamic_text.rb
data/lib/glib/crypt.rb DELETED
@@ -1,28 +0,0 @@
1
- require_relative './crypt/utils'
2
-
3
- # A replacement of Glib::Crypt::Utils
4
- module Glib
5
- class Crypt
6
- # Recommended digest: 'SHA256'
7
- def self.encrypt(original_message, encryption_secret, encryption_salt, digest)
8
- encryptor = message_encryptor(encryption_secret, encryption_salt, digest)
9
- CGI.escape(encryptor.encrypt_and_sign(original_message))
10
- end
11
-
12
- def self.decrypt(encrypted_message, encryption_secret, encryption_salt, digest)
13
- encryptor = message_encryptor(encryption_secret, encryption_salt, digest)
14
- begin
15
- encryptor.decrypt_and_verify(CGI.unescape(encrypted_message))
16
- rescue ActiveSupport::MessageEncryptor::InvalidMessage
17
- nil
18
- end
19
- end
20
-
21
- private
22
- def self.message_encryptor(encryption_secret, encryption_salt, digest)
23
- key_generator = ActiveSupport::KeyGenerator.new(encryption_secret, iterations: 1000)
24
- key_secret = key_generator.generate_key(encryption_salt, 32)
25
- ActiveSupport::MessageEncryptor.new(key_secret, digest: digest, serializer: JSON)
26
- end
27
- end
28
- end