glib-web 3.24.1 → 3.24.3
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/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
         |