brick 1.0.116 → 1.0.118

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: b515113ca31f4e0ad1a13e90df981c411e96c4a93507012876c9b2f10e76e68b
4
- data.tar.gz: e23d63fe9fbbaaacd20d9646c382e914dfa46cfa61a8a504aaee9f3f6352d849
3
+ metadata.gz: bc284b8783ca27862ff567079ba680a238690e3779a57d705ee67a54ed016ab2
4
+ data.tar.gz: 812044a88cff33dbf4fe7dbfa37a80e91b1b1a94980091590f4665a123529e80
5
5
  SHA512:
6
- metadata.gz: 78fcea6b98fae7cbb0496a55a824021f4accf8c75eaf3680696333000a90854dda52783cd14a67ee7dcb91f3a48cef871ba4e3ea037f3dbec42f31c1bb485a25
7
- data.tar.gz: a1191c8adfd3d6dbd8393e85c4bb7857a030db449891e744ac6bc3ea7f9f9cae5303987143f02892374fd088528463aacc1b06c9c4541560a0df0ded1dafe1e5
6
+ metadata.gz: 9a5f82a5956b40beeaa8aeca2861672561ea552b3b21cb85ebf9b426a31bdbd4025f4c047131ae962cdefb31378c8845c9bea947a50dfc34cf497cd9b68ae6b9
7
+ data.tar.gz: 83e1c1399045dc67d6c5dcd98347d2c84a7dec4ac474b5cc09da43b86ce21859d01204844be75d6764a5653c7ea1c220f3887835d07f703c789a82b6311bfad0
@@ -279,7 +279,7 @@ module ActiveRecord
279
279
  end
280
280
 
281
281
  def self.brick_import_template
282
- template = constants.include?(:IMPORT_TEMPLATE) ? self::IMPORT_TEMPLATE : suggest_template(false, false, 0)
282
+ template = constants.include?(:IMPORT_TEMPLATE) ? self::IMPORT_TEMPLATE : suggest_template(0, false, true)
283
283
  # Add the primary key to the template as being unique (unless it's already there)
284
284
  template[:uniques] = [pk = primary_key.to_sym]
285
285
  template[:all].unshift(pk) unless template[:all].include?(pk)
@@ -1034,18 +1034,19 @@ Module.class_exec do
1034
1034
 
1035
1035
  # AVO Resource
1036
1036
  elsif base_module == Object && Object.const_defined?('Avo') && requested.end_with?('Resource') &&
1037
- ['MotorResource'].exclude?(requested) # Expect that anything called MotorResource could be from that administrative gem
1038
- if (model = Object.const_get(requested[0..-9]))
1037
+ # Expect that anything called MotorResource or SpinaResource could be from those administrative gems
1038
+ requested.length > 8 && ['MotorResource', 'SpinaResource'].exclude?(requested)
1039
+ if (model = Object.const_get(requested[0..-9])) && model < ActiveRecord::Base
1039
1040
  require 'generators/avo/resource_generator'
1040
1041
  field_generator = Generators::Avo::ResourceGenerator.new([''])
1041
1042
  field_generator.instance_variable_set(:@model, model)
1042
- fields = field_generator.send(:generate_fields).split("\n")
1043
- .each_with_object([]) do |f, s|
1043
+ fields = field_generator.send(:generate_fields)&.split("\n")
1044
+ &.each_with_object([]) do |f, s|
1044
1045
  if (f = f.strip).start_with?('field ')
1045
1046
  f = f[6..-1].split(',')
1046
1047
  s << [f.first[1..-1].to_sym, [f[1][1..-1].split(': :').map(&:to_sym)].to_h]
1047
1048
  end
1048
- end
1049
+ end || []
1049
1050
  built_resource = Class.new(Avo::BaseResource) do |new_resource_class|
1050
1051
  self.model_class = model
1051
1052
  self.title = :brick_descrip
@@ -2385,11 +2386,11 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
2385
2386
  "NOT IN ('information_schema', 'pg_catalog', 'pg_toast', 'heroku_ext',
2386
2387
  'INFORMATION_SCHEMA', 'sys')"
2387
2388
  :
2388
- "= '#{ActiveRecord::Base.connection.current_database.tr("'", "''")}'"}#{"
2389
+ "= '#{ActiveRecord::Base.connection.current_database&.tr("'", "''")}'"}#{"
2389
2390
  AND t.table_schema = COALESCE(current_setting('SEARCH_PATH'), 'public')" if is_postgres && schema }
2390
2391
  -- AND t.table_type IN ('VIEW') -- 'BASE TABLE', 'FOREIGN TABLE'
2391
2392
  AND t.table_name NOT IN ('pg_stat_statements', ?, ?)
2392
- ORDER BY 1, t.table_type DESC, 2, kcu.ordinal_position"
2393
+ ORDER BY 1, t.table_type DESC, 2, c.ordinal_position"
2393
2394
  ActiveRecord::Base.execute_sql(sql, *ar_tables)
2394
2395
  end
2395
2396
 
@@ -76,6 +76,11 @@ function linkSchemas() {
76
76
  [... ev.target.getElementsByTagName(\"SELECT\")].forEach(function (select) {
77
77
  if (select.value === \"^^^brick_NULL^^^\") select.value = null;
78
78
  });
79
+ // Take outer <div> tag off the HTML being returned by any Trix editor
80
+ [... document.getElementsByTagName(\"TRIX-EDITOR\")].forEach(function (trix) {
81
+ var trixHidden = trix.inputElement;
82
+ if (trixHidden) trixHidden.value = trixHidden.value.slice(5, -6);
83
+ });
79
84
  return true;
80
85
  });
81
86
  });
@@ -215,16 +220,16 @@ function linkSchemas() {
215
220
  TurboFrameWrapperComponent.class_exec do
216
221
  alias _brick_content content
217
222
  def content
218
- # Avo's logo partial fails if there is not a URL helper called exactly "root_path"
219
- # (Finicky line over there is: avo/app/views/avo/partials/_logo.html.erb:1)
220
223
  if ::Brick.instance_variable_get(:@_brick_avo_js) == view_renderer.object_id
221
224
  _brick_content
222
225
  else
223
226
  ::Brick.instance_variable_set(:@_brick_avo_js, view_renderer.object_id)
227
+ # Avo's logo partial fails if there is not a URL helper called exactly "root_path"
228
+ # (Finicky line over there is: avo/app/views/avo/partials/_logo.html.erb:1)
224
229
  unless ::Rails.application.routes.named_routes.names.include?(:root) || ActionView::Base.respond_to?(:root_path)
225
230
  ActionView::Base.class_exec do
226
231
  def root_path
227
- Avo::App.root_path
232
+ Avo.configuration.root_path
228
233
  end
229
234
  end
230
235
  end
@@ -350,6 +355,21 @@ window.addEventListener(\"popstate\", linkSchemas);
350
355
  end
351
356
  end
352
357
  end
358
+ # Build out the main dashboard with default boilerplate if it's missing
359
+ if (namespace = ::ActiveAdmin.application.namespaces.names.first&.to_s) &&
360
+ !Object.const_defined?("#{namespace.camelize}::Dashboard")
361
+ ::ActiveAdmin.register_page "Dashboard" do
362
+ menu priority: 1, label: proc { I18n.t("active_admin.dashboard") }
363
+ content title: proc { I18n.t("active_admin.dashboard") } do
364
+ div class: "blank_slate_container", id: "dashboard_default_message" do
365
+ span class: "blank_slate" do
366
+ span I18n.t("active_admin.dashboard_welcome.welcome")
367
+ small I18n.t("active_admin.dashboard_welcome.call_to_action")
368
+ end
369
+ end
370
+ end
371
+ end
372
+ end
353
373
  end
354
374
 
355
375
  # Forest Admin compatibility
@@ -405,6 +425,32 @@ window.addEventListener(\"popstate\", linkSchemas);
405
425
  end
406
426
  end
407
427
 
428
+ # Unconfigured Mobility gem?
429
+ if Object.const_defined?('Mobility') && Mobility.respond_to?(:translations_class)
430
+ # Find the current defaults
431
+ defs = if Mobility.instance_variable_defined?(:@translations_class)
432
+ ::Mobility.translations_class.defaults
433
+ else
434
+ {}
435
+ end
436
+ # Fill in the blanks for any missing defaults
437
+ ::Mobility.configure do |config|
438
+ config.plugins do
439
+ # Default initializer would also set these:
440
+ # :backend_reader=>true
441
+ # :query=>:i18n
442
+ # :cache=>true
443
+ # :presence=>true
444
+ backend :key_value, type: :string unless defs.key?(:backend)
445
+ reader unless defs.key?(:reader)
446
+ writer unless defs.key?(:writer)
447
+ active_record unless ::Mobility::Plugins.instance_variable_get(:@plugins)&.key?(:active_record)
448
+ fallbacks false unless defs.key?(:fallbacks)
449
+ default nil unless defs.key?(:default)
450
+ end
451
+ end
452
+ end
453
+
408
454
  # ====================================
409
455
  # Dynamically create generic templates
410
456
  # ====================================
@@ -750,6 +796,7 @@ input+svg.revert {
750
796
 
751
797
  <% is_includes_dates = nil
752
798
  is_includes_json = nil
799
+ is_includes_text = nil
753
800
  def is_bcrypt?(val)
754
801
  val.is_a?(String) && val.length == 60 && val.start_with?('$2a$')
755
802
  end
@@ -1554,32 +1601,36 @@ end
1554
1601
  <td>
1555
1602
  <table><tr><td>
1556
1603
  <% dt_pickers = { datetime: 'datetimepicker', timestamp: 'datetimepicker', time: 'timepicker', date: 'datepicker' }
1557
- html_options = {}
1558
- html_options[:class] = 'dimmed' unless val
1559
- is_revert = true
1560
- if bt
1561
- html_options[:prompt] = \"Select #\{bt_name\}\" %>
1562
- <%= f.select k.to_sym, bt[3], { value: val || '^^^brick_NULL^^^' }, html_options %>
1563
- <%= if (bt_obj = bt_class&.find_by(bt_pair[1] => val))
1564
- link_to('⇛', send(\"#\{bt_class.base_class._brick_index(:singular)\}_path\".to_sym, bt_obj.send(bt_class.primary_key.to_sym)), { class: 'show-arrow' })
1565
- elsif val
1566
- \"<span class=\\\"orphan\\\">Orphaned ID: #\{val}</span>\".html_safe
1567
- end %>
1604
+ html_options = {}
1605
+ html_options[:class] = 'dimmed' unless val
1606
+ is_revert = true
1607
+ if bt
1608
+ html_options[:prompt] = \"Select #\{bt_name\}\" %>
1609
+ <%= f.select k.to_sym, bt[3], { value: val || '^^^brick_NULL^^^' }, html_options %>
1610
+ <%= if (bt_obj = bt_class&.find_by(bt_pair[1] => val))
1611
+ link_to('⇛', send(\"#\{bt_class.base_class._brick_index(:singular)\}_path\".to_sym, bt_obj.send(bt_class.primary_key.to_sym)), { class: 'show-arrow' })
1612
+ elsif val
1613
+ \"<span class=\\\"orphan\\\">Orphaned ID: #\{val}</span>\".html_safe
1614
+ end %>
1568
1615
  <% else
1569
- col_type = if ::Brick.config.json_columns[tbl_name]&.include?(k)
1570
- :json
1571
- elsif col&.sql_type == 'geography'
1572
- col.sql_type
1573
- else
1574
- col&.type
1575
- end
1576
- case (col_type ||= col&.sql_type)
1577
- when :string, :text %>
1578
- <% if is_bcrypt?(val) # || .readonly?
1616
+ col_type = if ::Brick.config.json_columns[tbl_name]&.include?(k)
1617
+ :json
1618
+ elsif col&.sql_type == 'geography'
1619
+ col.sql_type
1620
+ else
1621
+ col&.type
1622
+ end
1623
+ case (col_type ||= col&.sql_type)
1624
+ when :string, :text
1625
+ if is_bcrypt?(val) # || .readonly?
1579
1626
  is_revert = false %>
1580
1627
  <%= hide_bcrypt(val, nil, 1000) %>
1581
- <% else %>
1628
+ <% elsif col_type == :string %>
1582
1629
  <%= f.text_field(k.to_sym, html_options) %>
1630
+ <% else
1631
+ is_includes_text = true %>
1632
+ <%= f.hidden_field(k.to_sym, html_options) %>
1633
+ <trix-editor input=\"<%= f.field_id(k) %>\"></trix-editor>
1583
1634
  <% end %>
1584
1635
  <% when :boolean %>
1585
1636
  <%= f.check_box k.to_sym %>
@@ -1724,6 +1775,11 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
1724
1775
  <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdnjs.cloudflare.com/ajax/libs/slim-select/1.27.1/slimselect.min.css\">
1725
1776
  <% end %>
1726
1777
 
1778
+ <% if is_includes_text %>
1779
+ <script src=\"https://cdn.jsdelivr.net/npm/trix@2.0/dist/trix.umd.min.js\"></script>
1780
+ <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/npm/trix@2.0/dist/trix.min.css\">
1781
+ <% end %>
1782
+
1727
1783
  <% # Started with v0.14.4 of vanilla-jsoneditor
1728
1784
  if is_includes_json %>
1729
1785
  <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/npm/vanilla-jsoneditor/themes/jse-theme-default.min.css\">
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 116
8
+ TINY = 118
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.116
4
+ version: 1.0.118
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-25 00:00:00.000000000 Z
11
+ date: 2023-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord