keystone_ui-pages 0.4.0 → 0.4.1

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: 173519c8861b68b91c52a60547f7a7457f34c04319eb528b795b7266a6dd0bfd
4
- data.tar.gz: a1cf640e7b60ff4d6072be38c644fc8396784d35368499414b17bb21616f88a3
3
+ metadata.gz: 20dcd88a9a3339db1695fdf1d3c7597e60c3706f7686a3ca1bf9efeb130e0529
4
+ data.tar.gz: ac4ebbcec505d877acaaaeef407246ef202f1e09884b9d6e7479d09a49faf977
5
5
  SHA512:
6
- metadata.gz: dc73c41700f1444b0cbaf65ee371dac7a68fe3555f6d73bb5e0f88183c2e244bc638d4de7203c0e10eebc444c02f4e49260ff79cd795227c9c4d3472dfbd13e7
7
- data.tar.gz: 74b742f036c877533c267f2787c008c9895ed426d138fe1d63e3edc9ce4dfdb4cdfa6a412e4d7abbe6659203e1c4b0ac482e0d1b5c136e46adc1980eb726fdad
6
+ metadata.gz: 1b7d8e2f3f4be7fbda39dac9e52b9b36824c1b8c5f2906e6502023fe10f6cab2ce5d6da1b355e08ca9abc8b144eb0b6cac580ac5d5c19cc699b3e6f6dd9ff0b0
7
+ data.tar.gz: d50999cf89f1fb712ebeb7c1891dcf00edce95dfab8422115625198568444e3c7e2060a55a474594ec880e5913e6754ced5ea231b7592e5ab27f1340967d42d6
@@ -17,6 +17,7 @@ module KeystoneUi
17
17
 
18
18
  def drawn_version(version, values: {})
19
19
  key = [ "keystone_ui_pages", version.id, Operations.digest(values.to_h.stringify_keys) ]
20
+ @drawn_page_id = version.page_id
20
21
  Rails.cache.fetch(key) { drawn_document(version.document, values: values).to_str }.html_safe
21
22
  end
22
23
 
@@ -79,10 +80,25 @@ module KeystoneUi
79
80
  end
80
81
 
81
82
  def edited_element(element)
83
+ return missing_element(element) unless KeystoneUi::Pages.catalog.find(element["key"])
84
+
82
85
  wrapped_element(element, data: { element_id: element["id"], hidden: hidden?(element) || nil }.compact)
83
86
  end
84
87
 
88
+ def reported_missing(element)
89
+ Rails.error.report(InvalidDocument.new("No element is registered as #{element["key"]}"), handled: true,
90
+ context: { page_id: @drawn_page_id, element_key: element["key"] })
91
+ nil
92
+ end
93
+
94
+ def missing_element(element)
95
+ tag.div("No longer offered: #{element["key"]}", class: "ks-pages-element ks-hint rounded-md border-2 border-dashed border-(--ks-color-border-strong) p-3",
96
+ data: { element_id: element["id"], missing_element: true })
97
+ end
98
+
85
99
  def drawn_element(element)
100
+ return reported_missing(element) unless KeystoneUi::Pages.catalog.find(element["key"])
101
+
86
102
  wrapped_element(element) unless hidden?(element)
87
103
  end
88
104
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module KeystoneUi
4
4
  module Pages
5
- VERSION = "0.4.0"
5
+ VERSION = "0.4.1"
6
6
  end
7
7
  end
@@ -257,8 +257,11 @@ The catalog offers these Keystone UI components by default: `button`,
257
257
 
258
258
  The method must be reachable in the engine's views and in any host view that
259
259
  calls `keystone_ui_page`. A `helper_method` on the base controller covers
260
- both. Leaving out an element that pages already use makes those pages fail
261
- to draw, so search the pages' documents for its key before leaving it out.
260
+ both. A page that holds an element the catalog no longer offers still
261
+ draws its other elements for visitors, marks the missing one in the editor
262
+ as no longer offered, and reports the page's id and the element's key
263
+ through `Rails.error`, so search the pages' documents for its key before
264
+ leaving it out.
262
265
 
263
266
  ## Conventions
264
267
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keystone_ui-pages
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Schneider