blacklight-spotlight 5.3.2 → 6.0.0.rc2
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/README.md +41 -4
- data/Rakefile +1 -2
- data/app/assets/javascripts/spotlight/spotlight.esm.js +2168 -4560
- data/app/assets/javascripts/spotlight/spotlight.esm.js.map +1 -1
- data/app/assets/javascripts/spotlight/spotlight.js +2167 -4559
- data/app/assets/javascripts/spotlight/spotlight.js.map +1 -1
- data/app/assets/stylesheets/spotlight/_blacklight_overrides.scss +4 -0
- data/app/assets/stylesheets/spotlight/_browse.scss +0 -4
- data/app/assets/stylesheets/spotlight/{_collapse_toggle.scss → _collapse_toggle.css} +2 -2
- data/app/assets/stylesheets/spotlight/_exhibit_admin.scss +8 -0
- data/app/assets/stylesheets/spotlight/_exhibits_index.scss +2 -1
- data/app/assets/stylesheets/spotlight/_footer.scss +2 -2
- data/app/assets/stylesheets/spotlight/_header.scss +8 -8
- data/app/assets/stylesheets/spotlight/_pages.scss +1 -1
- data/app/assets/stylesheets/spotlight/_slideshow_block.scss +15 -0
- data/app/assets/stylesheets/spotlight/_spotlight.scss +1 -1
- data/app/assets/stylesheets/spotlight/_translations.scss +3 -3
- data/app/assets/stylesheets/spotlight/_uploaded_items_block.css +7 -0
- data/app/assets/stylesheets/spotlight/_variables.css +15 -0
- data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +0 -76
- data/app/components/blacklight/icons/pause_component.rb +15 -0
- data/app/components/blacklight/icons/play_arrow_component.rb +15 -0
- data/app/components/spotlight/analytics/dashboard_component.html.erb +1 -1
- data/app/components/spotlight/custom_field_form_group_component.rb +40 -0
- data/app/components/spotlight/document_admin_table_component.html.erb +2 -2
- data/app/components/spotlight/edit_sidecar_component.html.erb +18 -0
- data/app/components/spotlight/edit_sidecar_component.rb +41 -0
- data/app/components/spotlight/masthead_component.html.erb +18 -0
- data/app/components/spotlight/masthead_component.rb +46 -0
- data/app/components/spotlight/save_search_component.html.erb +1 -1
- data/app/components/spotlight/sidecar_form_field_component.html.erb +18 -0
- data/app/components/spotlight/sidecar_form_field_component.rb +71 -0
- data/app/components/spotlight/solr_document_legacy_embed_component.html.erb +0 -4
- data/app/components/spotlight/solr_document_legacy_embed_component.rb +2 -2
- data/app/components/spotlight/tag_selector_component.html.erb +1 -1
- data/app/components/spotlight/tag_selector_component.rb +3 -2
- data/app/components/spotlight/upload_field_form_group_component.rb +33 -0
- data/app/controllers/concerns/spotlight/controller.rb +15 -14
- data/app/controllers/concerns/spotlight/search_helper.rb +2 -5
- data/app/controllers/spotlight/browse_controller.rb +1 -6
- data/app/controllers/spotlight/catalog_controller.rb +2 -3
- data/app/controllers/spotlight/concerns/application_controller.rb +4 -6
- data/app/controllers/spotlight/exhibits_controller.rb +22 -10
- data/app/controllers/spotlight/lock_controller.rb +1 -1
- data/app/controllers/spotlight/pages_controller.rb +11 -11
- data/app/controllers/spotlight/resources/upload_controller.rb +1 -1
- data/app/controllers/spotlight/resources_controller.rb +1 -1
- data/app/controllers/spotlight/solr_controller.rb +5 -1
- data/app/helpers/spotlight/application_helper.rb +14 -26
- data/app/helpers/spotlight/crud_link_helpers.rb +0 -12
- data/app/helpers/spotlight/main_app_helpers.rb +2 -2
- data/app/javascript/spotlight/admin/add_another.js +37 -25
- data/app/javascript/spotlight/admin/add_image_selector.js +43 -26
- data/app/javascript/spotlight/admin/add_new_button.js +51 -36
- data/app/javascript/spotlight/admin/blacklight_configuration.js +76 -54
- data/app/javascript/spotlight/admin/block_mixins/autocompleteable.js +102 -101
- data/app/javascript/spotlight/admin/block_mixins/formable.js +91 -75
- data/app/javascript/spotlight/admin/block_mixins/plustextable.js +46 -48
- data/app/javascript/spotlight/admin/blocks/block.js +27 -28
- data/app/javascript/spotlight/admin/blocks/browse_block.js +14 -10
- data/app/javascript/spotlight/admin/blocks/browse_group_categories_block.js +14 -10
- data/app/javascript/spotlight/admin/blocks/pages_block.js +5 -4
- data/app/javascript/spotlight/admin/blocks/resources_block.js +61 -41
- data/app/javascript/spotlight/admin/blocks/search_result_block.js +24 -7
- data/app/javascript/spotlight/admin/blocks/solr_documents_base_block.js +103 -50
- data/app/javascript/spotlight/admin/blocks/solr_documents_carousel_block.js +50 -26
- data/app/javascript/spotlight/admin/blocks/solr_documents_features_block.js +47 -23
- data/app/javascript/spotlight/admin/blocks/uploaded_items_block.js +35 -19
- data/app/javascript/spotlight/admin/crop.js +146 -66
- data/app/javascript/spotlight/admin/croppable.js +5 -4
- data/app/javascript/spotlight/admin/croppable_modal.js +67 -32
- data/app/javascript/spotlight/admin/edit_in_place.js +69 -54
- data/app/javascript/spotlight/admin/exhibits.js +92 -45
- data/app/javascript/spotlight/admin/form_observer.js +92 -78
- data/app/javascript/spotlight/admin/multi_image_selector.js +201 -153
- data/app/javascript/spotlight/admin/pages.js +13 -7
- data/app/javascript/spotlight/admin/progress_monitor.js +65 -50
- data/app/javascript/spotlight/admin/readonly_checkbox.js +7 -3
- data/app/javascript/spotlight/admin/search_typeahead.js +20 -11
- data/app/javascript/spotlight/admin/select_related_input.js +23 -23
- data/app/javascript/spotlight/admin/serialize_json.js +120 -0
- data/app/javascript/spotlight/admin/sir-trevor/block_controls.js +24 -11
- data/app/javascript/spotlight/admin/sir-trevor/block_limits.js +9 -6
- data/app/javascript/spotlight/admin/sir-trevor/locales.js +2 -2
- data/app/javascript/spotlight/admin/spotlight_nestable.js +2 -5
- data/app/javascript/spotlight/admin/translation_progress.js +18 -13
- data/app/javascript/spotlight/admin/users.js +151 -64
- data/app/javascript/spotlight/user/carousel.js +104 -32
- data/app/javascript/spotlight/user/clear_form_button.js +24 -14
- data/app/javascript/spotlight/user/index.js +0 -2
- data/app/javascript/spotlight/user/zpr_links.js +99 -40
- data/app/jobs/concerns/spotlight/gather_documents.rb +1 -1
- data/app/jobs/spotlight/add_uploads_from_csv.rb +31 -8
- data/app/jobs/spotlight/cleanup_job_trackers_job.rb +5 -3
- data/app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb +13 -2
- data/app/models/concerns/spotlight/browse_category_search_builder.rb +3 -3
- data/app/models/concerns/spotlight/exhibit_documents.rb +2 -2
- data/app/models/concerns/spotlight/sitemap.rb +2 -2
- data/app/models/concerns/spotlight/solr_document/finder.rb +2 -2
- data/app/models/concerns/spotlight/solr_document.rb +1 -47
- data/app/models/sir_trevor_rails/blocks/browse_block.rb +0 -4
- data/app/models/sir_trevor_rails/blocks/solr_documents_block.rb +2 -1
- data/app/models/spotlight/blacklight_configuration.rb +5 -3
- data/app/models/spotlight/contact_email.rb +2 -2
- data/app/models/spotlight/custom_field.rb +17 -0
- data/app/models/spotlight/exhibit.rb +28 -0
- data/app/models/spotlight/featured_image.rb +1 -1
- data/app/models/spotlight/field_metadata.rb +10 -5
- data/app/models/spotlight/job_tracker.rb +0 -18
- data/app/models/spotlight/main_navigation.rb +2 -2
- data/app/models/spotlight/page.rb +3 -3
- data/app/models/spotlight/resources/iiif_harvester.rb +7 -4
- data/app/models/spotlight/resources/iiif_manifest.rb +0 -4
- data/app/models/spotlight/resources/iiif_manifest_metadata.rb +1 -3
- data/app/models/spotlight/resources/iiif_service.rb +21 -6
- data/app/models/spotlight/resources/upload.rb +6 -0
- data/app/models/spotlight/search.rb +5 -9
- data/app/models/spotlight/solr_document_sidecar.rb +18 -0
- data/app/services/spotlight/bulk_updates_csv_template_service.rb +1 -1
- data/app/services/spotlight/etl/pipeline.rb +2 -2
- data/app/services/spotlight/etl/step.rb +2 -2
- data/app/views/catalog/_remove_tags.html.erb +2 -2
- data/app/views/layouts/spotlight/base.html.erb +3 -6
- data/app/views/layouts/spotlight/spotlight.html.erb +2 -2
- data/app/views/shared/_analytics.html.erb +4 -3
- data/app/views/shared/_masthead.html.erb +2 -18
- data/app/views/spotlight/about_pages/_empty.html.erb +1 -1
- data/app/views/spotlight/about_pages/_sidebar.html.erb +10 -8
- data/app/views/spotlight/browse/_search.html.erb +2 -2
- data/app/views/spotlight/browse/_search_box.html.erb +6 -14
- data/app/views/spotlight/browse/index.html.erb +1 -1
- data/app/views/spotlight/browse/show.html.erb +1 -1
- data/app/views/spotlight/catalog/_document_admin_table.html.erb +1 -1
- data/app/views/spotlight/catalog/_edit_default.html.erb +1 -1
- data/app/views/spotlight/catalog/edit.html.erb +1 -1
- data/app/views/spotlight/dashboards/_page.html.erb +1 -1
- data/app/views/spotlight/exhibits/_exhibit_card.html.erb +3 -1
- data/app/views/spotlight/exhibits/_export.html.erb +17 -1
- data/app/views/spotlight/exhibits/_form.html.erb +20 -4
- data/app/views/spotlight/exhibits/_missing_exhibits.html.erb +3 -3
- data/app/views/spotlight/exhibits/index.html.erb +21 -8
- data/app/views/spotlight/feature_pages/_empty.html.erb +1 -1
- data/app/views/spotlight/feature_pages/_sidebar.html.erb +17 -15
- data/app/views/spotlight/home_pages/_empty.html.erb +7 -7
- data/app/views/spotlight/pages/show.html.erb +1 -0
- data/app/views/spotlight/resources/upload/_form.html.erb +2 -2
- data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +5 -16
- data/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb +3 -5
- data/app/views/spotlight/sir_trevor/blocks/_link_to_search_block.html.erb +1 -1
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +11 -2
- data/app/views/spotlight/sites/_exhibit.html.erb +1 -1
- data/config/i18n-tasks.yml +1 -1
- data/config/locales/spotlight.ar.yml +1 -2
- data/config/locales/spotlight.de.yml +1 -2
- data/config/locales/spotlight.en.yml +39 -10
- data/config/locales/spotlight.es.yml +1 -2
- data/config/locales/spotlight.fr.yml +1 -2
- data/config/locales/spotlight.it.yml +1 -2
- data/config/locales/spotlight.ja.yml +39 -0
- data/config/locales/spotlight.zh.yml +1 -2
- data/db/migrate/20261007133748_add_discovery_enabled_to_spotlight_exhibits.rb +5 -0
- data/lib/generators/spotlight/assets/importmap_generator.rb +2 -10
- data/lib/generators/spotlight/assets/propshaft_generator.rb +5 -4
- data/lib/generators/spotlight/install_generator.rb +2 -4
- data/lib/generators/spotlight/templates/catalog_controller.rb +0 -1
- data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +26 -4
- data/lib/generators/spotlight/templates/solr/conf/schema.xml +4 -3
- data/lib/generators/spotlight/templates/solr/conf/solrconfig.xml +3 -8
- data/lib/migration/page_language.rb +0 -2
- data/lib/spotlight/engine.rb +28 -9
- data/lib/spotlight/search_state.rb +7 -11
- data/lib/spotlight/upload_field_config.rb +19 -1
- data/lib/spotlight/version.rb +1 -1
- data/lib/spotlight.rb +1 -1
- data/spec/support/features/capybara_wait_metadata_helper.rb +3 -1
- data/spec/support/features/test_features_helpers.rb +24 -1
- data/spec/support/iiif_manifest_fixtures.rb +33 -0
- data/spec/support/stub_dns_resolution.rb +12 -0
- metadata +50 -80
- data/app/assets/stylesheets/spotlight/_uploaded_items_block.scss +0 -7
- data/app/assets/stylesheets/spotlight/_variables.scss +0 -13
- data/app/components/blacklight/icons/arrow_alt_circle_left_component.rb +0 -15
- data/app/components/blacklight/icons/arrow_alt_circle_right_component.rb +0 -15
- data/app/components/blacklight/icons/info_component.rb +0 -15
- data/app/components/blacklight/icons/zoom_in_component.rb +0 -15
- data/app/components/blacklight/icons/zoom_out_component.rb +0 -15
- data/app/components/spotlight/icon_component.rb +0 -13
- data/app/javascript/spotlight/user/browse_group_categories.js +0 -54
- data/app/mailers/spotlight/invitation_mailer.rb +0 -21
- data/app/models/concerns/spotlight/resources/web.rb +0 -38
- data/app/services/spotlight/iiif_resource_resolver.rb +0 -78
- data/app/views/catalog/_image_default.html.erb +0 -6
- data/app/views/shared/_exhibit_navbar.html.erb +0 -2
- data/app/views/shared/_header_navbar.html.erb +0 -6
- data/app/views/spotlight/catalog/_admin_index_header_default.html.erb +0 -23
- data/app/views/spotlight/catalog/_admin_thumbnail_default.html.erb +0 -7
- data/app/views/spotlight/catalog/_curation_mode_toggle_default.html.erb +0 -1
- data/app/views/spotlight/catalog/_document_row.html.erb +0 -2
- data/app/views/spotlight/catalog/_edit_sidecar.html.erb +0 -24
- data/app/views/spotlight/catalog/_index_compact_default.html.erb +0 -21
- data/app/views/spotlight/custom_fields/form_group/_text.html.erb +0 -23
- data/app/views/spotlight/custom_fields/form_group/_vocab.html.erb +0 -23
- data/app/views/spotlight/invitation_mailer/exhibit_invitation_notification.html.erb +0 -12
- data/lib/generators/spotlight/templates/javascript/jquery-shim.js +0 -1
- data/vendor/assets/javascripts/tiny-slider.js +0 -3221
- data/vendor/assets/stylesheets/tiny-slider.css +0 -1
- /data/app/assets/stylesheets/spotlight/{_breadcrumbs.scss → _breadcrumbs.css} +0 -0
- /data/app/assets/stylesheets/spotlight/{_croppable.scss → _croppable.css} +0 -0
- /data/app/assets/stylesheets/spotlight/{_modals.scss → _modals.css} +0 -0
- /data/app/assets/stylesheets/spotlight/{_utilities.scss → _utilities.css} +0 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import Iiif from "spotlight/admin/iiif"
|
|
2
2
|
import Core from "spotlight/core"
|
|
3
|
+
import multiImageSelector from "spotlight/admin/multi_image_selector"
|
|
3
4
|
|
|
4
5
|
SirTrevor.Blocks.SolrDocumentsBase = (function () {
|
|
5
6
|
return Core.Block.Resources.extend({
|
|
6
7
|
plustextable: true,
|
|
7
8
|
autocomplete_url: function () {
|
|
8
|
-
return this
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
return this.instance().closest(
|
|
10
|
+
"form[data-autocomplete-exhibit-catalog-path]",
|
|
11
|
+
).dataset.autocompleteExhibitCatalogPath
|
|
11
12
|
},
|
|
12
13
|
autocomplete_template: function (obj) {
|
|
13
14
|
const thumbnail = obj.thumbnail
|
|
@@ -17,19 +18,32 @@ SirTrevor.Blocks.SolrDocumentsBase = (function () {
|
|
|
17
18
|
<span class="autocomplete-title">${this.highlight(obj.title)}</span><br/><small> ${this.highlight(obj.description)}</small></div>`
|
|
18
19
|
},
|
|
19
20
|
transform_autocomplete_results: function (response) {
|
|
20
|
-
return
|
|
21
|
+
return (response["docs"] || []).map(function (doc) {
|
|
21
22
|
return doc
|
|
22
23
|
})
|
|
23
24
|
},
|
|
24
25
|
|
|
25
26
|
caption_option_values: function () {
|
|
26
|
-
|
|
27
|
-
"blacklight-configuration-index-fields",
|
|
27
|
+
const element = document.querySelector(
|
|
28
|
+
"[data-blacklight-configuration-index-fields]",
|
|
28
29
|
)
|
|
30
|
+
const fieldsData = element
|
|
31
|
+
? element.dataset.blacklightConfigurationIndexFields
|
|
32
|
+
: null
|
|
33
|
+
let fields = []
|
|
34
|
+
if (fieldsData) {
|
|
35
|
+
try {
|
|
36
|
+
fields = JSON.parse(fieldsData)
|
|
37
|
+
} catch {
|
|
38
|
+
// ignore
|
|
39
|
+
}
|
|
40
|
+
}
|
|
29
41
|
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
return fields
|
|
43
|
+
.map(function (field) {
|
|
44
|
+
return `<option value="${field.key}">${field.label}</option>`
|
|
45
|
+
})
|
|
46
|
+
.join("\n")
|
|
33
47
|
},
|
|
34
48
|
|
|
35
49
|
item_options: function () {
|
|
@@ -117,64 +131,103 @@ SirTrevor.Blocks.SolrDocumentsBase = (function () {
|
|
|
117
131
|
// from canvases in the manifest, transformed by spotlight/admin/iiif.js in
|
|
118
132
|
// the #images method.
|
|
119
133
|
setIiifFields: function (panel, manifest_data, initialize) {
|
|
120
|
-
|
|
134
|
+
if (!panel) return
|
|
135
|
+
|
|
136
|
+
const legacyThumbnailField = panel.querySelector(
|
|
121
137
|
'[name$="[thumbnail_image_url]"]',
|
|
122
138
|
)
|
|
123
|
-
|
|
139
|
+
const legacyFullField = panel.querySelector('[name$="[full_image_url]"]')
|
|
124
140
|
|
|
125
|
-
if (
|
|
141
|
+
if (
|
|
142
|
+
initialize &&
|
|
143
|
+
legacyThumbnailField &&
|
|
144
|
+
legacyThumbnailField.value.length > 0
|
|
145
|
+
) {
|
|
126
146
|
return
|
|
127
147
|
}
|
|
128
148
|
|
|
129
|
-
legacyThumbnailField.
|
|
130
|
-
legacyFullField.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
149
|
+
if (legacyThumbnailField) legacyThumbnailField.value = ""
|
|
150
|
+
if (legacyFullField) legacyFullField.value = ""
|
|
151
|
+
|
|
152
|
+
const iiifImageIdField = panel.querySelector('[name$="[iiif_image_id]"]')
|
|
153
|
+
if (iiifImageIdField) iiifImageIdField.value = manifest_data.imageId || ""
|
|
154
|
+
|
|
155
|
+
const iiifTilesourceField = panel.querySelector(
|
|
156
|
+
'[name$="[iiif_tilesource]"]',
|
|
157
|
+
)
|
|
158
|
+
if (iiifTilesourceField)
|
|
159
|
+
iiifTilesourceField.value = manifest_data.tilesource || ""
|
|
160
|
+
|
|
161
|
+
const iiifManifestUrlField = panel.querySelector(
|
|
162
|
+
'[name$="[iiif_manifest_url]"]',
|
|
163
|
+
)
|
|
164
|
+
if (iiifManifestUrlField)
|
|
165
|
+
iiifManifestUrlField.value = manifest_data.manifest || ""
|
|
166
|
+
|
|
167
|
+
const iiifCanvasIdField = panel.querySelector(
|
|
168
|
+
'[name$="[iiif_canvas_id]"]',
|
|
169
|
+
)
|
|
170
|
+
if (iiifCanvasIdField)
|
|
171
|
+
iiifCanvasIdField.value = manifest_data.canvasId || ""
|
|
172
|
+
|
|
173
|
+
const img = panel.querySelector("img.img-thumbnail")
|
|
174
|
+
if (img) {
|
|
175
|
+
img.src =
|
|
139
176
|
manifest_data.thumbnail_image_url ||
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
177
|
+
(manifest_data.tilesource || "").replace(
|
|
178
|
+
"/info.json",
|
|
179
|
+
"/full/100,100/0/default.jpg",
|
|
180
|
+
)
|
|
181
|
+
}
|
|
145
182
|
},
|
|
146
183
|
afterPanelRender: function (data, panel) {
|
|
184
|
+
if (!panel) return
|
|
185
|
+
|
|
147
186
|
var context = this
|
|
148
187
|
var manifestUrl = data.iiif_manifest || data.iiif_manifest_url
|
|
149
188
|
|
|
150
189
|
if (!manifestUrl) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
190
|
+
const legacyThumbnailField = panel.querySelector(
|
|
191
|
+
'[name$="[thumbnail_image_url]"]',
|
|
192
|
+
)
|
|
193
|
+
if (legacyThumbnailField) {
|
|
194
|
+
legacyThumbnailField.value =
|
|
195
|
+
data.thumbnail_image_url || data.thumbnail || ""
|
|
196
|
+
}
|
|
197
|
+
const legacyFullField = panel.querySelector(
|
|
198
|
+
'[name$="[full_image_url]"]',
|
|
199
|
+
)
|
|
200
|
+
if (legacyFullField) {
|
|
201
|
+
legacyFullField.value = data.full_image_url || ""
|
|
202
|
+
}
|
|
155
203
|
|
|
156
204
|
return
|
|
157
205
|
}
|
|
158
206
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
207
|
+
fetch(manifestUrl)
|
|
208
|
+
.then(function (response) {
|
|
209
|
+
return response.json()
|
|
210
|
+
})
|
|
211
|
+
.then(function (manifest) {
|
|
212
|
+
var iiifManifest = new Iiif(manifestUrl, manifest)
|
|
213
|
+
|
|
214
|
+
var thumbs = iiifManifest.imagesArray()
|
|
215
|
+
|
|
216
|
+
if (!data.iiif_image_id) {
|
|
217
|
+
context.setIiifFields(panel, thumbs[0], !!data.iiif_manifest_url)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (thumbs.length > 1) {
|
|
221
|
+
multiImageSelector(
|
|
222
|
+
panel,
|
|
223
|
+
thumbs,
|
|
224
|
+
function (selectorImage) {
|
|
225
|
+
context.setIiifFields(panel, selectorImage, false)
|
|
226
|
+
},
|
|
227
|
+
data.iiif_image_id,
|
|
228
|
+
)
|
|
229
|
+
}
|
|
230
|
+
})
|
|
178
231
|
},
|
|
179
232
|
})
|
|
180
233
|
})()
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import * as bootstrap from "bootstrap"
|
|
2
|
+
|
|
3
|
+
// Bootstrap's ESM build exports Carousel by name; CDN-converted UMD builds (e.g. ga.jspm.io) only have a default export
|
|
4
|
+
const Carousel = bootstrap.Carousel ?? bootstrap.default?.Carousel
|
|
5
|
+
|
|
1
6
|
SirTrevor.Blocks.SolrDocumentsCarousel = (function () {
|
|
2
7
|
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
3
8
|
plustextable: false,
|
|
@@ -39,7 +44,7 @@ SirTrevor.Blocks.SolrDocumentsCarousel = (function () {
|
|
|
39
44
|
addCarouselCycleOptions: function (options) {
|
|
40
45
|
var html = ""
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
options.values.forEach(function (interval) {
|
|
43
48
|
var selected = interval === options.selected ? "selected" : "",
|
|
44
49
|
intervalInMilliSeconds = parseInt(interval, 10) * 1000
|
|
45
50
|
|
|
@@ -60,7 +65,8 @@ SirTrevor.Blocks.SolrDocumentsCarousel = (function () {
|
|
|
60
65
|
var html = "",
|
|
61
66
|
_this = this
|
|
62
67
|
|
|
63
|
-
|
|
68
|
+
Object.keys(options.values).forEach(function (size) {
|
|
69
|
+
var px = options.values[size]
|
|
64
70
|
var checked = size === options.selected ? "checked" : "",
|
|
65
71
|
id = _this.formId(_this.max_height_key)
|
|
66
72
|
|
|
@@ -84,35 +90,53 @@ SirTrevor.Blocks.SolrDocumentsCarousel = (function () {
|
|
|
84
90
|
},
|
|
85
91
|
|
|
86
92
|
afterPreviewLoad: function (_options) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
93
|
+
const carousels = this.inner.querySelectorAll(".carousel")
|
|
94
|
+
|
|
95
|
+
const clickHandler = function (e) {
|
|
96
|
+
const button = e.currentTarget
|
|
97
|
+
let target
|
|
98
|
+
try {
|
|
99
|
+
const targetSelector =
|
|
100
|
+
button.getAttribute("data-bs-target") || button.getAttribute("href")
|
|
101
|
+
if (targetSelector) {
|
|
102
|
+
target = document.querySelector(targetSelector)
|
|
103
|
+
}
|
|
104
|
+
} catch {
|
|
105
|
+
// ignore selector errors
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (!target) {
|
|
109
|
+
target = button.closest(".carousel")
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (!target || !target.classList.contains("carousel")) return
|
|
113
|
+
|
|
114
|
+
const carousel = Carousel.getOrCreateInstance(target)
|
|
115
|
+
const slideIndex = button.getAttribute("data-bs-slide-to")
|
|
116
|
+
|
|
117
|
+
if (slideIndex !== null) {
|
|
118
|
+
carousel.to(parseInt(slideIndex, 10))
|
|
119
|
+
} else {
|
|
120
|
+
const slideAction = button.getAttribute("data-bs-slide")
|
|
121
|
+
if (slideAction === "next") {
|
|
122
|
+
carousel.next()
|
|
123
|
+
} else if (slideAction === "prev") {
|
|
124
|
+
carousel.prev()
|
|
125
|
+
}
|
|
107
126
|
}
|
|
108
127
|
|
|
109
128
|
e.preventDefault()
|
|
110
129
|
}
|
|
111
130
|
|
|
112
|
-
|
|
113
|
-
.
|
|
114
|
-
|
|
115
|
-
|
|
131
|
+
carousels.forEach(function (carouselEl) {
|
|
132
|
+
Carousel.getOrCreateInstance(carouselEl)
|
|
133
|
+
|
|
134
|
+
carouselEl
|
|
135
|
+
.querySelectorAll("[data-bs-slide], [data-bs-slide-to]")
|
|
136
|
+
.forEach(function (btn) {
|
|
137
|
+
btn.addEventListener("click", clickHandler)
|
|
138
|
+
})
|
|
139
|
+
})
|
|
116
140
|
},
|
|
117
141
|
})
|
|
118
142
|
})()
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import * as bootstrap from "bootstrap"
|
|
2
|
+
|
|
3
|
+
// Bootstrap's ESM build exports Carousel by name; CDN-converted UMD builds (e.g. ga.jspm.io) only have a default export
|
|
4
|
+
const Carousel = bootstrap.Carousel ?? bootstrap.default?.Carousel
|
|
5
|
+
|
|
1
6
|
SirTrevor.Blocks.SolrDocumentsFeatures = (function () {
|
|
2
7
|
return SirTrevor.Blocks.SolrDocumentsBase.extend({
|
|
3
8
|
plustextable: false,
|
|
@@ -6,34 +11,53 @@ SirTrevor.Blocks.SolrDocumentsFeatures = (function () {
|
|
|
6
11
|
icon_name: "item_features",
|
|
7
12
|
|
|
8
13
|
afterPreviewLoad: function (_options) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
14
|
+
const carousels = this.inner.querySelectorAll(".carousel")
|
|
15
|
+
|
|
16
|
+
const clickHandler = function (e) {
|
|
17
|
+
const button = e.currentTarget
|
|
18
|
+
let target
|
|
19
|
+
try {
|
|
20
|
+
const targetSelector =
|
|
21
|
+
button.getAttribute("data-bs-target") || button.getAttribute("href")
|
|
22
|
+
if (targetSelector) {
|
|
23
|
+
target = document.querySelector(targetSelector)
|
|
24
|
+
}
|
|
25
|
+
} catch {
|
|
26
|
+
// ignore selector errors
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (!target) {
|
|
30
|
+
target = button.closest(".carousel")
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (!target || !target.classList.contains("carousel")) return
|
|
34
|
+
|
|
35
|
+
const carousel = Carousel.getOrCreateInstance(target)
|
|
36
|
+
const slideIndex = button.getAttribute("data-bs-slide-to")
|
|
37
|
+
|
|
38
|
+
if (slideIndex !== null) {
|
|
39
|
+
carousel.to(parseInt(slideIndex, 10))
|
|
40
|
+
} else {
|
|
41
|
+
const slideAction = button.getAttribute("data-bs-slide")
|
|
42
|
+
if (slideAction === "next") {
|
|
43
|
+
carousel.next()
|
|
44
|
+
} else if (slideAction === "prev") {
|
|
45
|
+
carousel.prev()
|
|
46
|
+
}
|
|
29
47
|
}
|
|
30
48
|
|
|
31
49
|
e.preventDefault()
|
|
32
50
|
}
|
|
33
51
|
|
|
34
|
-
|
|
35
|
-
.
|
|
36
|
-
|
|
52
|
+
carousels.forEach(function (carouselEl) {
|
|
53
|
+
Carousel.getOrCreateInstance(carouselEl)
|
|
54
|
+
|
|
55
|
+
carouselEl
|
|
56
|
+
.querySelectorAll("[data-bs-slide-to]")
|
|
57
|
+
.forEach(function (btn) {
|
|
58
|
+
btn.addEventListener("click", clickHandler)
|
|
59
|
+
})
|
|
60
|
+
})
|
|
37
61
|
},
|
|
38
62
|
})
|
|
39
63
|
})()
|
|
@@ -21,18 +21,20 @@ SirTrevor.Blocks.UploadedItems = (function () {
|
|
|
21
21
|
upload_options: { html: "" },
|
|
22
22
|
|
|
23
23
|
fileInput: function () {
|
|
24
|
-
return
|
|
24
|
+
return this.inner.querySelector('input[type="file"]')
|
|
25
25
|
},
|
|
26
26
|
|
|
27
27
|
onBlockRender: function () {
|
|
28
|
-
SpotlightNestable.init(
|
|
28
|
+
SpotlightNestable.init(
|
|
29
|
+
this.inner.querySelectorAll('[data-behavior="nestable"]'),
|
|
30
|
+
)
|
|
29
31
|
|
|
30
|
-
this.fileInput()
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
const input = this.fileInput()
|
|
33
|
+
if (input) {
|
|
34
|
+
input.addEventListener("change", (ev) => {
|
|
33
35
|
this.onDrop(ev.currentTarget)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
+
})
|
|
37
|
+
}
|
|
36
38
|
},
|
|
37
39
|
|
|
38
40
|
onDrop: function (transferData) {
|
|
@@ -50,12 +52,15 @@ SirTrevor.Blocks.UploadedItems = (function () {
|
|
|
50
52
|
|
|
51
53
|
this.uploader(
|
|
52
54
|
file,
|
|
53
|
-
|
|
55
|
+
(data) => {
|
|
54
56
|
this.createItemPanel(data)
|
|
55
|
-
this.fileInput()
|
|
57
|
+
const input = this.fileInput()
|
|
58
|
+
if (input) {
|
|
59
|
+
input.value = ""
|
|
60
|
+
}
|
|
56
61
|
this.ready()
|
|
57
62
|
},
|
|
58
|
-
|
|
63
|
+
() => {
|
|
59
64
|
this.addMessage(i18n.t("blocks:image:upload_error"))
|
|
60
65
|
this.ready()
|
|
61
66
|
},
|
|
@@ -119,16 +124,27 @@ SirTrevor.Blocks.UploadedItems = (function () {
|
|
|
119
124
|
</div>
|
|
120
125
|
</li>`
|
|
121
126
|
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
panel
|
|
125
|
-
var context = this
|
|
127
|
+
const tempDiv = document.createElement("div")
|
|
128
|
+
tempDiv.innerHTML = markup.trim()
|
|
129
|
+
const panel = tempDiv.firstElementChild
|
|
126
130
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
const captionInput = panel.querySelector('[data-field="caption"]')
|
|
132
|
+
if (captionInput) {
|
|
133
|
+
captionInput.value = data.caption || ""
|
|
134
|
+
}
|
|
135
|
+
const linkInput = panel.querySelector('[data-field="link"]')
|
|
136
|
+
if (linkInput) {
|
|
137
|
+
linkInput.value = data.link || ""
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const removeBtn = panel.querySelector(".remove a")
|
|
141
|
+
if (removeBtn) {
|
|
142
|
+
removeBtn.addEventListener("click", (e) => {
|
|
143
|
+
e.preventDefault()
|
|
144
|
+
panel.remove()
|
|
145
|
+
this.afterPanelDelete()
|
|
146
|
+
})
|
|
147
|
+
}
|
|
132
148
|
|
|
133
149
|
this.afterPanelRender(data, panel)
|
|
134
150
|
|