blacklight-spotlight 4.1.2 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/app/assets/javascripts/spotlight/spotlight.esm.js +146 -27
  4. data/app/assets/javascripts/spotlight/spotlight.esm.js.map +1 -1
  5. data/app/assets/javascripts/spotlight/spotlight.js +146 -27
  6. data/app/assets/javascripts/spotlight/spotlight.js.map +1 -1
  7. data/app/assets/stylesheets/spotlight/_blacklight_configuration.scss +19 -1
  8. data/app/components/spotlight/breadcrumbs_component.html.erb +19 -0
  9. data/app/components/spotlight/breadcrumbs_component.rb +23 -0
  10. data/app/components/spotlight/exhibit_navbar_component.html.erb +25 -0
  11. data/app/components/spotlight/exhibit_navbar_component.rb +12 -0
  12. data/app/components/spotlight/tag_list_form_component.html.erb +14 -0
  13. data/app/components/spotlight/tag_list_form_component.rb +13 -0
  14. data/app/controllers/concerns/spotlight/controller.rb +9 -1
  15. data/app/controllers/concerns/spotlight/search_helper.rb +2 -2
  16. data/app/controllers/spotlight/about_pages_controller.rb +1 -1
  17. data/app/controllers/spotlight/admin_users_controller.rb +2 -2
  18. data/app/controllers/spotlight/appearances_controller.rb +4 -4
  19. data/app/controllers/spotlight/browse_controller.rb +2 -2
  20. data/app/controllers/spotlight/bulk_actions_controller.rb +1 -1
  21. data/app/controllers/spotlight/bulk_updates_controller.rb +7 -2
  22. data/app/controllers/spotlight/catalog_controller.rb +11 -10
  23. data/app/controllers/spotlight/contacts_controller.rb +5 -5
  24. data/app/controllers/spotlight/custom_fields_controller.rb +5 -5
  25. data/app/controllers/spotlight/custom_search_fields_controller.rb +5 -5
  26. data/app/controllers/spotlight/dashboards_controller.rb +4 -4
  27. data/app/controllers/spotlight/exhibits_controller.rb +6 -5
  28. data/app/controllers/spotlight/feature_pages_controller.rb +5 -5
  29. data/app/controllers/spotlight/featured_images_controller.rb +1 -1
  30. data/app/controllers/spotlight/groups_controller.rb +1 -1
  31. data/app/controllers/spotlight/home_pages_controller.rb +2 -2
  32. data/app/controllers/spotlight/job_trackers_controller.rb +3 -3
  33. data/app/controllers/spotlight/metadata_configurations_controller.rb +3 -3
  34. data/app/controllers/spotlight/pages_controller.rb +3 -3
  35. data/app/controllers/spotlight/resources/csv_upload_controller.rb +1 -1
  36. data/app/controllers/spotlight/resources_controller.rb +4 -4
  37. data/app/controllers/spotlight/roles_controller.rb +4 -4
  38. data/app/controllers/spotlight/search_configurations_controller.rb +3 -3
  39. data/app/controllers/spotlight/searches_controller.rb +5 -5
  40. data/app/controllers/spotlight/sites_controller.rb +4 -4
  41. data/app/controllers/spotlight/tags_controller.rb +3 -3
  42. data/app/controllers/spotlight/translations_controller.rb +5 -5
  43. data/app/helpers/spotlight/application_helper.rb +2 -2
  44. data/app/helpers/spotlight/crop_helper.rb +1 -1
  45. data/app/helpers/spotlight/pages_helper.rb +7 -0
  46. data/app/helpers/spotlight/title_helper.rb +2 -2
  47. data/app/javascript/spotlight/admin/blocks/browse_group_categories_block.js +1 -1
  48. data/app/javascript/spotlight/admin/blocks/resources_block.js +82 -1
  49. data/app/javascript/spotlight/admin/blocks/solr_documents_embed_block.js +1 -1
  50. data/app/javascript/spotlight/admin/blocks/uploaded_items_block.js +21 -0
  51. data/app/javascript/spotlight/admin/edit_in_place.js +27 -0
  52. data/app/javascript/spotlight/admin/index.js +0 -2
  53. data/app/javascript/spotlight/admin/sir-trevor/locales.js +11 -0
  54. data/app/jobs/concerns/spotlight/job_tracking.rb +1 -1
  55. data/app/jobs/spotlight/add_tags_job.rb +2 -2
  56. data/app/jobs/spotlight/add_uploads_from_csv.rb +1 -1
  57. data/app/jobs/spotlight/change_visibility_job.rb +2 -2
  58. data/app/jobs/spotlight/process_bulk_updates_csv_job.rb +2 -2
  59. data/app/jobs/spotlight/reindex_exhibit_job.rb +1 -1
  60. data/app/jobs/spotlight/reindex_job.rb +6 -6
  61. data/app/jobs/spotlight/remove_tags_job.rb +2 -2
  62. data/app/jobs/spotlight/rename_tags_job.rb +2 -2
  63. data/app/models/breadcrumb.rb +15 -0
  64. data/app/models/concerns/spotlight/exhibit_defaults.rb +1 -1
  65. data/app/models/concerns/spotlight/exhibit_documents.rb +2 -2
  66. data/app/models/concerns/spotlight/solr_document/finder.rb +4 -4
  67. data/app/models/concerns/spotlight/solr_document.rb +4 -4
  68. data/app/models/concerns/spotlight/translatables.rb +1 -1
  69. data/app/models/spotlight/analytics/ga.rb +3 -3
  70. data/app/models/spotlight/attachment.rb +1 -1
  71. data/app/models/spotlight/background_job_progress.rb +1 -1
  72. data/app/models/spotlight/contact_email.rb +1 -1
  73. data/app/models/spotlight/contact_form.rb +2 -2
  74. data/app/models/spotlight/custom_field.rb +2 -2
  75. data/app/models/spotlight/custom_search_field.rb +2 -2
  76. data/app/models/spotlight/job_tracker.rb +1 -1
  77. data/app/models/spotlight/page.rb +2 -2
  78. data/app/models/spotlight/resources/iiif_service.rb +4 -4
  79. data/app/models/spotlight/role.rb +1 -1
  80. data/app/models/spotlight/search.rb +2 -2
  81. data/app/services/spotlight/bulk_updates_csv_template_service.rb +2 -2
  82. data/app/services/spotlight/clone_translated_page_from_locale.rb +1 -1
  83. data/app/services/spotlight/etl/pipeline.rb +1 -1
  84. data/app/views/shared/_exhibit_navbar.html.erb +2 -24
  85. data/app/views/shared/_masthead.html.erb +1 -1
  86. data/app/views/spotlight/exhibits/_form.html.erb +1 -1
  87. data/app/views/spotlight/exhibits/_new_exhibit_form.html.erb +1 -1
  88. data/app/views/spotlight/metadata_configurations/_metadata_field.html.erb +16 -5
  89. data/app/views/spotlight/metadata_configurations/edit.html.erb +2 -2
  90. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb +3 -3
  91. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +3 -3
  92. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb +3 -3
  93. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb +3 -3
  94. data/app/views/spotlight/sir_trevor/blocks/_uploaded_items_block.html.erb +3 -2
  95. data/config/locales/spotlight.en.yml +4 -0
  96. data/lib/generators/spotlight/templates/catalog_controller.rb +1 -0
  97. data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +4 -0
  98. data/lib/migration/iiif.rb +3 -3
  99. data/lib/spotlight/engine.rb +6 -26
  100. data/lib/spotlight/version.rb +1 -1
  101. data/lib/tasks/spotlight_tasks.rake +3 -3
  102. data/spec/factories/exhibits.rb +1 -1
  103. data/spec/support/views/test_view_helpers.rb +0 -1
  104. metadata +11 -27
  105. data/app/builders/spotlight/bootstrap_breadcrumbs_builder.rb +0 -39
  106. data/app/javascript/spotlight/admin/appearance.js +0 -22
  107. data/app/views/shared/_breadcrumbs.html.erb +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 264d92ef87c83424b382a6925033397b0b886f66d9ef9e5fefeeff8a0f492a9b
4
- data.tar.gz: 00f4a1e42e0d4bacfa15cea790ec24085cdb9e46a2a005f1d47417de0b61cc21
3
+ metadata.gz: 4b9748a58737da3155547a7ae91de947638a30a54f8b69eb616ececa64d6a90a
4
+ data.tar.gz: 62915d1d008172d70a7a6374bda9672077b4454bbcb6a621a5055a7f8912ef8d
5
5
  SHA512:
6
- metadata.gz: 6e7c7c123467a8001c771d28944353fae1bb24d80039ca41c7dc927e1e8a8cfff6ec916467ff5241e88c45647d393d6dc68d05a17065cea95e31fc67c3de3a8e
7
- data.tar.gz: 24fbaf64f21ac53e2c0eb5c38663fd9fa3d490b5cab5854ee407237ba6c50092a5b1e72a79828d7775729531a4167006c7b9cfcf59c1d8c2265a8974aa162924
6
+ metadata.gz: 4a2607a1b105f87dbce17fa9569f9c1126d08d0bd75ef6db193e87bf38c06874cc0976f71bf946987881babd5da4da7dd00494cc77515837309059b20acf3cff
7
+ data.tar.gz: 474aa21fe721b381cd3aa220f29090f34101906aff760a3d829b9108b1fa03a3b18797b24376050ddd01d85202610fb824a80cdad4948fdcb6d78d3b292f948f
data/README.md CHANGED
@@ -78,9 +78,9 @@ See more detailed instructions for development environment setup at ["Contributi
78
78
  ## With Docker
79
79
 
80
80
  ```sh
81
- # because of how docker-compose handles named images, running `docker-compose up --build` will error when the Rails images have not been built locally
82
- docker-compose build
83
- docker-compose up
81
+ # because of how docker compose handles named images, running `docker compose up --build` will error when the Rails images have not been built locally
82
+ docker compose build
83
+ docker compose up
84
84
  ```
85
85
 
86
86
  ## Tests
@@ -4050,29 +4050,6 @@ class AddNewButton {
4050
4050
  }
4051
4051
  }
4052
4052
 
4053
- class Appearance {
4054
- connect(){
4055
- $("[data-behavior='restore-default']").each(function(){
4056
- var hidden = $("[data-default-value]", $(this));
4057
- var value = $($("[data-in-place-edit-target]", $(this)).data('in-place-edit-target'), $(this));
4058
- var button = $("[data-restore-default]", $(this));
4059
- hidden.on('blur', function(){
4060
- if( $(this).val() == $(this).data('default-value') ) {
4061
- button.addClass('d-none');
4062
- } else {
4063
- button.removeClass('d-none');
4064
- }
4065
- });
4066
- button.on('click', function(e){
4067
- e.preventDefault();
4068
- hidden.val(hidden.data('default-value'));
4069
- value.text(hidden.data('default-value'));
4070
- button.hide();
4071
- });
4072
- });
4073
- }
4074
- }
4075
-
4076
4053
  class BlacklightConfiguration {
4077
4054
  connect() {
4078
4055
  // Add Select/Deselect all button behavior
@@ -4629,6 +4606,33 @@ class EditInPlace {
4629
4606
  return false;
4630
4607
  });
4631
4608
  });
4609
+
4610
+ $("[data-behavior='restore-default']").each(function(){
4611
+ var hidden = $("[data-default-value]", $(this));
4612
+ var value = $($("[data-in-place-edit-target]", $(this)).data('in-place-edit-target'), $(this));
4613
+ var button = $("[data-restore-default]", $(this));
4614
+
4615
+ hidden.on('keypress', function(e) {
4616
+ if(e.which == 13) {
4617
+ hidden.trigger('blur');
4618
+ return false;
4619
+ }
4620
+ });
4621
+
4622
+ hidden.on('blur', function(){
4623
+ if( $(this).val() == $(this).data('default-value') ) {
4624
+ button.addClass('d-none');
4625
+ } else {
4626
+ button.removeClass('d-none');
4627
+ }
4628
+ });
4629
+ button.on('click', function(e){
4630
+ e.preventDefault();
4631
+ hidden.val(hidden.data('default-value'));
4632
+ value.text(hidden.data('default-value'));
4633
+ button.hide();
4634
+ });
4635
+ });
4632
4636
  }
4633
4637
  }
4634
4638
 
@@ -5131,6 +5135,7 @@ jQuery.fn.scrollStop = function(callback) {
5131
5135
  };
5132
5136
 
5133
5137
  // Place all the behaviors and hooks related to the matching controller here.
5138
+ // All this logic will automatically be available in application.js.
5134
5139
 
5135
5140
  class Pages {
5136
5141
  connect(){
@@ -5597,6 +5602,8 @@ class CheckboxSubmit {
5597
5602
  }
5598
5603
 
5599
5604
  // Visibility toggle for items in an exhibit, based on Blacklight's bookmark toggle
5605
+ // See: https://github.com/projectblacklight/blacklight/blob/main/app/javascript/blacklight/bookmark_toggle.js
5606
+
5600
5607
 
5601
5608
  const VisibilityToggle = (e) => {
5602
5609
  if (e.target.matches('[data-checkboxsubmit-target="checkbox"]')) {
@@ -5923,10 +5930,24 @@ Spotlight$1.Block.Resources = (function(){
5923
5930
  formable: true,
5924
5931
  autocompleteable: true,
5925
5932
  show_heading: true,
5933
+ show_alt_text: true,
5926
5934
 
5927
5935
  title: function() { return i18n.t("blocks:" + this.type + ":title"); },
5928
5936
  description: function() { return i18n.t("blocks:" + this.type + ":description"); },
5929
-
5937
+ alt_text_guidelines: function() {
5938
+ if (this.show_alt_text) {
5939
+ return i18n.t("blocks:alt_text_guidelines:intro");
5940
+ }
5941
+ return "";
5942
+ },
5943
+ alt_text_guidelines_link: function() {
5944
+ if (this.show_alt_text) {
5945
+ var link_url = i18n.t("blocks:alt_text_guidelines:link_url");
5946
+ var link_label = i18n.t("blocks:alt_text_guidelines:link_label");
5947
+ return '<a target="_blank" href="' + link_url + '">' + link_label + '</a>';
5948
+ }
5949
+ return "";
5950
+ },
5930
5951
  icon_name: "resources",
5931
5952
  blockGroup: function() { return i18n.t("blocks:group:items") },
5932
5953
 
@@ -5936,6 +5957,8 @@ Spotlight$1.Block.Resources = (function(){
5936
5957
  show_secondary_field_key: "show-secondary-caption",
5937
5958
 
5938
5959
  display_checkbox: "display-checkbox",
5960
+ decorative_checkbox: "decorative-checkbox",
5961
+ alt_text_textarea: "alt-text-textarea",
5939
5962
 
5940
5963
  globalIndex: 0,
5941
5964
 
@@ -5943,6 +5966,13 @@ Spotlight$1.Block.Resources = (function(){
5943
5966
  return [];
5944
5967
  },
5945
5968
 
5969
+ _altTextFieldsHTML: function(index, data) {
5970
+ if (this.show_alt_text) {
5971
+ return this.altTextHTML(index, data);
5972
+ }
5973
+ return "";
5974
+ },
5975
+
5946
5976
  _itemPanel: function(data) {
5947
5977
  var index = "item_" + this.globalIndex++;
5948
5978
  var checked;
@@ -5973,6 +6003,7 @@ Spotlight$1.Block.Resources = (function(){
5973
6003
  <div class="main">
5974
6004
  <div class="title card-title">${data.title}</div>
5975
6005
  <div>${(data.slug || data.id)}</div>
6006
+ ${this._altTextFieldsHTML(index, data)}
5976
6007
  </div>
5977
6008
  <div class="remove float-right float-end">
5978
6009
  <a data-item-grid-panel-remove="true" href="#">${i18n.t("blocks:resources:panel:remove")}</a>
@@ -6009,6 +6040,7 @@ Spotlight$1.Block.Resources = (function(){
6009
6040
 
6010
6041
  createItemPanel: function(data) {
6011
6042
  var panel = this._itemPanel(data);
6043
+ this.attachAltTextHandlers(panel);
6012
6044
  $(panel).appendTo($('.panels > ol', this.inner));
6013
6045
  $('[data-behavior="nestable"]', this.inner).trigger('change');
6014
6046
  },
@@ -6041,11 +6073,67 @@ Spotlight$1.Block.Resources = (function(){
6041
6073
  return `<div class="form resources-admin clearfix">
6042
6074
  <div class="widget-header">
6043
6075
  ${this.description()}
6076
+ ${this.alt_text_guidelines()}
6077
+ ${this.alt_text_guidelines_link()}
6044
6078
  </div>
6045
6079
  ${this.content()}
6046
6080
  </div>`
6047
6081
  },
6048
6082
 
6083
+ _altTextData: function(data) {
6084
+ const isDecorative = data.decorative;
6085
+ const altText = isDecorative ? '' : (data.alt_text || '');
6086
+ const altTextBackup = data.alt_text_backup || '';
6087
+ const placeholderAttr = isDecorative ? '' : `placeholder="${i18n.t("blocks:resources:alt_text:placeholder")}"`;
6088
+ const disabledAttr = isDecorative ? 'disabled' : '';
6089
+
6090
+ return { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr };
6091
+ },
6092
+
6093
+ altTextHTML: function(index, data) {
6094
+ const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);
6095
+ return `<div class="mt-2 pt-2 d-flex">
6096
+ <div class="me-2 mr-2">
6097
+ <label class="col-form-label pb-0 pt-1" for="${this.formId(this.alt_text_textarea + '_' + data.id)}">${i18n.t("blocks:resources:alt_text:alternative_text")}</label>
6098
+ <div class="form-check mb-1 justify-content-end">
6099
+ <input class="form-check-input" type="checkbox"
6100
+ id="${this.formId(this.decorative_checkbox + '_' + data.id)}" name="item[${index}][decorative]" ${isDecorative ? 'checked' : ''}>
6101
+ <label class="form-check-label" for="${this.formId(this.decorative_checkbox + '_' + data.id)}">${i18n.t("blocks:resources:alt_text:decorative")}</label>
6102
+ </div>
6103
+ </div>
6104
+ <div class="flex-grow-1 flex-fill d-flex">
6105
+ <input type="hidden" name="item[${index}][alt_text_backup]" value="${altTextBackup}" />
6106
+ <textarea class="form-control w-100" rows="2" ${placeholderAttr}
6107
+ id="${this.formId(this.alt_text_textarea + '_' + data.id)}" name="item[${index}][alt_text]" ${disabledAttr}>${altText}</textarea>
6108
+ </div>
6109
+ </div>`
6110
+ },
6111
+
6112
+ attachAltTextHandlers: function(panel) {
6113
+ if (this.show_alt_text) {
6114
+ const decorativeCheckbox = $('input[name$="[decorative]"]', panel);
6115
+ const altTextInput = $('textarea[name$="[alt_text]"]', panel);
6116
+ const altTextBackupInput = $('input[name$="[alt_text_backup]"]', panel);
6117
+
6118
+ decorativeCheckbox.on('change', function() {
6119
+ const isDecorative = this.checked;
6120
+ if (isDecorative) {
6121
+ altTextBackupInput.val(altTextInput.val());
6122
+ altTextInput.val('');
6123
+ } else {
6124
+ altTextInput.val(altTextBackupInput.val());
6125
+ }
6126
+ altTextInput
6127
+ .prop('disabled', isDecorative)
6128
+ .attr('placeholder', isDecorative ? '' : i18n.t("blocks:resources:alt_text:placeholder"));
6129
+ });
6130
+
6131
+ altTextInput.on('input', function() {
6132
+ $(this).data('lastValue', $(this).val());
6133
+ });
6134
+ }
6135
+ },
6136
+
6049
6137
  onBlockRender: function() {
6050
6138
  Module.init($('[data-behavior="nestable"]', this.inner));
6051
6139
 
@@ -6235,7 +6323,7 @@ SirTrevor.Blocks.BrowseGroupCategories = (function(){
6235
6323
  },
6236
6324
 
6237
6325
  item_options: function() { return `
6238
- '<label>
6326
+ <label>
6239
6327
  <input type="hidden" name="display-item-counts" value="false" />
6240
6328
  <input type="checkbox" name="display-item-counts" value="true" checked />
6241
6329
  ${i18n.t("blocks:browse_group_categories:item_counts")}
@@ -6670,7 +6758,7 @@ SirTrevor.Blocks.SolrDocumentsEmbed = (function(){
6670
6758
 
6671
6759
  return SirTrevor.Blocks.SolrDocumentsBase.extend({
6672
6760
  type: "solr_documents_embed",
6673
-
6761
+ show_alt_text: false,
6674
6762
  icon_name: "item_embed",
6675
6763
 
6676
6764
  item_options: function() { return "" },
@@ -6834,6 +6922,7 @@ SirTrevor.Blocks.UploadedItems = (function(){
6834
6922
  <label for="${this.formId('link_' + dataId)}" class="col-form-label col-md-3">${i18n.t("blocks:uploaded_items:link")}</label>
6835
6923
  <input type="text" class="form-control col" id="${this.formId('link_' + dataId)}" name="item[${index}][link]" data-field="link"/>
6836
6924
  </div>
6925
+ ${this._altTextFieldsHTML(index, data)}
6837
6926
  </div>
6838
6927
  <div class="remove float-right float-end">
6839
6928
  <a data-item-grid-panel-remove="true" href="#">${i18n.t("blocks:resources:panel:remove")}</a>
@@ -6861,6 +6950,8 @@ SirTrevor.Blocks.UploadedItems = (function(){
6861
6950
  return `<div class="form oembed-text-admin clearfix">
6862
6951
  <div class="widget-header">
6863
6952
  ${this.description()}
6953
+ ${this.alt_text_guidelines()}
6954
+ ${this.alt_text_guidelines_link()}
6864
6955
  </div>
6865
6956
  <div class="row">
6866
6957
  <div class="form-group mb-3 col-md-8">
@@ -6880,6 +6971,24 @@ SirTrevor.Blocks.UploadedItems = (function(){
6880
6971
  </div>`
6881
6972
  },
6882
6973
 
6974
+ altTextHTML: function(index, data) {
6975
+ const { isDecorative, altText, altTextBackup, placeholderAttr, disabledAttr } = this._altTextData(data);
6976
+ return `
6977
+ <div class="field row mr-3 me-3">
6978
+ <div class="col-lg-3 ps-md-2 pl-md-2">
6979
+ <label class="col-form-label text-nowrap pb-0 pt-1 justify-content-md-start justify-content-lg-end d-flex" for="${this.formId(this.alt_text_textarea + '_' + data.id)}">${i18n.t("blocks:resources:alt_text:alternative_text")}</label>
6980
+ <div class="form-check d-flex justify-content-md-start justify-content-lg-end">
6981
+ <input class="form-check-input" type="checkbox"
6982
+ id="${this.formId(this.decorative_checkbox + '_' + data.id)}" name="item[${index}][decorative]" ${isDecorative ? 'checked' : ''}>
6983
+ <label class="form-check-label" for="${this.formId(this.decorative_checkbox + '_' + data.id)}">${i18n.t("blocks:resources:alt_text:decorative")}</label>
6984
+ </div>
6985
+ </div>
6986
+ <input type="hidden" name="item[${index}][alt_text_backup]" value="${altTextBackup}" />
6987
+ <textarea class="col-lg-9" rows="2" ${placeholderAttr}
6988
+ id="${this.formId(this.alt_text_textarea + '_' + data.id)}" name="item[${index}][alt_text]" ${disabledAttr}>${altText}</textarea>
6989
+ </div>`
6990
+ },
6991
+
6883
6992
  zpr_key: 'zpr_link'
6884
6993
  });
6885
6994
  })();
@@ -7090,6 +7199,11 @@ SirTrevor.Locales.en.blocks = $.extend(SirTrevor.Locales.en.blocks, {
7090
7199
  drag: "Drag",
7091
7200
  display: "Display?",
7092
7201
  remove: "Remove"
7202
+ },
7203
+ alt_text: {
7204
+ decorative: "Decorative",
7205
+ alternative_text: "Alternative text",
7206
+ placeholder: "Enter alt text for this item..."
7093
7207
  }
7094
7208
  },
7095
7209
 
@@ -7155,6 +7269,12 @@ SirTrevor.Locales.en.blocks = $.extend(SirTrevor.Locales.en.blocks, {
7155
7269
  group: {
7156
7270
  undefined: "Standard widgets",
7157
7271
  items: "Exhibit item widgets"
7272
+ },
7273
+
7274
+ alt_text_guidelines: {
7275
+ intro: 'For each item, please enter alternative text or appropriately check the decorative box. ',
7276
+ link_label: 'Guidelines for writing alt text.',
7277
+ link_url: 'https://www.w3.org/WAI/tutorials/images/'
7158
7278
  }
7159
7279
  });
7160
7280
 
@@ -7165,7 +7285,6 @@ class AdminIndex {
7165
7285
  connect() {
7166
7286
  new AddAnother().connect();
7167
7287
  new AddNewButton().connect();
7168
- new Appearance().connect();
7169
7288
  new CopyEmailAddress().connect();
7170
7289
  new Croppable().connect();
7171
7290
  new EditInPlace().connect();