brick 1.0.118 → 1.0.119

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc284b8783ca27862ff567079ba680a238690e3779a57d705ee67a54ed016ab2
4
- data.tar.gz: 812044a88cff33dbf4fe7dbfa37a80e91b1b1a94980091590f4665a123529e80
3
+ metadata.gz: 6dfec2ebe501c46c17a7466bd98a9fb510ce6676f74c9b914da52e789e279036
4
+ data.tar.gz: 803598a5b59f73e81ed94079dd2b7dd55328c5c12de6d6968937b6518b68cef7
5
5
  SHA512:
6
- metadata.gz: 9a5f82a5956b40beeaa8aeca2861672561ea552b3b21cb85ebf9b426a31bdbd4025f4c047131ae962cdefb31378c8845c9bea947a50dfc34cf497cd9b68ae6b9
7
- data.tar.gz: 83e1c1399045dc67d6c5dcd98347d2c84a7dec4ac474b5cc09da43b86ce21859d01204844be75d6764a5653c7ea1c220f3887835d07f703c789a82b6311bfad0
6
+ metadata.gz: 1618ef1ff14f0198d45aa0aafc5ee9e0272c82a886b0129e14cfe6c47fea1cbb55c76f32cf2a98eb93915c68a62275ad53e5ab32621da45b9a7397e2d1f95f3f
7
+ data.tar.gz: f34063a9ebc164bf352d96b1149f1ed501a351c3e786219a29593be13359162c9bb140cf822d9ce1494be9ea43b655afb0422008d6fcc64f59ee7050a1e84072
@@ -1846,11 +1846,12 @@ class Object
1846
1846
 
1847
1847
  instance_variable_set("@#{singular_table_name}".to_sym, (obj = find_obj))
1848
1848
  upd_params = send(params_name_sym)
1849
- if (json_cols = model.columns.select { |c| c.type == :json }.map(&:name)).present?
1849
+ json_overrides = ::Brick.config.json_columns&.fetch(table_name, nil)
1850
+ if (json_cols = model.columns.select { |c| c.type == :json || json_overrides&.include?(c.name) }.map(&:name)).present?
1850
1851
  upd_hash = upd_params.to_h
1851
1852
  json_cols.each do |c|
1852
1853
  begin
1853
- upd_hash[c] = JSON.parse(upd_hash[c]) # At least attempt to turn this into a parsed hash or array object
1854
+ upd_hash[c] = JSON.parse(upd_hash[c].tr('`', '"').gsub('^^br_btick__', '`'))
1854
1855
  rescue
1855
1856
  end
1856
1857
  end
@@ -186,6 +186,21 @@ function linkSchemas() {
186
186
  end
187
187
  end
188
188
 
189
+ # class Fields::TextField
190
+ # alias _original_initialize initialize
191
+ # def initialize(id, **args, &block)
192
+ # if instance_of?(::Avo::Fields::TextField) || instance_of?(::Avo::Fields::TextareaField)
193
+ # args[:format_using] ||= ->(value) do
194
+ # if value.is_a?(String) && value.encoding != Encoding::UTF_8
195
+ # value = value.encode!("UTF-8", invalid: :replace, undef: :replace, replace: "?")
196
+ # end
197
+ # value
198
+ # end
199
+ # end
200
+ # _original_initialize(id, **args, &block)
201
+ # end
202
+ # end
203
+
189
204
  class App
190
205
  class << self
191
206
  alias _brick_eager_load eager_load
@@ -451,6 +466,13 @@ window.addEventListener(\"popstate\", linkSchemas);
451
466
  end
452
467
  end
453
468
 
469
+ # Spina compatibility
470
+ if Object.const_defined?('Spina')
471
+ # Add JSON fields
472
+ (::Brick.config.json_columns['spina_accounts'] ||= []) << 'json_attributes' if ::Spina.const_defined?('Account')
473
+ (::Brick.config.json_columns['spina_pages'] ||= []) << 'json_attributes' if ::Spina.const_defined?('Page')
474
+ end
475
+
454
476
  # ====================================
455
477
  # Dynamically create generic templates
456
478
  # ====================================
@@ -1551,8 +1573,11 @@ end
1551
1573
  # path_options << { '_brick_schema': } if
1552
1574
  # url = send(:#\{model._brick_index(:singular)}_path, obj.#{pk})
1553
1575
  options = {}
1554
- options[:url] = send(\"#\{#{model_name}._brick_index(:singular)}_path\".to_sym, obj) if ::Brick.config.path_prefix
1555
- %>
1576
+ if ::Brick.config.path_prefix
1577
+ path_helper = obj.new_record? ? #{model_name}._brick_index : #{model_name}._brick_index(:singular)
1578
+ options[:url] = send(\"#\{path_helper}_path\".to_sym, obj)
1579
+ end
1580
+ %>
1556
1581
  <br><br>
1557
1582
  <%= form_for(obj.becomes(#{model_name}), options) do |f| %>
1558
1583
  <table class=\"shadow\">
@@ -1666,10 +1691,17 @@ end
1666
1691
  <% when :primary_key
1667
1692
  is_revert = false %>
1668
1693
  <% when :json
1669
- is_includes_json = true %>
1694
+ is_includes_json = true
1695
+ if val.is_a?(String)
1696
+ val_str = val
1697
+ else
1698
+ eheij = ActiveSupport::JSON::Encoding.escape_html_entities_in_json
1699
+ ActiveSupport::JSON::Encoding.escape_html_entities_in_json = false if eheij
1700
+ val_str = val.to_json
1701
+ ActiveSupport::JSON::Encoding.escape_html_entities_in_json = eheij
1702
+ end %>
1670
1703
  <%= # Because there are so danged many quotes in JSON, escape them specially by converting to backticks.
1671
1704
  # (and previous to this, escape backticks with our own goofy code of ^^br_btick__ )
1672
- val_str = val.is_a?(String) ? val : val.to_json # Clean up bogus JSON if necessary
1673
1705
  json_field = f.hidden_field k.to_sym, { class: 'jsonpicker', value: val_str.gsub('`', '^^br_btick__').tr('\"', '`').html_safe } %>
1674
1706
  <div id=\"_br_json_<%= f.field_id(k) %>\"></div>
1675
1707
  <% else %>
@@ -1797,7 +1829,7 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
1797
1829
  onChange: (function (inp2) {
1798
1830
  return function (updatedContent, previousContent, contentErrors, patchResult) {
1799
1831
  // console.log('onChange', updatedContent.json, updatedContent.text);
1800
- inp2.value = updatedContent.text || JSON.stringify(updatedContent.json);
1832
+ inp2.value = (updatedContent.text || JSON.stringify(updatedContent.json)).replace(/`/g, \"\\^\\^br_btick__\").replace(/\"/g, '`');
1801
1833
  };
1802
1834
  })(inp)
1803
1835
  }
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 118
8
+ TINY = 119
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.118
4
+ version: 1.0.119
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-03-03 00:00:00.000000000 Z
11
+ date: 2023-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord