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 +4 -4
- data/app/helpers/glib/enum_helper.rb +4 -0
- data/app/helpers/glib/json_ui/action_builder/windows.rb +7 -0
- data/app/helpers/glib/json_ui/default.rb +24 -0
- data/app/helpers/glib/json_ui/page_helper.rb +5 -3
- data/app/helpers/glib/json_ui/view_builder/fields.rb +9 -1
- data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +4 -0
- data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +1 -1
- data/app/views/json_ui/garage/forms/dialogs_update3.json.jbuilder +28 -0
- data/app/views/json_ui/garage/pages/paste_file.jbuilder +15 -2
- data/app/views/json_ui/garage/views/treeView.json.jbuilder +1 -0
- data/lib/glib/crypt/utils.rb +0 -1
- data/lib/glib-web.rb +0 -1
- metadata +3 -2
- data/lib/glib/crypt.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2aae0523d109fcf8f7e6b368ea3b64bc262f08fd3a7c1017a8ade64eba3185df
|
4
|
+
data.tar.gz: 63d3d5b00d8b25e5450ed4eb5ebdd5658aaa4b4302f326e55bd7a5a5902d976e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
102
|
-
json.
|
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
|
-
|
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: '
|
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.
|
7
|
+
page.filePaster \
|
8
8
|
directUploadUrl: rails_direct_uploads_url,
|
9
|
-
accepts: {
|
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' } },
|
data/lib/glib/crypt/utils.rb
CHANGED
data/lib/glib-web.rb
CHANGED
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.
|
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
|