glib-web 0.5.71 → 0.5.72
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/channels/glib/channel/is_typing_channel.rb +34 -34
- data/app/channels/glib/channel/online_channel.rb +36 -36
- data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
- data/app/controllers/concerns/glib/auth/policy.rb +148 -148
- data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
- data/app/controllers/concerns/glib/json/libs.rb +149 -149
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
- data/app/controllers/concerns/glib/json/transformation.rb +11 -11
- data/app/controllers/concerns/glib/json/traversal.rb +92 -92
- data/app/controllers/concerns/glib/json/ui.rb +88 -88
- data/app/controllers/concerns/glib/json/validation.rb +13 -13
- data/app/controllers/glib/home_controller.rb +54 -54
- data/app/helpers/glib/app_feature_support_helper.rb +16 -16
- data/app/helpers/glib/dynamic_images_helper.rb +55 -55
- data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
- data/app/helpers/glib/enum_helper.rb +18 -8
- data/app/helpers/glib/forms_helper.rb +15 -15
- data/app/helpers/glib/json_ui/abstract_builder.rb +309 -309
- data/app/helpers/glib/json_ui/action_builder.rb +140 -140
- data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
- data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
- data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
- data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
- data/app/helpers/glib/json_ui/action_builder/windows.rb +33 -33
- data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
- data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
- data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
- data/app/helpers/glib/json_ui/list_builders.rb +110 -110
- data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
- data/app/helpers/glib/json_ui/page_helper.rb +221 -221
- data/app/helpers/glib/json_ui/response_helper.rb +25 -25
- data/app/helpers/glib/json_ui/split_builders.rb +32 -32
- data/app/helpers/glib/json_ui/styling_helper.rb +55 -55
- data/app/helpers/glib/json_ui/table_builders.rb +74 -74
- data/app/helpers/glib/json_ui/view_builder.rb +240 -240
- data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
- data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
- data/app/helpers/glib/json_ui/view_builder/fields.rb +278 -279
- data/app/helpers/glib/json_ui/view_builder/panels.rb +256 -256
- data/app/helpers/glib/urls_helper.rb +12 -12
- data/app/models/glib/active_storage/attachment.rb +9 -9
- data/app/models/glib/active_storage/blob.rb +9 -9
- data/app/models/glib/application_record.rb +18 -18
- data/app/models/glib/dynamic_text_record.rb +9 -9
- data/app/models/glib/text.rb +95 -95
- data/app/policies/glib/application_policy.rb +161 -161
- data/app/validators/email_typo_validator.rb +38 -38
- data/app/validators/email_validator.rb +7 -7
- data/app/validators/url_validator.rb +20 -20
- data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
- data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
- data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
- data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
- data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
- data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
- data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
- data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
- data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
- data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
- data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
- data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
- data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
- data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
- data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
- data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
- data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +24 -22
- data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
- data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -37
- data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
- data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
- data/app/views/json_ui/garage/forms/index.json.jbuilder +113 -113
- data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
- data/app/views/json_ui/garage/forms/online_participant1.json.jbuilder +25 -25
- data/app/views/json_ui/garage/forms/online_participant2.json.jbuilder +25 -25
- data/app/views/json_ui/garage/forms/pickers.json.jbuilder +81 -81
- data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
- data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
- data/app/views/json_ui/garage/forms/selects.json.jbuilder +91 -84
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
- data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
- data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
- data/app/views/json_ui/garage/forms/timers.json.jbuilder +120 -120
- data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
- data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
- data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
- data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
- data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
- data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
- data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
- data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
- data/app/views/json_ui/garage/lists/index.json.jbuilder +38 -38
- data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
- data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
- data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -114
- data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
- data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
- data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
- data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
- data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
- data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
- data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
- data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
- data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
- data/app/views/json_ui/garage/panels/flow.json.jbuilder +59 -59
- data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
- data/app/views/json_ui/garage/panels/index.json.jbuilder +138 -134
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
- data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
- data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
- data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -0
- data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
- data/app/views/json_ui/garage/panels/web.json.jbuilder +15 -15
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
- data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
- data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
- data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
- data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
- data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
- data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
- data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
- data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
- data/app/views/json_ui/garage/views/controls.json.jbuilder +37 -37
- data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
- data/app/views/json_ui/garage/views/icons.json.jbuilder +15 -14
- data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
- data/app/views/json_ui/garage/views/index.json.jbuilder +67 -67
- data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
- data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
- data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
- data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
- data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
- data/app/views/json_ui/garage/views/texts.json.jbuilder +35 -35
- data/app/views/layouts/json_ui/renderer.html.erb +35 -35
- data/config/routes.rb +7 -7
- data/lib/generators/glib/install_generator.rb +24 -24
- data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
- data/lib/generators/templates/database.yml +107 -107
- data/lib/generators/templates/dynamic_text.rb +2 -2
- data/lib/glib-web.rb +9 -9
- data/lib/glib/crypt/utils.rb +26 -26
- data/lib/glib/dynamic_text/config.rb +21 -21
- data/lib/glib/engine.rb +7 -7
- data/lib/glib/json_crawler.rb +11 -11
- data/lib/glib/json_crawler/action_crawler.rb +23 -23
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
- data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
- data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
- data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
- data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
- data/lib/glib/json_crawler/coverage.rb +20 -20
- data/lib/glib/json_crawler/http.rb +120 -120
- data/lib/glib/json_crawler/router.rb +98 -98
- data/lib/glib/mailer_tester.rb +36 -36
- data/lib/glib/test_helpers.rb +52 -52
- data/lib/glib/value.rb +7 -7
- data/lib/glib/version.rb +5 -5
- data/lib/tasks/db.rake +95 -95
- metadata +3 -3
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
class EmailTypoValidator < ActiveModel::EachValidator
|
|
2
|
-
COMMON_FORMAT = {
|
|
3
|
-
'\.\.' => '.',
|
|
4
|
-
'\.con\z' => '.com',
|
|
5
|
-
'\.coj\z' => '.com',
|
|
6
|
-
'\.vom\z' => '.com',
|
|
7
|
-
'\.xom\z' => '.com',
|
|
8
|
-
'\.com[a-z]\z' => '.com',
|
|
9
|
-
'\.con\.' => '.com.',
|
|
10
|
-
'\.orf\z' => '.org',
|
|
11
|
-
'\.orf\.' => '.org.',
|
|
12
|
-
'@hitmail\.' => '@hotmail.',
|
|
13
|
-
'@htomail\.' => '@hotmail.',
|
|
14
|
-
'@hotnail\.' => '@hotmail.',
|
|
15
|
-
'@hotmil\.' => '@hotmail.',
|
|
16
|
-
'@hotmal\.' => '@hotmail.',
|
|
17
|
-
'@hoymail\.' => '@hotmail.',
|
|
18
|
-
'@hormail\.' => '@hotmail.',
|
|
19
|
-
'@hotmsil\.' => '@hotmail.',
|
|
20
|
-
'@gail\.' => '@gmail.',
|
|
21
|
-
'@gnail\.' => '@gmail.',
|
|
22
|
-
'@gmil\.' => '@gmail.',
|
|
23
|
-
'@gmal\.' => '@gmail.',
|
|
24
|
-
'@gmai\.' => '@gmail.',
|
|
25
|
-
'@yahho\.' => '@yahoo.',
|
|
26
|
-
'@yaho\.' => '@yahoo.',
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
def validate_each(record, attribute, value)
|
|
30
|
-
COMMON_FORMAT.keys.each do |format_key|
|
|
31
|
-
regex = Regexp.new(format_key)
|
|
32
|
-
if match = regex.match(value)
|
|
33
|
-
record.errors.add(attribute, "Invalid, replace #{match[0]} with #{COMMON_FORMAT[format_key]}")
|
|
34
|
-
break
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
1
|
+
class EmailTypoValidator < ActiveModel::EachValidator
|
|
2
|
+
COMMON_FORMAT = {
|
|
3
|
+
'\.\.' => '.',
|
|
4
|
+
'\.con\z' => '.com',
|
|
5
|
+
'\.coj\z' => '.com',
|
|
6
|
+
'\.vom\z' => '.com',
|
|
7
|
+
'\.xom\z' => '.com',
|
|
8
|
+
'\.com[a-z]\z' => '.com',
|
|
9
|
+
'\.con\.' => '.com.',
|
|
10
|
+
'\.orf\z' => '.org',
|
|
11
|
+
'\.orf\.' => '.org.',
|
|
12
|
+
'@hitmail\.' => '@hotmail.',
|
|
13
|
+
'@htomail\.' => '@hotmail.',
|
|
14
|
+
'@hotnail\.' => '@hotmail.',
|
|
15
|
+
'@hotmil\.' => '@hotmail.',
|
|
16
|
+
'@hotmal\.' => '@hotmail.',
|
|
17
|
+
'@hoymail\.' => '@hotmail.',
|
|
18
|
+
'@hormail\.' => '@hotmail.',
|
|
19
|
+
'@hotmsil\.' => '@hotmail.',
|
|
20
|
+
'@gail\.' => '@gmail.',
|
|
21
|
+
'@gnail\.' => '@gmail.',
|
|
22
|
+
'@gmil\.' => '@gmail.',
|
|
23
|
+
'@gmal\.' => '@gmail.',
|
|
24
|
+
'@gmai\.' => '@gmail.',
|
|
25
|
+
'@yahho\.' => '@yahoo.',
|
|
26
|
+
'@yaho\.' => '@yahoo.',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def validate_each(record, attribute, value)
|
|
30
|
+
COMMON_FORMAT.keys.each do |format_key|
|
|
31
|
+
regex = Regexp.new(format_key)
|
|
32
|
+
if match = regex.match(value)
|
|
33
|
+
record.errors.add(attribute, "Invalid, replace #{match[0]} with #{COMMON_FORMAT[format_key]}")
|
|
34
|
+
break
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
class EmailValidator < ActiveModel::EachValidator
|
|
2
|
-
def validate_each(record, attribute, value)
|
|
3
|
-
unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
|
|
4
|
-
record.errors.add(attribute, :invalid)
|
|
5
|
-
end
|
|
6
|
-
end
|
|
7
|
-
end
|
|
1
|
+
class EmailValidator < ActiveModel::EachValidator
|
|
2
|
+
def validate_each(record, attribute, value)
|
|
3
|
+
unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
|
|
4
|
+
record.errors.add(attribute, :invalid)
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
end
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
class UrlValidator < ActiveModel::EachValidator
|
|
2
|
-
def validate_each(record, attribute, value)
|
|
3
|
-
schemes = ['https', 'http']
|
|
4
|
-
|
|
5
|
-
begin
|
|
6
|
-
uri = URI.parse(value)
|
|
7
|
-
host = uri && uri.host
|
|
8
|
-
scheme = uri && uri.scheme
|
|
9
|
-
|
|
10
|
-
valid_scheme = host && scheme && schemes.include?(scheme)
|
|
11
|
-
valid_raw_url = scheme && value.match?(URI::regexp([scheme]))
|
|
12
|
-
|
|
13
|
-
unless valid_raw_url && valid_scheme
|
|
14
|
-
record.errors.add(attribute, :invalid)
|
|
15
|
-
end
|
|
16
|
-
rescue URI::InvalidURIError
|
|
17
|
-
record.errors.add(attribute, :invalid)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
1
|
+
class UrlValidator < ActiveModel::EachValidator
|
|
2
|
+
def validate_each(record, attribute, value)
|
|
3
|
+
schemes = ['https', 'http']
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
uri = URI.parse(value)
|
|
7
|
+
host = uri && uri.host
|
|
8
|
+
scheme = uri && uri.scheme
|
|
9
|
+
|
|
10
|
+
valid_scheme = host && scheme && schemes.include?(scheme)
|
|
11
|
+
valid_raw_url = scheme && value.match?(URI::regexp([scheme]))
|
|
12
|
+
|
|
13
|
+
unless valid_raw_url && valid_scheme
|
|
14
|
+
record.errors.add(attribute, :invalid)
|
|
15
|
+
end
|
|
16
|
+
rescue URI::InvalidURIError
|
|
17
|
+
record.errors.add(attribute, :invalid)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
if local_assigns[:top_nav] || json_ui_app_is_web?
|
|
3
|
-
page.leftDrawer content: ->(drawer) do
|
|
4
|
-
drawer.header childViews: ->(header) do
|
|
5
|
-
header.button text: 'App', styleClasses: ['link', 'logo'], onClick: ->(action) do
|
|
6
|
-
action.windows_open url: root_url
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
drawer.rows builder: ->(menu) do
|
|
11
|
-
|
|
12
|
-
menu.button text: 'Pages', onClick: ->(action) do
|
|
13
|
-
action.windows_open url: json_ui_garage_url(path: 'pages/index')
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
menu.button text: 'Panels', onClick: ->(action) do
|
|
17
|
-
action.windows_open url: json_ui_garage_url(path: 'panels/index')
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
menu.button text: 'Lists', onClick: ->(action) do
|
|
21
|
-
action.windows_open url: json_ui_garage_url(path: 'lists/index')
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
menu.button text: 'Forms', onClick: ->(action) do
|
|
25
|
-
action.windows_open url: json_ui_garage_url(path: 'forms/index')
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
menu.button text: 'Views', onClick: ->(action) do
|
|
29
|
-
action.windows_open url: json_ui_garage_url(path: 'views/index')
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
menu.button text: 'Actions', onClick: ->(action) do
|
|
33
|
-
action.windows_open url: json_ui_garage_url(path: 'actions/index')
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
menu.button text: 'Tables (Web Only)', onClick: ->(action) do
|
|
37
|
-
action.windows_open url: json_ui_garage_url(path: 'tables/index')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
menu.button text: 'Services', onClick: ->(action) do
|
|
41
|
-
action.windows_open url: json_ui_garage_url(path: 'services/index')
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
menu.divider
|
|
45
|
-
menu.label text: 'Misc Menu'
|
|
46
|
-
|
|
47
|
-
menu.button icon: 'notifications', text: 'Notifications', onClick: ->(action) do
|
|
48
|
-
action.windows_open url: json_ui_garage_url(path: 'notifications/index')
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
menu.button icon: 'list', text: 'UI Elements', onClick: ->(action) do
|
|
52
|
-
action.windows_open url: json_ui_garage_url
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
menu.button icon: 'refresh', text: 'Reload', onClick: ->(action) do
|
|
56
|
-
action.windows_reload
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
menu.button icon: { name: 'zoom_in', badge: '!' }, text: 'Diagnostics', onClick: ->(action) do
|
|
60
|
-
action.dialogs_alert message: %{
|
|
61
|
-
Bundle ID: #{json_ui_app_bundle_id || '<unknown>'}
|
|
62
|
-
App Version: #{json_ui_app_build_version || '<unknown>'}
|
|
63
|
-
Device OS: #{json_ui_app_device_os}
|
|
64
|
-
}
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
end
|
|
1
|
+
|
|
2
|
+
if local_assigns[:top_nav] || json_ui_app_is_web?
|
|
3
|
+
page.leftDrawer content: ->(drawer) do
|
|
4
|
+
drawer.header childViews: ->(header) do
|
|
5
|
+
header.button text: 'App', styleClasses: ['link', 'logo'], onClick: ->(action) do
|
|
6
|
+
action.windows_open url: root_url
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
drawer.rows builder: ->(menu) do
|
|
11
|
+
|
|
12
|
+
menu.button text: 'Pages', onClick: ->(action) do
|
|
13
|
+
action.windows_open url: json_ui_garage_url(path: 'pages/index')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
menu.button text: 'Panels', onClick: ->(action) do
|
|
17
|
+
action.windows_open url: json_ui_garage_url(path: 'panels/index')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
menu.button text: 'Lists', onClick: ->(action) do
|
|
21
|
+
action.windows_open url: json_ui_garage_url(path: 'lists/index')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
menu.button text: 'Forms', onClick: ->(action) do
|
|
25
|
+
action.windows_open url: json_ui_garage_url(path: 'forms/index')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
menu.button text: 'Views', onClick: ->(action) do
|
|
29
|
+
action.windows_open url: json_ui_garage_url(path: 'views/index')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
menu.button text: 'Actions', onClick: ->(action) do
|
|
33
|
+
action.windows_open url: json_ui_garage_url(path: 'actions/index')
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
menu.button text: 'Tables (Web Only)', onClick: ->(action) do
|
|
37
|
+
action.windows_open url: json_ui_garage_url(path: 'tables/index')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
menu.button text: 'Services', onClick: ->(action) do
|
|
41
|
+
action.windows_open url: json_ui_garage_url(path: 'services/index')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
menu.divider
|
|
45
|
+
menu.label text: 'Misc Menu'
|
|
46
|
+
|
|
47
|
+
menu.button icon: 'notifications', text: 'Notifications', onClick: ->(action) do
|
|
48
|
+
action.windows_open url: json_ui_garage_url(path: 'notifications/index')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
menu.button icon: 'list', text: 'UI Elements', onClick: ->(action) do
|
|
52
|
+
action.windows_open url: json_ui_garage_url
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
menu.button icon: 'refresh', text: 'Reload', onClick: ->(action) do
|
|
56
|
+
action.windows_reload
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
menu.button icon: { name: 'zoom_in', badge: '!' }, text: 'Diagnostics', onClick: ->(action) do
|
|
60
|
+
action.dialogs_alert message: %{
|
|
61
|
+
Bundle ID: #{json_ui_app_bundle_id || '<unknown>'}
|
|
62
|
+
App Version: #{json_ui_app_build_version || '<unknown>'}
|
|
63
|
+
Device OS: #{json_ui_app_device_os}
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
|
|
2
|
-
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
-
header.h3 text: 'Dialogs'
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
section.rows builder: ->(template) do
|
|
7
|
-
template.thumbnail title: 'dialogs/alert', onClick: ->(action) do
|
|
8
|
-
action.dialogs_alert message: 'This is an alert dialog', onClose: ->(action) do
|
|
9
|
-
action.snackbars_alert message: 'Closed'
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# markdown = '# h1 Heading' + "\n" +
|
|
14
|
-
# '## h2 Heading' + "\n" +
|
|
15
|
-
# '### h3 Heading' + "\n" +
|
|
16
|
-
# '#### h4 Heading' + "\n" +
|
|
17
|
-
# '##### h5 Heading' + "\n" +
|
|
18
|
-
# '###### h6 Heading' + "\n" +
|
|
19
|
-
# "\n" +
|
|
20
|
-
# '## Emphasis' + "\n" +
|
|
21
|
-
# "\n" +
|
|
22
|
-
# '**This is bold text**' + "\n" +
|
|
23
|
-
# "\n" +
|
|
24
|
-
# '__This is bold text__' + "\n" +
|
|
25
|
-
# "\n" +
|
|
26
|
-
# '*This is italic text*' + "\n" +
|
|
27
|
-
# "\n" +
|
|
28
|
-
# '_This is italic text_' + "\n" +
|
|
29
|
-
# "\n" +
|
|
30
|
-
# '~~Strikethrough~~' + "\n"
|
|
31
|
-
# template.thumbnail title: 'dialogs/alert with markdown', onClick: ->(action) do
|
|
32
|
-
# action.dialogs_alert message: markdown, message_format: 'markdown'
|
|
33
|
-
# end
|
|
34
|
-
|
|
35
|
-
# template.thumbnail title: 'dialogs/confirm (Experimental)', onClick: ->(action) do
|
|
36
|
-
# action.dialogs_confirm message: 'This is a confirm dialog', onCancel: ->(action) do
|
|
37
|
-
# action.snackbars_alert message: 'Canceled'
|
|
38
|
-
# end, onConfirm: ->(action) do
|
|
39
|
-
# action.snackbars_alert message: 'Confirmed'
|
|
40
|
-
# end
|
|
41
|
-
# end
|
|
42
|
-
|
|
43
|
-
# TODO: Deprecate
|
|
44
|
-
template.thumbnail title: 'dialogs/option (Deprecated)', onClick: ->(action) do
|
|
45
|
-
# TODO: Rename to `dialogs/menu`
|
|
46
|
-
action.dialogs_options message: 'Select one', buttons: ->(menu) do
|
|
47
|
-
menu.button text: 'Option1', onClick: ->(action) do
|
|
48
|
-
action.dialogs_alert message: 'Option 1'
|
|
49
|
-
end
|
|
50
|
-
menu.button text: 'Option2', onClick: ->(action) do
|
|
51
|
-
action.dialogs_alert message: 'Option 2'
|
|
52
|
-
end
|
|
53
|
-
menu.button text: 'Cancel'
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
markdown = '## Emphasis' + "\n" +
|
|
58
|
-
'**This is bold text**' + "\n" +
|
|
59
|
-
"\n" +
|
|
60
|
-
'*This is italic text*' + "\n" +
|
|
61
|
-
"\n" +
|
|
62
|
-
'~~Strikethrough~~' + "\n"
|
|
63
|
-
template.thumbnail title: 'dialogs/show', onClick: ->(action) do
|
|
64
|
-
action.dialogs_show content: ->(dialog) do
|
|
65
|
-
dialog.body padding: glib_json_padding_body, childViews: ->(body) do
|
|
66
|
-
body.markdown text: markdown
|
|
67
|
-
|
|
68
|
-
body.panels_split width: 'matchParent', content: ->(split) do
|
|
69
|
-
split.right childViews: ->(right) do
|
|
70
|
-
right.button text: 'OK', onClick: ->(subaction) { subaction.dialogs_close }
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
template.thumbnail title: 'dialogs/open', onClick: ->(action) do
|
|
78
|
-
action.dialogs_open url: json_ui_garage_url(path: 'forms/basic', mode: 'dialog')
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
|
|
82
|
-
if respond_to?(:user_facebook_omniauth_authorize_url)
|
|
83
|
-
provider = {
|
|
84
|
-
name: 'facebook',
|
|
85
|
-
webRequestUrl: user_facebook_omniauth_authorize_url(format: nil, _render: nil),
|
|
86
|
-
requestUrl: user_facebook_omniauth_authorize_url(format: nil),
|
|
87
|
-
clientId: Devise.omniauth_configs[:facebook].strategy[:client_id],
|
|
88
|
-
permissions: Devise.omniauth_configs[:facebook].strategy[:scope],
|
|
89
|
-
redirectUrl: user_facebook_omniauth_callback_url(format: nil)
|
|
90
|
-
}
|
|
91
|
-
action.dialogs_oauth provider: provider, providerParamName: 'session[oauth_provider]', callbackUrlParamName: 'session[[oauth_callback_url]', onSuccess: ->(subaction) do
|
|
92
|
-
subaction.http_post url: json_ui_garage_url(path: 'actions/dialogs_oauth_post'), formData: {
|
|
93
|
-
authenticity_token: form_authenticity_token
|
|
94
|
-
}
|
|
95
|
-
end
|
|
96
|
-
else
|
|
97
|
-
action.dialogs_alert message: 'To enable this, set up omniauth using devise'
|
|
98
|
-
# E.g.
|
|
99
|
-
# Add `devise :omniauthable, omniauth_providers: %i[facebook]` to user.rb
|
|
100
|
-
# Add `gem 'omniauth-facebook'` to Gemfile
|
|
101
|
-
# Add `config.omniauth :facebook` to devise.rb
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
1
|
+
|
|
2
|
+
section.header padding: glib_json_padding_list, childViews: ->(header) do
|
|
3
|
+
header.h3 text: 'Dialogs'
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
section.rows builder: ->(template) do
|
|
7
|
+
template.thumbnail title: 'dialogs/alert', onClick: ->(action) do
|
|
8
|
+
action.dialogs_alert message: 'This is an alert dialog', onClose: ->(action) do
|
|
9
|
+
action.snackbars_alert message: 'Closed'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# markdown = '# h1 Heading' + "\n" +
|
|
14
|
+
# '## h2 Heading' + "\n" +
|
|
15
|
+
# '### h3 Heading' + "\n" +
|
|
16
|
+
# '#### h4 Heading' + "\n" +
|
|
17
|
+
# '##### h5 Heading' + "\n" +
|
|
18
|
+
# '###### h6 Heading' + "\n" +
|
|
19
|
+
# "\n" +
|
|
20
|
+
# '## Emphasis' + "\n" +
|
|
21
|
+
# "\n" +
|
|
22
|
+
# '**This is bold text**' + "\n" +
|
|
23
|
+
# "\n" +
|
|
24
|
+
# '__This is bold text__' + "\n" +
|
|
25
|
+
# "\n" +
|
|
26
|
+
# '*This is italic text*' + "\n" +
|
|
27
|
+
# "\n" +
|
|
28
|
+
# '_This is italic text_' + "\n" +
|
|
29
|
+
# "\n" +
|
|
30
|
+
# '~~Strikethrough~~' + "\n"
|
|
31
|
+
# template.thumbnail title: 'dialogs/alert with markdown', onClick: ->(action) do
|
|
32
|
+
# action.dialogs_alert message: markdown, message_format: 'markdown'
|
|
33
|
+
# end
|
|
34
|
+
|
|
35
|
+
# template.thumbnail title: 'dialogs/confirm (Experimental)', onClick: ->(action) do
|
|
36
|
+
# action.dialogs_confirm message: 'This is a confirm dialog', onCancel: ->(action) do
|
|
37
|
+
# action.snackbars_alert message: 'Canceled'
|
|
38
|
+
# end, onConfirm: ->(action) do
|
|
39
|
+
# action.snackbars_alert message: 'Confirmed'
|
|
40
|
+
# end
|
|
41
|
+
# end
|
|
42
|
+
|
|
43
|
+
# TODO: Deprecate
|
|
44
|
+
template.thumbnail title: 'dialogs/option (Deprecated)', onClick: ->(action) do
|
|
45
|
+
# TODO: Rename to `dialogs/menu`
|
|
46
|
+
action.dialogs_options message: 'Select one', buttons: ->(menu) do
|
|
47
|
+
menu.button text: 'Option1', onClick: ->(action) do
|
|
48
|
+
action.dialogs_alert message: 'Option 1'
|
|
49
|
+
end
|
|
50
|
+
menu.button text: 'Option2', onClick: ->(action) do
|
|
51
|
+
action.dialogs_alert message: 'Option 2'
|
|
52
|
+
end
|
|
53
|
+
menu.button text: 'Cancel'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
markdown = '## Emphasis' + "\n" +
|
|
58
|
+
'**This is bold text**' + "\n" +
|
|
59
|
+
"\n" +
|
|
60
|
+
'*This is italic text*' + "\n" +
|
|
61
|
+
"\n" +
|
|
62
|
+
'~~Strikethrough~~' + "\n"
|
|
63
|
+
template.thumbnail title: 'dialogs/show', onClick: ->(action) do
|
|
64
|
+
action.dialogs_show content: ->(dialog) do
|
|
65
|
+
dialog.body padding: glib_json_padding_body, childViews: ->(body) do
|
|
66
|
+
body.markdown text: markdown
|
|
67
|
+
|
|
68
|
+
body.panels_split width: 'matchParent', content: ->(split) do
|
|
69
|
+
split.right childViews: ->(right) do
|
|
70
|
+
right.button text: 'OK', onClick: ->(subaction) { subaction.dialogs_close }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
template.thumbnail title: 'dialogs/open', onClick: ->(action) do
|
|
78
|
+
action.dialogs_open url: json_ui_garage_url(path: 'forms/basic', mode: 'dialog')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
template.thumbnail title: 'dialogs/oauth', onClick: ->(action) do
|
|
82
|
+
if respond_to?(:user_facebook_omniauth_authorize_url)
|
|
83
|
+
provider = {
|
|
84
|
+
name: 'facebook',
|
|
85
|
+
webRequestUrl: user_facebook_omniauth_authorize_url(format: nil, _render: nil),
|
|
86
|
+
requestUrl: user_facebook_omniauth_authorize_url(format: nil),
|
|
87
|
+
clientId: Devise.omniauth_configs[:facebook].strategy[:client_id],
|
|
88
|
+
permissions: Devise.omniauth_configs[:facebook].strategy[:scope],
|
|
89
|
+
redirectUrl: user_facebook_omniauth_callback_url(format: nil)
|
|
90
|
+
}
|
|
91
|
+
action.dialogs_oauth provider: provider, providerParamName: 'session[oauth_provider]', callbackUrlParamName: 'session[[oauth_callback_url]', onSuccess: ->(subaction) do
|
|
92
|
+
subaction.http_post url: json_ui_garage_url(path: 'actions/dialogs_oauth_post'), formData: {
|
|
93
|
+
authenticity_token: form_authenticity_token
|
|
94
|
+
}
|
|
95
|
+
end
|
|
96
|
+
else
|
|
97
|
+
action.dialogs_alert message: 'To enable this, set up omniauth using devise'
|
|
98
|
+
# E.g.
|
|
99
|
+
# Add `devise :omniauthable, omniauth_providers: %i[facebook]` to user.rb
|
|
100
|
+
# Add `gem 'omniauth-facebook'` to Gemfile
|
|
101
|
+
# Add `config.omniauth :facebook` to devise.rb
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|