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 +4 -4
- data/lib/brick/extensions.rb +9 -8
- data/lib/brick/frameworks/rails/engine.rb +81 -25
- data/lib/brick/version_number.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc284b8783ca27862ff567079ba680a238690e3779a57d705ee67a54ed016ab2
|
4
|
+
data.tar.gz: 812044a88cff33dbf4fe7dbfa37a80e91b1b1a94980091590f4665a123529e80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a5f82a5956b40beeaa8aeca2861672561ea552b3b21cb85ebf9b426a31bdbd4025f4c047131ae962cdefb31378c8845c9bea947a50dfc34cf497cd9b68ae6b9
|
7
|
+
data.tar.gz: 83e1c1399045dc67d6c5dcd98347d2c84a7dec4ac474b5cc09da43b86ce21859d01204844be75d6764a5653c7ea1c220f3887835d07f703c789a82b6311bfad0
|
data/lib/brick/extensions.rb
CHANGED
@@ -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(
|
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
|
-
|
1038
|
-
|
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)
|
1043
|
-
|
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
|
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,
|
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
|
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
|
-
|
1558
|
-
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
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
|
-
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
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
|
-
<%
|
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\">
|
data/lib/brick/version_number.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2023-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|