blacklight-spotlight 5.1.0 → 5.2.0

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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +153 -48
  3. data/app/assets/javascripts/spotlight/spotlight.esm.js +33 -1
  4. data/app/assets/javascripts/spotlight/spotlight.esm.js.map +1 -1
  5. data/app/assets/javascripts/spotlight/spotlight.js +33 -1
  6. data/app/assets/javascripts/spotlight/spotlight.js.map +1 -1
  7. data/app/assets/stylesheets/spotlight/_admin_users.scss +28 -0
  8. data/app/assets/stylesheets/spotlight/_browse.scss +1 -1
  9. data/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +1 -1
  10. data/app/assets/stylesheets/spotlight/_spotlight.scss +1 -0
  11. data/app/components/spotlight/admin_users/email_component.html.erb +5 -0
  12. data/app/components/spotlight/admin_users/email_component.rb +22 -0
  13. data/app/components/spotlight/admin_users/exhibit_roles_component.html.erb +28 -0
  14. data/app/components/spotlight/admin_users/exhibit_roles_component.rb +19 -0
  15. data/app/components/spotlight/admin_users/site_admin_component.html.erb +13 -0
  16. data/app/components/spotlight/admin_users/site_admin_component.rb +17 -0
  17. data/app/components/spotlight/analytics/aggregation_component.rb +1 -1
  18. data/app/components/spotlight/analytics/dashboard_component.rb +1 -1
  19. data/app/components/spotlight/breadcrumbs_component.rb +1 -1
  20. data/app/components/spotlight/bulk_action_component.rb +1 -1
  21. data/app/components/spotlight/edit_view_links_component.rb +1 -1
  22. data/app/components/spotlight/header_navigation_link_component.rb +1 -1
  23. data/app/components/spotlight/save_search_component.rb +1 -1
  24. data/app/components/spotlight/select_image_component.rb +1 -1
  25. data/app/components/spotlight/skip_link_component.rb +1 -1
  26. data/app/components/spotlight/solr_document_legacy_embed_component.rb +2 -2
  27. data/app/components/spotlight/tag_list_form_component.rb +1 -1
  28. data/app/components/spotlight/tag_selector_component.rb +1 -1
  29. data/app/components/spotlight/title_component.rb +1 -1
  30. data/app/components/spotlight/translations/subheading_component.rb +1 -1
  31. data/app/components/spotlight/uneditable_non_default_language_component.rb +1 -1
  32. data/app/controllers/spotlight/admin_users_controller.rb +11 -1
  33. data/app/controllers/spotlight/browse_controller.rb +2 -8
  34. data/app/controllers/spotlight/bulk_actions_controller.rb +1 -1
  35. data/app/controllers/spotlight/bulk_updates_controller.rb +22 -7
  36. data/app/controllers/spotlight/catalog_controller.rb +7 -15
  37. data/app/controllers/spotlight/dashboards_controller.rb +2 -6
  38. data/app/controllers/spotlight/exhibits_controller.rb +1 -0
  39. data/app/controllers/spotlight/home_pages_controller.rb +1 -1
  40. data/app/controllers/spotlight/searches_controller.rb +1 -1
  41. data/app/controllers/spotlight/solr_controller.rb +1 -0
  42. data/app/helpers/spotlight/main_app_helpers.rb +1 -5
  43. data/app/helpers/spotlight/rendering_helper.rb +4 -1
  44. data/app/javascript/spotlight/admin/blocks/pages_block.js +2 -0
  45. data/app/javascript/spotlight/user/carousel.js +32 -2
  46. data/app/jobs/spotlight/add_tags_job.rb +1 -0
  47. data/app/jobs/spotlight/add_uploads_from_csv.rb +1 -0
  48. data/app/jobs/spotlight/change_visibility_job.rb +1 -0
  49. data/app/jobs/spotlight/process_bulk_updates_csv_job.rb +1 -0
  50. data/app/jobs/spotlight/reindex_exhibit_job.rb +1 -0
  51. data/app/jobs/spotlight/reindex_job.rb +1 -0
  52. data/app/jobs/spotlight/remove_tags_job.rb +1 -0
  53. data/app/jobs/spotlight/rename_sidecar_field_job.rb +1 -0
  54. data/app/models/concerns/spotlight/user.rb +5 -0
  55. data/app/models/sir_trevor_rails/blocks/browse_block.rb +1 -1
  56. data/app/models/sir_trevor_rails/blocks/featured_pages_block.rb +1 -1
  57. data/app/models/sir_trevor_rails/blocks/solr_documents_block.rb +1 -0
  58. data/app/models/spotlight/ability.rb +1 -1
  59. data/app/models/spotlight/about_page.rb +1 -0
  60. data/app/models/spotlight/blacklight_configuration.rb +6 -7
  61. data/app/models/spotlight/contact.rb +2 -1
  62. data/app/models/spotlight/contact_email.rb +1 -0
  63. data/app/models/spotlight/custom_field.rb +1 -0
  64. data/app/models/spotlight/exhibit.rb +2 -9
  65. data/app/models/spotlight/feature_page.rb +1 -0
  66. data/app/models/spotlight/group.rb +2 -1
  67. data/app/models/spotlight/home_page.rb +1 -0
  68. data/app/models/spotlight/job_tracker.rb +1 -1
  69. data/app/models/spotlight/main_navigation.rb +1 -1
  70. data/app/models/spotlight/page.rb +28 -19
  71. data/app/models/spotlight/resource.rb +1 -0
  72. data/app/models/spotlight/resources/iiif_manifest.rb +0 -126
  73. data/app/models/spotlight/resources/iiif_manifest_metadata.rb +161 -0
  74. data/app/models/spotlight/resources/iiif_manifest_v3.rb +41 -0
  75. data/app/models/spotlight/resources/iiif_service.rb +25 -1
  76. data/app/models/spotlight/search.rb +2 -1
  77. data/app/services/spotlight/exhibit_import_export_service.rb +3 -1
  78. data/app/views/spotlight/admin_users/index.html.erb +16 -26
  79. data/app/views/spotlight/catalog/_document_admin_table.html.erb +2 -6
  80. data/app/views/spotlight/catalog/edit.html.erb +1 -6
  81. data/app/views/spotlight/exhibits/_exhibit_card.html.erb +1 -1
  82. data/app/views/spotlight/pages/_order_pages.html.erb +1 -1
  83. data/app/views/spotlight/pages/show.html.erb +4 -2
  84. data/app/views/spotlight/resources/csv_upload/_form.html.erb +2 -0
  85. data/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb +2 -2
  86. data/app/views/spotlight/sir_trevor/blocks/_search_results_block.html.erb +2 -2
  87. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +5 -3
  88. data/app/views/spotlight/sir_trevor/blocks/_text_block.html.erb +1 -1
  89. data/config/initializers/devise_rails8_patch.rb +13 -0
  90. data/config/locales/spotlight.en.yml +34 -5
  91. data/config/routes.rb +5 -1
  92. data/lib/spotlight/engine.rb +10 -26
  93. data/lib/spotlight/version.rb +1 -1
  94. data/spec/fixtures/iiif_responses.rb +344 -0
  95. data/spec/support/features/test_features_helpers.rb +4 -6
  96. data/spec/support/stub_iiif_response.rb +1 -0
  97. data/spec/support/with_queue_adapter.rb +17 -0
  98. metadata +42 -29
@@ -309,4 +309,348 @@ module IiifResponses
309
309
  { '@language' => 'en', '@value' => 'Japanese' }] }
310
310
  ] }.to_json
311
311
  end
312
+
313
+ def test_v3_manifest
314
+ {
315
+ '@context' => [
316
+ 'http://www.w3.org/ns/anno.jsonld',
317
+ 'http://iiif.io/api/presentation/3/context.json'
318
+ ],
319
+ 'type' => 'Manifest',
320
+ 'id' => 'uri://for-v3-manifest',
321
+ 'label' => {
322
+ 'eng' => [
323
+ 'A Map of the British and French settlements in North America'
324
+ ]
325
+ },
326
+ 'summary' => {
327
+ 'eng' => [
328
+ 'Relief shown pictorially.',
329
+ 'From the Universal magazine of knowledge and pleasure. v. 17, Oct. 1755, p. 144-145.',
330
+ 'Inset: Fort Frederick at Crown Point built by the French, 1731.'
331
+ ]
332
+ },
333
+ 'behavior' => [
334
+ 'individuals'
335
+ ],
336
+ 'metadata' => [
337
+ {
338
+ 'label' => {
339
+ 'eng' => [
340
+ 'Title'
341
+ ]
342
+ },
343
+ 'value' => {
344
+ 'eng' => [
345
+ 'Map of the British and French settlements in North America',
346
+ 'A Map of the British and French settlements in North America'
347
+ ]
348
+ }
349
+ },
350
+ {
351
+ 'label' => {
352
+ 'eng' => [
353
+ 'Type'
354
+ ]
355
+ },
356
+ 'value' => {
357
+ 'eng' => [
358
+ 'Maps'
359
+ ]
360
+ }
361
+ },
362
+ {
363
+ 'label' => {
364
+ 'eng' => [
365
+ 'Contributor'
366
+ ]
367
+ },
368
+ 'value' => {
369
+ 'eng' => [
370
+ 'Hinton, John, d. 1781'
371
+ ]
372
+ }
373
+ },
374
+ {
375
+ 'label' => {
376
+ 'eng' => [
377
+ 'Cartographic Scale'
378
+ ]
379
+ },
380
+ 'value' => {
381
+ 'eng' => [
382
+ 'Scale [ca. 1:10,000,000].'
383
+ ]
384
+ }
385
+ },
386
+ {
387
+ 'label' => {
388
+ 'eng' => [
389
+ 'Call Number'
390
+ ]
391
+ },
392
+ 'value' => {
393
+ 'eng' => [
394
+ 'HMC01.1058'
395
+ ]
396
+ }
397
+ },
398
+ {
399
+ 'label' => {
400
+ 'eng' => [
401
+ 'Call Number'
402
+ ]
403
+ },
404
+ 'value' => {
405
+ 'eng' => [
406
+ 'Electronic Resource'
407
+ ]
408
+ }
409
+ }
410
+ ],
411
+ 'rendering' => [
412
+ {
413
+ 'type' => 'Text',
414
+ 'label' => {
415
+ 'en' => [
416
+ 'Download as PDF'
417
+ ]
418
+ },
419
+ 'format' => 'application/pdf',
420
+ 'id' => 'https://example.org/concern/scanned_maps/for-v3-manifest/pdf'
421
+ },
422
+ {
423
+ 'id' => 'http://example.org/for-v3-manifest/permanent-link',
424
+ 'format' => 'text/html',
425
+ 'type' => 'Text',
426
+ 'label' => {
427
+ 'en' => [
428
+ 'View in catalog'
429
+ ]
430
+ }
431
+ }
432
+ ],
433
+ 'items' => [
434
+ {
435
+ 'type' => 'Canvas',
436
+ 'id' => 'https://example.org/concern/scanned_maps/for-v3-manifest/manifest/canvas/image-1',
437
+ 'items' => [
438
+ {
439
+ 'type' => 'AnnotationPage',
440
+ 'items' => [
441
+ {
442
+ 'type' => 'Annotation',
443
+ 'motivation' => 'painting',
444
+ 'body' => {
445
+ 'id' => 'https://iiif-cloud.example.org/iiif/2/for-v3-manifest/image-1/intermediate_file/full/1000,/0/default.jpg',
446
+ 'type' => 'Image',
447
+ 'height' => 4468,
448
+ 'width' => 5998,
449
+ 'format' => 'image/jpeg',
450
+ 'service' => [
451
+ {
452
+ '@id' => 'https://iiif-cloud.example.org/iiif/2/for-v3-manifest/image-1/intermediate_file',
453
+ 'profile' => 'http://iiif.io/api/image/2/level2.json',
454
+ '@type' => 'ImageService2'
455
+ }
456
+ ]
457
+ },
458
+ 'id' => 'https://example.org/concern/scanned_maps/for-v3-manifest/manifest/canvas/image-1/annotation_page/page-1/annotation/annotation-1',
459
+ 'target' => 'https://example.org/concern/scanned_maps/for-v3-manifest/manifest/canvas/image-1'
460
+ }
461
+ ],
462
+ 'id' => 'https://example.org/concern/scanned_maps/for-v3-manifest/manifest/canvas/image-1/annotation_page/page-1'
463
+ }
464
+ ],
465
+ 'label' => {
466
+ 'eng' => [
467
+ 'PUmap_9170'
468
+ ]
469
+ },
470
+ 'thumbnail' => [
471
+ {
472
+ 'id' => 'https://iiif-cloud.example.org/iiif/2/for-v3-manifest/image-1/intermediate_file/full/!200,200/0/default.jpg',
473
+ 'type' => 'Image',
474
+ 'height' => 149,
475
+ 'width' => 200,
476
+ 'format' => 'image/jpeg',
477
+ 'service' => [
478
+ {
479
+ '@id' => 'https://iiif-cloud.example.org/iiif/2/for-v3-manifest/image-1/intermediate_file',
480
+ 'profile' => 'http://iiif.io/api/image/2/level2.json',
481
+ '@type' => 'ImageService2'
482
+ }
483
+ ]
484
+ }
485
+ ],
486
+ 'local_identifier' => 'p6w926v351',
487
+ 'rendering' => [
488
+ {
489
+ 'id' => 'https://example.org/downloads/for-v3-manifest/file/image-1',
490
+ 'format' => 'image/tiff',
491
+ 'type' => 'Dataset',
492
+ 'label' => {
493
+ 'en' => [
494
+ 'Download the original file'
495
+ ]
496
+ }
497
+ }
498
+ ],
499
+ 'width' => 5998,
500
+ 'height' => 4468
501
+ }
502
+ ],
503
+ 'thumbnail' => [
504
+ {
505
+ 'id' => 'uri://to-thumbnail',
506
+ 'type' => 'Image',
507
+ 'format' => 'image/jpeg',
508
+ 'height' => 150
509
+ }
510
+ ],
511
+ 'rights' => 'http://rightsstatements.org/vocab/NKC/1.0/',
512
+ 'requiredStatement' => {
513
+ 'label' => {
514
+ 'en' => [
515
+ 'Attribution'
516
+ ]
517
+ },
518
+ 'value' => {
519
+ 'en' => [
520
+ '<span>Glen Robson, IIIF Technical Coordinator. <a href="https://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a>'
521
+ ]
522
+ }
523
+ },
524
+ 'provider' => [
525
+ {
526
+ 'id' => 'https://library.princeton.edu',
527
+ 'type' => 'Agent',
528
+ 'label' => {
529
+ 'en' => [
530
+ 'Princeton University Library'
531
+ ]
532
+ },
533
+ 'logo' => [
534
+ {
535
+ 'id' => 'https://example.org/pul_logo_icon.png',
536
+ 'type' => 'Image',
537
+ 'format' => 'image/png',
538
+ 'height' => 100,
539
+ 'width' => 120
540
+ }
541
+ ]
542
+ }
543
+ ]
544
+ }.to_json
545
+ end
546
+
547
+ def test_multilingual_v3_manifest
548
+ {
549
+ '@context' => 'http://iiif.io/api/presentation/3/context.json',
550
+ 'id' => 'https://iiif.io/api/cookbook/recipe/0006-text-language/manifest.json',
551
+ 'type' => 'Manifest',
552
+ 'label' => {
553
+ 'en' => [
554
+ "Whistler's Mother"
555
+ ],
556
+ 'fr' => [
557
+ 'La Mère de Whistler'
558
+ ]
559
+ },
560
+ 'metadata' => [
561
+ {
562
+ 'label' => {
563
+ 'en' => [
564
+ 'Creator'
565
+ ],
566
+ 'fr' => [
567
+ 'Auteur'
568
+ ]
569
+ },
570
+ 'value' => {
571
+ 'none' => [
572
+ 'Whistler, James Abbott McNeill'
573
+ ]
574
+ }
575
+ },
576
+ {
577
+ 'label' => {
578
+ 'en' => [
579
+ 'Subject'
580
+ ],
581
+ 'fr' => [
582
+ 'Sujet'
583
+ ]
584
+ },
585
+ 'value' => {
586
+ 'en' => [
587
+ 'McNeill Anna Matilda, mother of Whistler (1804-1881)'
588
+ ],
589
+ 'fr' => [
590
+ 'McNeill Anna Matilda, mère de Whistler (1804-1881)'
591
+ ]
592
+ }
593
+ }
594
+ ],
595
+ 'summary' => {
596
+ 'en' => [
597
+ "Arrangement in Grey and Black No. 1, also called Portrait of the Artist's Mother."
598
+ ],
599
+ 'fr' => [
600
+ "Arrangement en gris et noir n°1, also called Portrait de la mère de l'artiste."
601
+ ]
602
+ },
603
+ 'requiredStatement' => {
604
+ 'label' => {
605
+ 'en' => [
606
+ 'Held By'
607
+ ],
608
+ 'fr' => [
609
+ 'Détenu par'
610
+ ]
611
+ },
612
+ 'value' => {
613
+ 'none' => [
614
+ "Musée d'Orsay, Paris, France"
615
+ ]
616
+ }
617
+ },
618
+ 'items' => [
619
+ {
620
+ 'id' => 'https://iiif.io/api/cookbook/recipe/0006-text-language/canvas/p1',
621
+ 'type' => 'Canvas',
622
+ 'width' => 1114,
623
+ 'height' => 991,
624
+ 'items' => [
625
+ {
626
+ 'id' => 'https://iiif.io/api/cookbook/recipe/0006-text-language/page/p1/1',
627
+ 'type' => 'AnnotationPage',
628
+ 'items' => [
629
+ {
630
+ 'id' => 'https://iiif.io/api/cookbook/recipe/0006-text-language/annotation/p0001-image',
631
+ 'type' => 'Annotation',
632
+ 'motivation' => 'painting',
633
+ 'body' => {
634
+ 'id' => 'https://iiif.io/api/image/3.0/example/reference/329817fc8a251a01c393f517d8a17d87-Whistlers_Mother/full/max/0/default.jpg',
635
+ 'type' => 'Image',
636
+ 'format' => 'image/jpeg',
637
+ 'width' => 1114,
638
+ 'height' => 991,
639
+ 'service' => [
640
+ {
641
+ 'id' => 'https://iiif.io/api/image/3.0/example/reference/329817fc8a251a01c393f517d8a17d87-Whistlers_Mother',
642
+ 'profile' => 'level1',
643
+ 'type' => 'ImageService3'
644
+ }
645
+ ]
646
+ },
647
+ 'target' => 'https://iiif.io/api/cookbook/recipe/0006-text-language/canvas/p1'
648
+ }
649
+ ]
650
+ }
651
+ ]
652
+ }
653
+ ]
654
+ }.to_json
655
+ end
312
656
  end
@@ -8,13 +8,15 @@ module Spotlight
8
8
  # Role=combobox indicates that the auto-complete is initialized
9
9
  expect(page).to have_css("auto-complete [data-#{type}-typeahead][role='combobox']")
10
10
  find("auto-complete [data-#{type}-typeahead]").fill_in(with: opts[:with])
11
- find('auto-complete[open] [role="option"]', text: opts[:with], match: :first).click
11
+ first('auto-complete[open] [role="option"]', text: opts[:with]).click
12
12
  end
13
13
 
14
14
  # just like #fill_in_typeahead_field, but wait for the
15
15
  # form fields/thumbnail preview to show up on the page too
16
16
  def fill_in_solr_document_block_typeahead_field(opts)
17
+ wait_for_sir_trevor
17
18
  fill_in_typeahead_field(opts)
19
+ expect(page).to have_css('input[value="' + opts[:with] + '"]', visible: false)
18
20
  expect(page).to have_css('li[data-resource-id="' + opts[:with] + '"] .img-thumbnail[src^="http"]')
19
21
  end
20
22
 
@@ -37,17 +39,13 @@ module Spotlight
37
39
 
38
40
  def wait_for_sir_trevor
39
41
  expect(page).to have_selector('.st-blocks.st-ready')
40
- sleep 1
41
42
  end
42
43
 
43
44
  def save_page_changes
44
- wait_for_sir_trevor
45
45
  click_button('Save changes')
46
- # Load bearing sleep. Remove or reduce at your own risk. Revisit if Sir Trevor is removed.
47
- sleep 3 if ENV['CI']
48
46
  # verify that the page was created.
47
+ expect(page).to have_selector('.alert-info', text: 'was successfully updated')
49
48
  expect(page).to have_no_selector('.alert-danger')
50
- expect(page).to have_selector('.alert-info', text: 'page was successfully updated')
51
49
  end
52
50
 
53
51
  RSpec::Matchers.define :have_breadcrumbs do |*expected|
@@ -17,6 +17,7 @@ module StubIiifResponse
17
17
  stub_iiif_response_for_url('uri://for-manifest2', test_manifest2)
18
18
  stub_iiif_response_for_url('uri://for-manifest3', test_manifest3)
19
19
  stub_iiif_response_for_url('uri://for-manifest4', test_manifest4)
20
+ stub_iiif_response_for_url('uri://for-v3-manifest', test_v3_manifest)
20
21
  end
21
22
  end
22
23
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WithQueueAdapter
4
+ def with_queue_adapter(new_adapter)
5
+ around do |example|
6
+ old_adapter = ActiveJob::Base.queue_adapter
7
+ ActiveJob::Base.queue_adapter = new_adapter
8
+ example.run
9
+ ensure
10
+ ActiveJob::Base.queue_adapter = old_adapter
11
+ end
12
+ end
13
+ end
14
+
15
+ RSpec.configure do |config|
16
+ config.extend WithQueueAdapter
17
+ end
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  - Jessie Keck
9
9
  - Gary Geisler
10
10
  - Justin Coyne
11
- autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2025-06-09 00:00:00.000000000 Z
13
+ date: 1980-01-02 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: activejob-status
@@ -76,7 +75,7 @@ dependencies:
76
75
  version: '3.0'
77
76
  - - "<"
78
77
  - !ruby/object:Gem::Version
79
- version: '5'
78
+ version: '7'
80
79
  type: :runtime
81
80
  prerelease: false
82
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -86,7 +85,7 @@ dependencies:
86
85
  version: '3.0'
87
86
  - - "<"
88
87
  - !ruby/object:Gem::Version
89
- version: '5'
88
+ version: '7'
90
89
  - !ruby/object:Gem::Dependency
91
90
  name: bootstrap_form
92
91
  requirement: !ruby/object:Gem::Requirement
@@ -125,16 +124,22 @@ dependencies:
125
124
  name: carrierwave
126
125
  requirement: !ruby/object:Gem::Requirement
127
126
  requirements:
128
- - - "~>"
127
+ - - ">"
128
+ - !ruby/object:Gem::Version
129
+ version: 2.2.1
130
+ - - "<"
129
131
  - !ruby/object:Gem::Version
130
- version: '2.2'
132
+ version: '3'
131
133
  type: :runtime
132
134
  prerelease: false
133
135
  version_requirements: !ruby/object:Gem::Requirement
134
136
  requirements:
135
- - - "~>"
137
+ - - ">"
136
138
  - !ruby/object:Gem::Version
137
- version: '2.2'
139
+ version: 2.2.1
140
+ - - "<"
141
+ - !ruby/object:Gem::Version
142
+ version: '3'
138
143
  - !ruby/object:Gem::Dependency
139
144
  name: csv
140
145
  requirement: !ruby/object:Gem::Requirement
@@ -219,20 +224,6 @@ dependencies:
219
224
  - - "~>"
220
225
  - !ruby/object:Gem::Version
221
226
  version: '5.5'
222
- - !ruby/object:Gem::Dependency
223
- name: github-markup
224
- requirement: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - ">="
227
- - !ruby/object:Gem::Version
228
- version: '0'
229
- type: :runtime
230
- prerelease: false
231
- version_requirements: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - ">="
234
- - !ruby/object:Gem::Version
235
- version: '0'
236
227
  - !ruby/object:Gem::Dependency
237
228
  name: google-analytics-data
238
229
  requirement: !ruby/object:Gem::Requirement
@@ -295,14 +286,14 @@ dependencies:
295
286
  requirements:
296
287
  - - ">="
297
288
  - !ruby/object:Gem::Version
298
- version: '0'
289
+ version: 1.4.1
299
290
  type: :runtime
300
291
  prerelease: false
301
292
  version_requirements: !ruby/object:Gem::Requirement
302
293
  requirements:
303
294
  - - ">="
304
295
  - !ruby/object:Gem::Version
305
- version: '0'
296
+ version: 1.4.1
306
297
  - !ruby/object:Gem::Dependency
307
298
  name: mini_magick
308
299
  requirement: !ruby/object:Gem::Requirement
@@ -521,6 +512,20 @@ dependencies:
521
512
  - - "<"
522
513
  - !ruby/object:Gem::Version
523
514
  version: '4'
515
+ - !ruby/object:Gem::Dependency
516
+ name: axe-core-rspec
517
+ requirement: !ruby/object:Gem::Requirement
518
+ requirements:
519
+ - - ">="
520
+ - !ruby/object:Gem::Version
521
+ version: '0'
522
+ type: :development
523
+ prerelease: false
524
+ version_requirements: !ruby/object:Gem::Requirement
525
+ requirements:
526
+ - - ">="
527
+ - !ruby/object:Gem::Version
528
+ version: '0'
524
529
  - !ruby/object:Gem::Dependency
525
530
  name: capybara
526
531
  requirement: !ruby/object:Gem::Requirement
@@ -787,7 +792,6 @@ dependencies:
787
792
  - - ">="
788
793
  - !ruby/object:Gem::Version
789
794
  version: '0'
790
- description:
791
795
  email:
792
796
  - exhibits-feedback@lists.stanford.edu
793
797
  executables: []
@@ -808,6 +812,7 @@ files:
808
812
  - app/assets/javascripts/spotlight/spotlight.js
809
813
  - app/assets/javascripts/spotlight/spotlight.js.map
810
814
  - app/assets/stylesheets/spotlight/_accessibility.scss
815
+ - app/assets/stylesheets/spotlight/_admin_users.scss
811
816
  - app/assets/stylesheets/spotlight/_attachments.css
812
817
  - app/assets/stylesheets/spotlight/_autocomplete.scss
813
818
  - app/assets/stylesheets/spotlight/_blacklight_configuration.scss
@@ -861,6 +866,12 @@ files:
861
866
  - app/components/blacklight/icons/warning_component.rb
862
867
  - app/components/blacklight/icons/zoom_in_component.rb
863
868
  - app/components/blacklight/icons/zoom_out_component.rb
869
+ - app/components/spotlight/admin_users/email_component.html.erb
870
+ - app/components/spotlight/admin_users/email_component.rb
871
+ - app/components/spotlight/admin_users/exhibit_roles_component.html.erb
872
+ - app/components/spotlight/admin_users/exhibit_roles_component.rb
873
+ - app/components/spotlight/admin_users/site_admin_component.html.erb
874
+ - app/components/spotlight/admin_users/site_admin_component.rb
864
875
  - app/components/spotlight/analytics/aggregation_component.html.erb
865
876
  - app/components/spotlight/analytics/aggregation_component.rb
866
877
  - app/components/spotlight/analytics/dashboard_component.html.erb
@@ -1110,6 +1121,8 @@ files:
1110
1121
  - app/models/spotlight/resources/csv_upload.rb
1111
1122
  - app/models/spotlight/resources/iiif_harvester.rb
1112
1123
  - app/models/spotlight/resources/iiif_manifest.rb
1124
+ - app/models/spotlight/resources/iiif_manifest_metadata.rb
1125
+ - app/models/spotlight/resources/iiif_manifest_v3.rb
1113
1126
  - app/models/spotlight/resources/iiif_service.rb
1114
1127
  - app/models/spotlight/resources/json_upload.rb
1115
1128
  - app/models/spotlight/resources/upload.rb
@@ -1341,6 +1354,7 @@ files:
1341
1354
  - app/views/spotlight/translations/show.yaml.yamlbuilder
1342
1355
  - config/i18n-tasks.yml
1343
1356
  - config/importmap.rb
1357
+ - config/initializers/devise_rails8_patch.rb
1344
1358
  - config/locales/devise.en.yml
1345
1359
  - config/locales/spotlight.ar.yml
1346
1360
  - config/locales/spotlight.de.yml
@@ -1505,6 +1519,7 @@ files:
1505
1519
  - spec/support/helpers/controller_level_helpers.rb
1506
1520
  - spec/support/stub_iiif_response.rb
1507
1521
  - spec/support/views/test_view_helpers.rb
1522
+ - spec/support/with_queue_adapter.rb
1508
1523
  - vendor/assets/images/sir-trevor-icons.svg
1509
1524
  - vendor/assets/javascripts/Leaflet.Editable.js
1510
1525
  - vendor/assets/javascripts/Path.Drag.js
@@ -1533,7 +1548,6 @@ homepage: https://github.com/projectblacklight/spotlight
1533
1548
  licenses: []
1534
1549
  metadata:
1535
1550
  rubygems_mfa_required: 'true'
1536
- post_install_message:
1537
1551
  rdoc_options: []
1538
1552
  require_paths:
1539
1553
  - lib
@@ -1548,8 +1562,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1548
1562
  - !ruby/object:Gem::Version
1549
1563
  version: '0'
1550
1564
  requirements: []
1551
- rubygems_version: 3.5.9
1552
- signing_key:
1565
+ rubygems_version: 3.6.9
1553
1566
  specification_version: 4
1554
1567
  summary: Enable librarians, curators, and others who are responsible for digital collections
1555
1568
  to create attractive, feature-rich websites that feature these collections.