blacklight-spotlight 3.0.0.alpha.8 → 3.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/app/assets/images/blacklight/arrow-alt-circle-left.svg +1 -0
  4. data/app/assets/images/blacklight/arrow-alt-circle-right.svg +1 -0
  5. data/app/assets/javascripts/spotlight/admin/{add_new_page_button.js → add_new_button.js} +7 -0
  6. data/app/assets/javascripts/spotlight/admin/block_mixins/autocompleteable.js +4 -4
  7. data/app/assets/javascripts/spotlight/admin/blocks/browse_block.js +55 -1
  8. data/app/assets/javascripts/spotlight/admin/blocks/browse_group_categories_block.js +88 -0
  9. data/app/assets/javascripts/spotlight/admin/blocks/pages_block.js +1 -1
  10. data/app/assets/javascripts/spotlight/admin/blocks/solr_documents_base_block.js +1 -1
  11. data/app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js +7 -2
  12. data/app/assets/javascripts/spotlight/admin/crop.es6 +11 -0
  13. data/app/assets/javascripts/spotlight/admin/croppable.js +1 -1
  14. data/app/assets/javascripts/spotlight/admin/index.js +0 -2
  15. data/app/assets/javascripts/spotlight/admin/search_typeahead.js +2 -2
  16. data/app/assets/javascripts/spotlight/admin/sir-trevor/block_controls.js +21 -12
  17. data/app/assets/javascripts/spotlight/admin/sir-trevor/locales.js +11 -3
  18. data/app/assets/javascripts/spotlight/user/browse_group_categories.js +59 -0
  19. data/app/assets/javascripts/spotlight/user/index.js +1 -0
  20. data/app/assets/stylesheets/spotlight/_accessibility.scss +1 -1
  21. data/app/assets/stylesheets/spotlight/_breadcrumbs.scss +8 -0
  22. data/app/assets/stylesheets/spotlight/_browse.scss +16 -0
  23. data/app/assets/stylesheets/spotlight/_catalog.scss +6 -6
  24. data/app/assets/stylesheets/spotlight/_curation.scss +6 -0
  25. data/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +214 -83
  26. data/app/assets/stylesheets/spotlight/_header.scss +1 -1
  27. data/app/assets/stylesheets/spotlight/_item_text_block.scss +6 -0
  28. data/app/assets/stylesheets/spotlight/_pages.scss +10 -5
  29. data/app/assets/stylesheets/spotlight/_report_a_problem.scss +5 -2
  30. data/app/assets/stylesheets/spotlight/_spotlight.scss +2 -0
  31. data/app/assets/stylesheets/spotlight/_translations.scss +7 -0
  32. data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +69 -0
  33. data/app/builders/spotlight/bootstrap_breadcrumbs_builder.rb +1 -2
  34. data/app/controllers/concerns/spotlight/search_helper.rb +2 -8
  35. data/app/controllers/spotlight/appearances_controller.rb +0 -12
  36. data/app/controllers/spotlight/browse_controller.rb +7 -3
  37. data/app/controllers/spotlight/catalog_controller.rb +1 -1
  38. data/app/controllers/spotlight/concerns/application_controller.rb +13 -2
  39. data/app/controllers/spotlight/exhibits_controller.rb +2 -3
  40. data/app/controllers/spotlight/featured_images_controller.rb +1 -1
  41. data/app/controllers/spotlight/groups_controller.rb +80 -0
  42. data/app/controllers/spotlight/pages_controller.rb +6 -9
  43. data/app/controllers/spotlight/resources/csv_upload_controller.rb +1 -1
  44. data/app/controllers/spotlight/searches_controller.rb +7 -19
  45. data/app/controllers/spotlight/translations_controller.rb +46 -0
  46. data/app/helpers/spotlight/application_helper.rb +1 -1
  47. data/app/helpers/spotlight/crop_helper.rb +4 -1
  48. data/app/helpers/spotlight/crud_link_helpers.rb +1 -1
  49. data/app/helpers/spotlight/main_app_helpers.rb +1 -1
  50. data/app/jobs/spotlight/add_uploads_from_csv.rb +30 -5
  51. data/app/mailers/spotlight/indexing_complete_mailer.rb +3 -2
  52. data/app/models/concerns/spotlight/exhibit_defaults.rb +1 -1
  53. data/app/models/concerns/spotlight/translatables.rb +17 -1
  54. data/app/models/sir_trevor_rails/blocks/browse_group_categories_block.rb +25 -0
  55. data/app/models/spotlight/ability.rb +2 -0
  56. data/app/models/spotlight/about_page.rb +3 -1
  57. data/app/models/spotlight/blacklight_configuration.rb +2 -1
  58. data/app/models/spotlight/contact.rb +1 -1
  59. data/app/models/spotlight/custom_field.rb +3 -3
  60. data/app/models/spotlight/exhibit.rb +18 -4
  61. data/app/models/spotlight/feature_page.rb +3 -1
  62. data/app/models/spotlight/featured_image.rb +29 -12
  63. data/app/models/spotlight/group.rb +22 -0
  64. data/app/models/spotlight/group_member.rb +11 -0
  65. data/app/models/spotlight/home_page.rb +3 -1
  66. data/app/models/spotlight/main_navigation.rb +2 -2
  67. data/app/models/spotlight/masthead.rb +1 -1
  68. data/app/models/spotlight/page.rb +5 -1
  69. data/app/models/spotlight/page_configurations.rb +6 -0
  70. data/app/models/spotlight/page_content.rb +2 -0
  71. data/app/models/spotlight/resources/csv_upload.rb +2 -1
  72. data/app/models/spotlight/resources/iiif_manifest.rb +8 -6
  73. data/app/models/spotlight/resources/upload.rb +1 -1
  74. data/app/models/spotlight/search.rb +10 -1
  75. data/app/models/spotlight/solr_document_sidecar.rb +7 -5
  76. data/app/models/spotlight/temporary_image.rb +8 -0
  77. data/app/services/spotlight/exhibit_import_export_service.rb +482 -0
  78. data/app/services/spotlight/solr_document_builder.rb +1 -0
  79. data/app/values/custom_field_name.rb +1 -0
  80. data/app/views/catalog/_save_search.html.erb +1 -1
  81. data/app/views/spotlight/about_pages/_empty.html.erb +5 -5
  82. data/app/views/spotlight/browse/_search.html.erb +5 -3
  83. data/app/views/spotlight/browse/_search_title.html.erb +2 -1
  84. data/app/views/spotlight/browse/index.html.erb +13 -0
  85. data/app/views/spotlight/catalog/_document.html.erb +2 -4
  86. data/app/views/spotlight/catalog/index.iiif_json.jbuilder +22 -0
  87. data/app/views/spotlight/contacts/_form.html.erb +1 -1
  88. data/app/views/spotlight/feature_pages/_empty.html.erb +5 -5
  89. data/app/views/spotlight/featured_images/_form.html.erb +1 -1
  90. data/app/views/spotlight/featured_images/_upload_form.html.erb +1 -1
  91. data/app/views/spotlight/home_pages/_empty.html.erb +3 -3
  92. data/app/views/spotlight/indexing_complete_mailer/documents_indexed.html.erb +9 -0
  93. data/app/views/spotlight/pages/_form.html.erb +2 -2
  94. data/app/views/spotlight/searches/_form.html.erb +13 -0
  95. data/app/views/spotlight/searches/_group.html.erb +27 -0
  96. data/app/views/spotlight/searches/_search.html.erb +1 -0
  97. data/app/views/spotlight/searches/index.html.erb +58 -17
  98. data/app/views/spotlight/shared/_honeypot_field.html.erb +4 -0
  99. data/app/views/spotlight/shared/_report_a_problem.html.erb +7 -10
  100. data/app/views/spotlight/sir_trevor/blocks/_browse_block.html.erb +1 -0
  101. data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +44 -0
  102. data/app/views/spotlight/sir_trevor/blocks/_uploaded_items_block.html.erb +7 -1
  103. data/app/views/spotlight/translations/_browse_categories.html.erb +29 -3
  104. data/app/views/spotlight/translations/_general.html.erb +7 -7
  105. data/app/views/spotlight/translations/_groups.html.erb +34 -0
  106. data/app/views/spotlight/translations/_import.html.erb +24 -0
  107. data/app/views/spotlight/translations/_metadata.html.erb +1 -1
  108. data/app/views/spotlight/translations/_page.html.erb +5 -5
  109. data/app/views/spotlight/translations/_pages.html.erb +4 -4
  110. data/app/views/spotlight/translations/_pages_table.html.erb +5 -5
  111. data/app/views/spotlight/translations/_search_fields.html.erb +3 -3
  112. data/app/views/spotlight/translations/edit.html.erb +14 -6
  113. data/app/views/spotlight/translations/show.yaml.yamlbuilder +81 -0
  114. data/config/i18n-tasks.yml +7 -0
  115. data/config/locales/spotlight.ar.yml +47 -24
  116. data/config/locales/spotlight.en.yml +182 -127
  117. data/config/routes.rb +16 -1
  118. data/db/migrate/20200403161512_add_subtitle_to_searches.rb +7 -0
  119. data/db/migrate/20210113092223_create_spotlight_groups.rb +23 -0
  120. data/lib/generators/spotlight/install_generator.rb +23 -2
  121. data/lib/generators/spotlight/templates/config/initializers/sir_trevor_rails.rb +10 -0
  122. data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +3 -1
  123. data/lib/spotlight/engine.rb +27 -3
  124. data/lib/spotlight/upload_field_config.rb +1 -0
  125. data/lib/spotlight/version.rb +1 -1
  126. data/spec/controllers/spotlight/about_pages_controller_spec.rb +3 -3
  127. data/spec/controllers/spotlight/browse_controller_spec.rb +24 -1
  128. data/spec/controllers/spotlight/catalog_controller_spec.rb +1 -1
  129. data/spec/controllers/spotlight/contacts_controller_spec.rb +2 -2
  130. data/spec/controllers/spotlight/feature_pages_controller_spec.rb +11 -0
  131. data/spec/controllers/spotlight/groups_controller_spec.rb +103 -0
  132. data/spec/controllers/spotlight/home_pages_controller_spec.rb +2 -2
  133. data/spec/controllers/spotlight/resources/csv_upload_controller_spec.rb +4 -4
  134. data/spec/controllers/spotlight/resources/upload_controller_spec.rb +2 -2
  135. data/spec/controllers/spotlight/searches_controller_spec.rb +10 -3
  136. data/spec/controllers/spotlight/translations_controller_spec.rb +53 -2
  137. data/spec/controllers/spotlight/view_configurations_controller_spec.rb +1 -1
  138. data/spec/examples.txt +1437 -1389
  139. data/spec/factories/featured_images.rb +4 -0
  140. data/spec/factories/group.rb +17 -0
  141. data/spec/factories/searches.rb +11 -1
  142. data/spec/features/add_contacts_spec.rb +1 -1
  143. data/spec/features/browse_category_admin_spec.rb +39 -7
  144. data/spec/features/browse_category_navigation_spec.rb +44 -0
  145. data/spec/features/browse_category_spec.rb +2 -2
  146. data/spec/features/catalog_spec.rb +2 -2
  147. data/spec/features/create_exhibit_spec.rb +5 -4
  148. data/spec/features/dashboard_spec.rb +7 -7
  149. data/spec/features/edit_search_fields_spec.rb +2 -2
  150. data/spec/features/exhibits/administration_spec.rb +3 -3
  151. data/spec/features/exhibits/edit_metadata_fields_spec.rb +1 -1
  152. data/spec/features/exhibits/language_create_edit_spec.rb +3 -3
  153. data/spec/features/exhibits/translation_editing_spec.rb +57 -8
  154. data/spec/features/home_page_spec.rb +13 -4
  155. data/spec/features/item_admin_spec.rb +4 -4
  156. data/spec/features/javascript/about_page_admin_spec.rb +1 -1
  157. data/spec/features/javascript/block_controls_spec.rb +3 -1
  158. data/spec/features/javascript/blocks/browse_group_categories_block_spec.rb +64 -0
  159. data/spec/features/javascript/blocks/uploaded_items_block_spec.rb +4 -1
  160. data/spec/features/javascript/browse_group_admin_spec.rb +45 -0
  161. data/spec/features/javascript/edit_in_place_spec.rb +3 -3
  162. data/spec/features/javascript/feature_page_admin_spec.rb +1 -1
  163. data/spec/features/javascript/search_config_admin_spec.rb +1 -1
  164. data/spec/features/report_a_problem_spec.rb +6 -5
  165. data/spec/helpers/spotlight/crud_link_helpers_spec.rb +3 -3
  166. data/spec/helpers/spotlight/pages_helper_spec.rb +2 -2
  167. data/spec/i18n_spec.rb +0 -2
  168. data/spec/jobs/spotlight/add_uploads_from_csv_spec.rb +13 -1
  169. data/spec/mailers/spotlight/indexing_complete_mailer_spec.rb +11 -1
  170. data/spec/models/sir_trevor_rails/blocks/browse_group_categories_block_spec.rb +41 -0
  171. data/spec/models/solr_document_spec.rb +2 -3
  172. data/spec/models/spotlight/access_controls_enforcement_search_builder_spec.rb +1 -0
  173. data/spec/models/spotlight/exhibit_spec.rb +18 -2
  174. data/spec/models/spotlight/featured_image_spec.rb +27 -0
  175. data/spec/models/spotlight/group_spec.rb +19 -0
  176. data/spec/models/spotlight/main_navigation_spec.rb +1 -1
  177. data/spec/models/spotlight/page_spec.rb +6 -1
  178. data/spec/models/spotlight/resources/upload_spec.rb +43 -79
  179. data/spec/models/spotlight/role_spec.rb +3 -3
  180. data/spec/models/spotlight/search_spec.rb +30 -3
  181. data/spec/{serializers/spotlight/exhibit_export_serializer_spec.rb → services/spotlight/exhibit_import_export_service_spec.rb} +168 -23
  182. data/spec/services/spotlight/iiif_resource_resolver_spec.rb +1 -1
  183. data/spec/services/spotlight/solr_document_builder_spec.rb +1 -1
  184. data/spec/spec_helper.rb +1 -1
  185. data/spec/support/features/test_features_helpers.rb +15 -0
  186. data/spec/test_app_templates/Gemfile.extra +1 -3
  187. data/spec/test_app_templates/catalog_controller.rb +6 -3
  188. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  189. data/spec/views/shared/_exhibit_navbar.html.erb_spec.rb +1 -1
  190. data/spec/views/spotlight/browse/index.html.erb_spec.rb +2 -0
  191. data/spec/views/spotlight/dashboards/_analytics.html.erb_spec.rb +1 -1
  192. data/spec/views/spotlight/dashboards/_reindexing_activity.html.erb_spec.rb +6 -6
  193. data/spec/views/spotlight/metadata_configurations/_metadata_field.html.erb_spec.rb +3 -3
  194. data/spec/views/spotlight/pages/show.html.erb_spec.rb +1 -0
  195. data/spec/views/spotlight/search_configurations/_facets.html.erb_spec.rb +1 -1
  196. data/spec/views/spotlight/search_configurations/_sort.html.erb_spec.rb +7 -8
  197. data/spec/views/spotlight/translations/_import.html.erb_spec.rb +24 -0
  198. data/vendor/assets/javascripts/leaflet-iiif.js +46 -21
  199. data/vendor/assets/javascripts/tiny-slider.js +3218 -0
  200. data/vendor/assets/stylesheets/tiny-slider.css +1 -0
  201. metadata +399 -284
  202. data/app/serializers/spotlight/exhibit_export_serializer.rb +0 -205
  203. data/app/serializers/spotlight/featured_image_representer.rb +0 -29
  204. data/app/serializers/spotlight/main_navigation_representer.rb +0 -13
  205. data/app/serializers/spotlight/page_representer.rb +0 -33
  206. data/vendor/assets/javascripts/handlebars-v1.3.0.js +0 -2746
@@ -8,6 +8,7 @@ module Spotlight
8
8
  end
9
9
 
10
10
  attr_reader :resource
11
+
11
12
  delegate :exhibit, :document_model, to: :resource
12
13
 
13
14
  ##
@@ -5,6 +5,7 @@
5
5
  class CustomFieldName
6
6
  delegate :readonly_field?, :configuration, :field_type, to: :custom_field
7
7
  attr_reader :custom_field
8
+
8
9
  def initialize(custom_field)
9
10
  @custom_field = custom_field
10
11
  end
@@ -12,7 +12,7 @@
12
12
  <div class="modal-body">
13
13
  <%= f.text_field :title, label: t(:'spotlight.saved_search.title') %>
14
14
  <%= label_tag :id, t(:'spotlight.saved_search.id'), class: 'col-form-label' %>
15
- <%= select_tag :id, options_for_select(current_exhibit.searches.map { |s| [s.title, s.id] }), include_blank: true, class: 'form-control' %>
15
+ <%= select_tag :id, options_for_select(current_exhibit.searches.map { |s| [s.full_title, s.id] }), include_blank: true, class: 'form-control' %>
16
16
  <%= render_hash_as_hidden_fields(search_state.params_for_search.except(:qt, :page, :utf8)) %>
17
17
  </div>
18
18
  <div class="modal-footer d-flex flex-row-reverse justify-content-start">
@@ -4,23 +4,23 @@
4
4
 
5
5
  <ol>
6
6
  <li>
7
- To add content to this page, click the Edit button above to enter Edit mode.
7
+ To add content to this page, select the Edit button above to enter edit mode.
8
8
  </li>
9
9
  <li>
10
- In Edit mode, click the plus sign icon to display the widget selection panel. This panel displays a range of widgets, each of which adds a different type of content to the page.
10
+ In edit mode, select the plus sign icon to display the widget selection panel. This panel displays a range of widgets, each of which adds a different type of content to the page.
11
11
  </li>
12
12
  <li>
13
- Select a widget to configure. Click <strong>Save changes</strong> when you're ready to add it to the page.
13
+ Select a widget to configure. Select <b>Save changes</b> when you're ready to add it to the page.
14
14
  </li>
15
15
  <li>
16
16
  Repeat the steps above to continue adding widgets to build out the page. To work more efficiently, you can configure multiple widgets before saving the page. Use the icons in the lower right of the widget configuration panel to preview, reorder, or delete widgets.
17
17
  </li>
18
18
  <li>
19
- Use the checkbox in the <strong>Options</strong> tab to publish or unpublish the page.
19
+ Use the checkbox in the <b>Options</b> tab to publish or unpublish the page.
20
20
  </li>
21
21
  <li>
22
22
  Visit the Spotlight <%= link_to 'documentation pages', 'https://github.com/projectblacklight/spotlight/wiki' %> to learn more about creating exhibit pages.
23
23
  </li>
24
24
  </ol>
25
25
  </div>
26
- <% end %>
26
+ <% end %>
@@ -1,12 +1,14 @@
1
1
  <%= cache [@exhibit, search, I18n.locale] do %>
2
+ <% group ||= @group %>
2
3
  <div class="col-md-4 col-12 category">
3
- <%= link_to spotlight.exhibit_browse_path(@exhibit, search) do %>
4
+ <%= link_to group.present? ? spotlight.exhibit_browse_group_path(@exhibit, group, search) : spotlight.exhibit_browse_path(@exhibit, search) do %>
4
5
  <div class="image-overlay">
5
6
  <%= image_tag(search.thumbnail_image_url || 'spotlight/default_browse_thumbnail.jpg', class: 'img-responsive', alt: '') %>
6
7
  <div class="text-overlay">
7
8
  <h2 class="browse-category-title">
8
- <%= search.title%>
9
- <small><%= t :'spotlight.browse.search.item_count', count: search.count %></small>
9
+ <span class="title"><%= search.title%></span>
10
+ <% if search.subtitle.present? %><span class="category-subtitle"><%= search.subtitle %></span><% end %>
11
+ <small class="item-count"><%= t :'spotlight.browse.search.item_count', count: search.count %></small>
10
12
  </h2>
11
13
  </div>
12
14
  </div>
@@ -1,2 +1,3 @@
1
- <%= search.title %>
1
+ <span class="title"><%= search.title %></span>
2
+ <% if search.subtitle.present? %><span class="subtitle"><%= search.subtitle %></span><% end %>
2
3
  <small class="item-count"><%= t :'spotlight.browse.search.item_count', count: params[:browse_q] ? parent_search_count: search.count %></small>
@@ -2,6 +2,19 @@
2
2
  <% set_html_page_title(title) %>
3
3
  <h1 class="sr-only"><%= title %></h1>
4
4
 
5
+ <% if @groups.any? # active %>
6
+ <ul class="browse-group-navigation nav nav-pills justify-content-center">
7
+ <li class="nav-item">
8
+ <%= link_to t('spotlight.exhibits.groups.all'), exhibit_browse_index_path(current_exhibit), class: "nav-link #{'active' if @group.blank?}" %>
9
+ </li>
10
+ <% @groups.each do |group| %>
11
+ <li class="nav-item">
12
+ <%= link_to group.title, exhibit_browse_groups_path(current_exhibit, group), class: "nav-link #{'active' if @group.present? && @group.id == group.id}" %>
13
+ </li>
14
+ <% end %>
15
+ </ul>
16
+ <% end %>
17
+
5
18
  <div class="browse-landing row">
6
19
  <%= render collection: @searches, partial: 'spotlight/browse/search' %>
7
20
  </div>
@@ -1,4 +1,2 @@
1
- <% # copied from blacklight; rails tries to render spotlight/catalog/document explicitly.. -%>
2
- <div class="document <%= render_document_class document %>" itemscope itemtype="<%= document.itemtype %>">
3
- <%= render_document_partials document, blacklight_config.view_config(document_index_view_type).partials, :document_counter => document_counter %>
4
- </div>
1
+ <% # try to render the blacklight provided catalog/document partial; rails tries to render spotlight/catalog/document explicitly.. -%>
2
+ <%= render 'catalog/document', local_assigns %>
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ json.set! :@context, 'http://iiif.io/api/presentation/2/context.json'
4
+ json.set! :@id, exhibit_iiif_collection_url(page: params[:page]&.to_i)
5
+ json.set! :@type, 'sc:Collection'
6
+ json.label current_exhibit.title
7
+ json.viewingHint 'top'
8
+ json.description current_exhibit.description if current_exhibit.description
9
+ json.manifests do
10
+ json.array!(@response.documents) do |doc|
11
+ next unless doc.first(Spotlight::Engine.config.iiif_manifest_field)
12
+
13
+ json.set! :@id, doc.first(Spotlight::Engine.config.iiif_manifest_field)
14
+ json.set! :@type, 'sc:manifest'
15
+ json.label presenter(doc).label(document_show_link_field(doc)).to_str
16
+ end
17
+ end
18
+
19
+ json.total @response.total
20
+ json.first exhibit_iiif_collection_url(page: nil)
21
+
22
+ json.next exhibit_iiif_collection_url(page: @response.next_page) unless @response.last_page? || @response.out_of_range?
@@ -9,7 +9,7 @@
9
9
  <%= f.fields_for :avatar, (@contact.avatar || @contact.build_avatar) do |af| %>
10
10
  <div data-cropper="<%= af.object.model_name.singular_route_key %>" data-form-prefix="<%= form_prefix(af) %>">
11
11
  <%= field_set_tag(t(:'.avatar.header')) do %>
12
- <p class="instructions"><%= t(:'featured_images.form.crop_area.help', scope: [:spotlight], thing: 'contact photo') %></p>
12
+ <p class="instructions"><%= t(:'featured_images.form.crop_area.help_html', scope: [:spotlight], thing: 'contact photo') %></p>
13
13
 
14
14
  <div>
15
15
  <%= af.radio_button(:source, :remote, label: t(:'.source.remote.label')) %>
@@ -4,23 +4,23 @@
4
4
 
5
5
  <ol>
6
6
  <li>
7
- To add content to this page, click the Edit button above to enter Edit mode.
7
+ To add content to this page, select the Edit button above to enter edit mode.
8
8
  </li>
9
9
  <li>
10
- In Edit mode, click the plus sign icon to display the widget selection panel. This panel displays a range of widgets, each of which adds a different type of content to the page.
10
+ In edit mode, select the plus sign icon to display the widget selection panel. This panel displays a range of widgets, each of which adds a different type of content to the page.
11
11
  </li>
12
12
  <li>
13
- Select a widget to configure. Click <strong>Save changes</strong> when you're ready to add it to the page.
13
+ Select a widget to configure. Select <b>Save changes</b> when you're ready to add it to the page.
14
14
  </li>
15
15
  <li>
16
16
  Repeat the steps above to continue adding widgets to build out the page. To work more efficiently, you can configure multiple widgets before saving the page. Use the icons in the lower right of the widget configuration panel to preview, reorder, or delete widgets.
17
17
  </li>
18
18
  <li>
19
- Note the <strong>Options</strong> and <strong>Thumbnail</strong> tabs at the top of the page in Edit mode. Options in these tabs enable you to publish or unpublish the page, turn on or off the page sidebar, and create a thumbnail image to represent the page.
19
+ Note the <b>Options</b> and <b>Thumbnail</b> tabs at the top of the page in edit mode. Options in these tabs enable you to publish or unpublish the page, turn on or off the page sidebar, and create a thumbnail image to represent the page.
20
20
  </li>
21
21
  <li>
22
22
  Visit the Spotlight <%= link_to 'documentation pages', 'https://github.com/projectblacklight/spotlight/wiki' %> to learn more about creating exhibit pages.
23
23
  </li>
24
24
  </ol>
25
25
  </div>
26
- <% end %>
26
+ <% end %>
@@ -30,7 +30,7 @@
30
30
  </div>
31
31
  <% end %>
32
32
  <%= field_set_tag(t(:'.source.remote.header')) do %>
33
- <p class="instructions"><%= t(:'.crop_area.help', thing: crop_type) %></p>
33
+ <p class="instructions"><%= t(:'.crop_area.help_html', thing: crop_type) %></p>
34
34
  <%= iiif_cropper_tags f, initial_crop_selection: initial_crop_selection %>
35
35
  <% end %>
36
36
  </div>
@@ -12,7 +12,7 @@
12
12
  </div>
13
13
  <% end %>
14
14
  <%= field_set_tag(t(:'.source.remote.header')) do %>
15
- <p class="instructions"><%= t(:'.crop_area.help', thing: crop_type) %></p>
15
+ <p class="instructions"><%= t(:'.crop_area.help_html', thing: crop_type) %></p>
16
16
  <%= iiif_cropper_tags f, initial_crop_selection: initial_crop_selection %>
17
17
  <% end %>
18
18
  </div>
@@ -20,14 +20,14 @@
20
20
  <% end %>
21
21
 
22
22
  <% if Spotlight::Engine.config.resource_partials.any? %>
23
- <li>Add items to the exhibit. Go to the <%= link_to "Curation > Items", admin_exhibit_catalog_path(current_exhibit) %> page and click <strong>Add items</strong>. You can add items individually or in bulk via a CSV file.</li>
23
+ <li>Add items to the exhibit. Go to the <%= link_to "Curation > Items", admin_exhibit_catalog_path(current_exhibit) %> page and select <b>Add items</b>. You can add items individually or in bulk via a CSV file.</li>
24
24
  <% end %>
25
25
 
26
26
  <% if can? :update, current_exhibit.blacklight_configuration %>
27
- <li>Use the other Curation pages, such as <%= link_to "Curation > Metadata", edit_exhibit_metadata_configuration_path(current_exhibit) %> and <%= link_to "Curation > Search", edit_exhibit_search_configuration_path(current_exhibit) %>, to customize the way various features are presented to exhibit visitors.</li>
27
+ <li>Use the other curation pages, such as <%= link_to "Curation > Metadata", edit_exhibit_metadata_configuration_path(current_exhibit) %> and <%= link_to "Curation > Search", edit_exhibit_search_configuration_path(current_exhibit) %>, to customize the way various features are presented to exhibit visitors.</li>
28
28
  <% end %>
29
29
 
30
30
  <li>Visit the Spotlight <%= link_to "documentation pages", "https://github.com/projectblacklight/spotlight/wiki" %> to learn how to add and edit feature pages, about pages, custom browse categories, and more.</li>
31
31
  </ol>
32
32
  <% end %>
33
- </div>
33
+ </div>
@@ -1,3 +1,12 @@
1
1
  <p><%= t :".title" %></p>
2
2
 
3
3
  <p><%= t :".body", count: @number, title: @exhibit.title %></p>
4
+
5
+ <% if @errors.length > 0 %>
6
+ <p><%= t :".errors", default: :'spotlight.catalog.reindex_progress_panel.error' %></p>
7
+ <ul>
8
+ <% @errors.each do |index, message| %>
9
+ <li><%= t :'.error', index: index, message: message.to_sentence %>
10
+ <% end %>
11
+ </ul>
12
+ <% end %>
@@ -2,7 +2,7 @@
2
2
  # TODO: the "if @page.persisted?" business below could possibly be done w/ some clever polymorphic routing.
3
3
  # Leaving as-is for now since technically you can't get to the new page form anyway.
4
4
  %>
5
- <%= bootstrap_form_for([spotlight, @page.exhibit, @page], role: 'form', html: { data: configurations_for_current_page.merge('form-observer': true)}) do |f| %>
5
+ <%= bootstrap_form_for(@page, url: url_for([spotlight, @page.exhibit, @page, format: nil]), role: 'form', html: { data: configurations_for_current_page.merge('form-observer': true)}) do |f| %>
6
6
  <%= render @page.lock if @page.lock and not @page.lock.stale? and not @page.lock.current_session? %>
7
7
  <% if @page.errors.any? %>
8
8
  <div id="error_explanation">
@@ -40,7 +40,7 @@
40
40
  </div>
41
41
  <div class="form-group">
42
42
  <%= f.label :content, class: 'sr-only' %>
43
- <%= f.text_area_without_bootstrap :content, value: { data: f.object.content.as_json }.to_json, class: content_editor_class(f.object), data: { 'block-types': Spotlight::Engine.config.sir_trevor_widgets } %>
43
+ <%= f.text_area_without_bootstrap :content, value: { data: f.object.content.as_json }.to_json, class: content_editor_class(f.object), data: { 'block-types': SirTrevorRails::Block.custom_block_types } %>
44
44
  </div>
45
45
  </div>
46
46
 
@@ -16,6 +16,10 @@
16
16
  <a href="#search-description" aria-controls="search-description" role="tab" data-toggle="tab" class="nav-link active"><%= t(:'.search_description') %></a>
17
17
  </li>
18
18
 
19
+ <li role="presentation" class="nav-item">
20
+ <a href="#search-group" aria-controls="search-group" role="tab" data-toggle="tab" class="nav-link"><%= t(:'.search_group') %></a>
21
+ </li>
22
+
19
23
  <li role="presentation" class="nav-item">
20
24
  <a href="#search-masthead" aria-controls="search-masthead" role="tab" data-toggle="tab" class="nav-link"><%= t(:'.search_masthead') %></a>
21
25
  </li>
@@ -29,6 +33,7 @@
29
33
  <div class="tab-content">
30
34
  <div role="tabpanel" class="tab-pane active" id="search-description">
31
35
  <%= f.text_field :title, control_col: "col-sm-5" %>
36
+ <%= f.text_field :subtitle, control_col: "col-sm-5" %>
32
37
  <%= f.text_area :long_description, rows: 5 %>
33
38
  <%= f.form_group :search_box, label: { text: t(:'.search_box.label'), class: 'pt-0' }, help: t(:'.search_box.help_block') do %>
34
39
  <%= f.check_box :search_box, label: t(:'.search_box.checkbox_label') %>
@@ -49,6 +54,14 @@
49
54
  </div>
50
55
  <% end %>
51
56
  </div>
57
+ <div role="tabpanel" class="tab-pane" id="search-group">
58
+ <% if @groups.present? %>
59
+ <p class="instructions"><%= t(:'.group.help') %></p>
60
+ <%= f.collection_check_boxes(:group_ids, @groups, :id, :title, hide_label: true) %>
61
+ <% else %>
62
+ <p class="instructions"><%= t(:'.group.help_no_groups') %></p>
63
+ <% end %>
64
+ </div>
52
65
  <div role="tabpanel" class="tab-pane" id="search-masthead">
53
66
  <%= f.fields_for :masthead, (@search.masthead || @search.build_masthead) do |m| %>
54
67
  <p class="instructions"><%= t(:'.masthead.help') %></p>
@@ -0,0 +1,27 @@
1
+ <% group = f.object %>
2
+ <%= render layout: 'spotlight/shared/dd3_item', locals: { id: group.id.to_s, field: f, dd3_content_classes: "group" , enabled_method: :published, label_method: :title, label: group.title } do |_, section| %>
3
+ <% case section when nil %>
4
+ <div class="d-flex flex-grow-1">
5
+ <div>
6
+ <%= f.check_box :published, inline: true, hide_label: true %>
7
+ </div>
8
+
9
+ <div class="flex-grow-1 mx-2 main">
10
+ <h4 class="card-title h6 mb-0" data-in-place-edit-target=".edit-in-place" data-in-place-edit-field-target="[data-edit-field-target='true']">
11
+ <a href="#edit-in-place" class="field-label edit-in-place"><%= group.title %></a>
12
+ <%= f.hidden_field :title, value: group.title , class: 'form-control form-control-sm title-field', data: {:"edit-field-target" => 'true'} %>
13
+ </h4>
14
+
15
+ <div class="card-text">
16
+ <div class=""><%= t :'spotlight.searches.group.category_count', count: group.searches.count %> <%= t :'spotlight.searches.group.unpublished_count', count: group.searches.unpublished.count %> &bull; <%= link_to t(:'helpers.action.view'), exhibit_browse_groups_path(current_exhibit, group) %></div>
17
+ <%= f.hidden_field :id %>
18
+ <%= f.hidden_field :weight, data: {property: "weight"} %>
19
+ </div>
20
+ </div>
21
+ <div class="flex m-2">
22
+ <div class="card-text">
23
+ <%= exhibit_delete_link(group) %>
24
+ </div>
25
+ </div>
26
+ <% end %>
27
+ <% end %>
@@ -13,6 +13,7 @@
13
13
  <div class="flex-grow-1 mx-2 main">
14
14
  <h4 class="card-title h6 mb-0">
15
15
  <%= search.title %>
16
+ <% if search.subtitle.present? %><span class="subtitle"><%= search.subtitle %></span><% end %>
16
17
  </h4>
17
18
 
18
19
  <div class="card-text">
@@ -3,7 +3,6 @@
3
3
  <% end %>
4
4
 
5
5
  <%= curation_page_title %>
6
- <h2><%= t(:'.categories_header') %></h2>
7
6
 
8
7
  <% if @searches.empty? %>
9
8
  <%= t :'.no_saved_searches' %>
@@ -13,24 +12,66 @@
13
12
  </p>
14
13
  <% end %>
15
14
  <% else %>
16
- <p class="instructions"><%= t(:'.instructions') %></p>
17
- <% unless @exhibit.searchable? %>
18
- <p class="instructions alert-warning">
19
- <%= t(:'.not_searchable_html', href: link_to(t(:'spotlight.configuration.sidebar.search_configuration'), spotlight.edit_exhibit_search_configuration_path(@exhibit))) %>
20
- </p>
21
- <% end %>
22
- <%= bootstrap_form_for @exhibit, url: update_all_exhibit_searches_path(@exhibit), layout: :horizontal, control_col: 'col-sm-10' do |f| %>
15
+ <div role="tabpanel">
16
+ <ul class="nav nav-tabs" role="tablist">
17
+ <li role="presentation" class="nav-item">
18
+ <a href="#browse-categories" aria-controls="browse-categories" role="tab" data-toggle="tab" class="nav-link active"><%= t(:'.categories_header') %></a>
19
+ </li>
23
20
 
24
- <div class="panel-group dd search_admin" id="nested-pages" data-behavior="nestable" data-max-depth="1">
25
- <ol class="dd-list">
26
- <%= f.fields_for :searches do |p| %>
27
- <%= render partial: 'search', locals: { f: p} %>
21
+ <li role="presentation" class="nav-item">
22
+ <a href="#browse-groups" aria-controls="browse-groups" role="tab" data-toggle="tab" class="nav-link"><%= t(:'.groups_header') %></a>
23
+ </li>
24
+ </ul>
25
+ <div class="tab-content">
26
+ <div role="tabpanel" class="tab-pane active" id="browse-categories">
27
+ <p class="instructions"><%= t(:'.categories_instructions') %></p>
28
+ <% unless @exhibit.searchable? %>
29
+ <p class="instructions alert-warning">
30
+ <%= t(:'.not_searchable_html', href: link_to(t(:'spotlight.configuration.sidebar.search_configuration'), spotlight.edit_exhibit_search_configuration_path(@exhibit))) %>
31
+ </p>
28
32
  <% end %>
29
- </ol>
30
- </div>
33
+ <%= bootstrap_form_for @exhibit, url: update_all_exhibit_searches_path(@exhibit), layout: :horizontal, control_col: 'col-sm-10' do |f| %>
31
34
 
32
- <div class="float-right">
33
- <%= submit_tag t(:'helpers.action.update_all'), class: "btn btn-primary" %>
35
+ <div class="panel-group dd search_admin" id="nested-pages" data-behavior="nestable" data-max-depth="1">
36
+ <ol class="dd-list">
37
+ <%= f.fields_for :searches do |p| %>
38
+ <%= render partial: 'search', locals: { f: p} %>
39
+ <% end %>
40
+ </ol>
41
+ </div>
42
+
43
+ <div class="float-right">
44
+ <%= submit_tag t(:'helpers.action.update_all'), class: "btn btn-primary" %>
45
+ </div>
46
+ <% end %>
47
+ </div>
48
+ <div role="tabpanel" class="tab-pane" id="browse-groups">
49
+ <div class="instructions"><%= t(:'.groups_instructions_html') %></div>
50
+ <%= bootstrap_form_for @exhibit, url: update_all_exhibit_groups_path(@exhibit), layout: :horizontal, control_col: 'col-sm-10' do |f| %>
51
+
52
+ <div class="panel-group dd search_admin" id="nested-pages" data-behavior="nestable" data-max-depth="1">
53
+ <ol class="dd-list">
54
+ <%= f.fields_for :groups do |p| %>
55
+ <%= render partial: 'group', locals: { f: p} %>
56
+ <% end %>
57
+ </ol>
58
+ </div>
59
+
60
+ <div class="float-right">
61
+ <%= submit_tag t(:'helpers.action.update_all'), class: "btn btn-primary" %>
62
+ </div>
63
+ <% end %>
64
+ <%= form_for :group, url: spotlight.exhibit_groups_path(current_exhibit), html: {class: "expanded-add-button"} do |f|%>
65
+ <a href='#add-new' class="btn btn-primary" data-turbolinks="false" data-expanded-add-button="true" data-field-target="[data-title-field]">
66
+ <%= t(:'.add_new_group') %> <%= blacklight_icon('chevron_right') %>
67
+ <span data-title-field="true" class="input-field">
68
+ <%= f.text_field(:title) %>
69
+ <%= f.submit t(:'.save'), data: {behavior: "save"} %>
70
+ <%= f.submit t(:'.cancel'), data: {behavior: "cancel"} %>
71
+ </span>
72
+ </a>
73
+ <%- end -%>
74
+ </div>
34
75
  </div>
35
- <% end %>
76
+ </div>
36
77
  <% end %>
@@ -0,0 +1,4 @@
1
+ <span style="display:none;visibility:hidden;">
2
+ <% honeypot_field_name = Spotlight::Engine.config.spambot_honeypot_email_field %>
3
+ <%= f.email_field honeypot_field_name, label: t(:'spotlight.shared.report_a_problem.honeypot_field_explanation') %>
4
+ </span>
@@ -2,20 +2,17 @@
2
2
  <div class="row justify-content-center">
3
3
  <% contact_form ||= Spotlight::ContactForm.new current_url: request.original_url %>
4
4
  <%= bootstrap_form_for contact_form, url: spotlight.exhibit_contact_form_path(current_exhibit, contact_form), layout: :horizontal, label_col: 'col-sm-3', control_col: 'col-sm-9', html: { class: 'col-md-offset-2 col-md-8 my-3 '} do |f| %>
5
-
6
5
  <h2><%= t(:'.title') %></h2>
6
+ <div class="alert alert-primary"><%= t('.reporting_from', url: contact_form.current_url) %></div>
7
+ <%= f.text_area :message, rows: 4 %>
7
8
  <%= f.text_field :name %>
8
- <span style="display:none;visibility:hidden;">
9
- <% honeypot_field_name = Spotlight::Engine.config.spambot_honeypot_email_field %>
10
- <%= f.email_field honeypot_field_name, label: t(:'.honeypot_field_explanation') %>
11
- </span>
9
+ <%= render '/spotlight/shared/honeypot_field', f: f %>
12
10
  <%= f.email_field :email %>
13
- <%= f.text_area :message, rows: 7 %>
14
11
  <%= f.hidden_field :current_url %>
15
- <div class="form-actions">
16
- <div class="primary-actions">
17
- <%= link_to t(:'helpers.action.cancel'), '#', class: 'btn-sizing', data: { 'behavior' => 'cancel-link' } %>
18
- <%= f.submit nil, class: 'btn btn-primary' %>
12
+ <div class="form-actions row">
13
+ <div class="col offset-sm-3">
14
+ <%= f.submit nil, class: 'btn btn-primary' %>
15
+ <%= link_to t(:'helpers.action.cancel'), '#', class: 'btn-sizing', data: { 'behavior' => 'cancel-link' } %>
19
16
  </div>
20
17
  </div>
21
18
  <% end %>