blacklight-spotlight 3.0.0.rc1 → 3.0.0.rc6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (338) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  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/images/blacklight/close.svg +1 -0
  6. data/app/assets/images/blacklight/zoom_in.svg +1 -0
  7. data/app/assets/images/blacklight/zoom_out.svg +1 -0
  8. data/app/assets/javascripts/spotlight/admin/{add_new_page_button.js → add_new_button.js} +7 -0
  9. data/app/assets/javascripts/spotlight/admin/block_mixins/autocompleteable.js +4 -4
  10. data/app/assets/javascripts/spotlight/admin/blocks/browse_group_categories_block.js +88 -0
  11. data/app/assets/javascripts/spotlight/admin/blocks/pages_block.js +1 -1
  12. data/app/assets/javascripts/spotlight/admin/blocks/solr_documents_base_block.js +1 -1
  13. data/app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js +8 -1
  14. data/app/assets/javascripts/spotlight/admin/catalog_edit.js +13 -47
  15. data/app/assets/javascripts/spotlight/admin/croppable.js +1 -1
  16. data/app/assets/javascripts/spotlight/admin/exhibit_tag_autocomplete.js +37 -0
  17. data/app/assets/javascripts/spotlight/admin/index.js +0 -2
  18. data/app/assets/javascripts/spotlight/admin/{reindex_monitor.js → progress_monitor.js} +26 -4
  19. data/app/assets/javascripts/spotlight/admin/search_typeahead.js +2 -2
  20. data/app/assets/javascripts/spotlight/admin/sir-trevor/locales.js +9 -2
  21. data/app/assets/javascripts/spotlight/user/browse_group_categories.js +59 -0
  22. data/app/assets/javascripts/spotlight/user/index.js +1 -0
  23. data/app/assets/javascripts/spotlight/user/zpr_links.js.erb +29 -14
  24. data/app/assets/stylesheets/spotlight/_breadcrumbs.scss +8 -0
  25. data/app/assets/stylesheets/spotlight/_browse.scss +8 -0
  26. data/app/assets/stylesheets/spotlight/_catalog.scss +34 -8
  27. data/app/assets/stylesheets/spotlight/_exhibit_admin.scss +9 -0
  28. data/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +212 -84
  29. data/app/assets/stylesheets/spotlight/_item_text_block.scss +1 -1
  30. data/app/assets/stylesheets/spotlight/_modals.scss +3 -0
  31. data/app/assets/stylesheets/spotlight/_nestable.scss +8 -0
  32. data/app/assets/stylesheets/spotlight/_pages.scss +9 -4
  33. data/app/assets/stylesheets/spotlight/_spotlight.scss +4 -0
  34. data/app/assets/stylesheets/spotlight/_translations.scss +6 -0
  35. data/app/assets/stylesheets/spotlight/_view_larger.scss +22 -0
  36. data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +92 -0
  37. data/app/assets/stylesheets/spotlight/typeahead.css +23 -23
  38. data/app/builders/spotlight/bootstrap_breadcrumbs_builder.rb +5 -4
  39. data/app/controllers/concerns/spotlight/base.rb +1 -1
  40. data/app/controllers/concerns/spotlight/catalog.rb +7 -1
  41. data/app/controllers/concerns/spotlight/search_helper.rb +2 -8
  42. data/app/controllers/spotlight/appearances_controller.rb +0 -13
  43. data/app/controllers/spotlight/browse_controller.rb +15 -17
  44. data/app/controllers/spotlight/bulk_actions_controller.rb +62 -0
  45. data/app/controllers/spotlight/bulk_updates_controller.rb +67 -0
  46. data/app/controllers/spotlight/catalog_controller.rb +17 -14
  47. data/app/controllers/spotlight/concerns/application_controller.rb +13 -2
  48. data/app/controllers/spotlight/dashboards_controller.rb +5 -4
  49. data/app/controllers/spotlight/exhibits_controller.rb +1 -1
  50. data/app/controllers/spotlight/featured_images_controller.rb +1 -1
  51. data/app/controllers/spotlight/groups_controller.rb +80 -0
  52. data/app/controllers/spotlight/job_trackers_controller.rb +17 -0
  53. data/app/controllers/spotlight/pages_controller.rb +8 -13
  54. data/app/controllers/spotlight/searches_controller.rb +4 -17
  55. data/app/controllers/spotlight/tags_controller.rb +39 -5
  56. data/app/helpers/spotlight/application_helper.rb +21 -2
  57. data/app/helpers/spotlight/crud_link_helpers.rb +1 -1
  58. data/app/helpers/spotlight/job_trackers_helper.rb +31 -0
  59. data/app/helpers/spotlight/main_app_helpers.rb +4 -5
  60. data/app/helpers/spotlight/meta_helper.rb +2 -2
  61. data/app/helpers/spotlight/pages_helper.rb +1 -8
  62. data/app/helpers/spotlight/roles_helper.rb +1 -1
  63. data/app/helpers/spotlight/searches_helper.rb +1 -1
  64. data/app/jobs/concerns/spotlight/gather_documents.rb +35 -0
  65. data/app/jobs/concerns/spotlight/job_tracking.rb +64 -0
  66. data/app/jobs/concerns/spotlight/limit_concurrency.rb +33 -0
  67. data/app/jobs/spotlight/add_tags_job.rb +31 -0
  68. data/app/jobs/spotlight/add_uploads_from_csv.rb +4 -3
  69. data/app/jobs/spotlight/application_job.rb +8 -0
  70. data/app/jobs/spotlight/change_visibility_job.rb +33 -0
  71. data/app/jobs/spotlight/cleanup_job_trackers_job.rb +13 -0
  72. data/app/jobs/spotlight/default_thumbnail_job.rb +1 -3
  73. data/app/jobs/spotlight/process_bulk_updates_csv_job.rb +82 -0
  74. data/app/jobs/spotlight/reindex_exhibit_job.rb +39 -0
  75. data/app/jobs/spotlight/reindex_job.rb +64 -44
  76. data/app/jobs/spotlight/remove_tags_job.rb +31 -0
  77. data/app/jobs/spotlight/rename_sidecar_field_job.rb +3 -2
  78. data/app/jobs/spotlight/rename_tags_job.rb +33 -0
  79. data/app/jobs/spotlight/update_job_trackers_job.rb +20 -0
  80. data/app/models/concerns/spotlight/browse_category_search_builder.rb +59 -0
  81. data/app/models/concerns/spotlight/exhibit_analytics.rb +2 -6
  82. data/app/models/concerns/spotlight/exhibit_defaults.rb +1 -1
  83. data/app/models/concerns/spotlight/exhibit_documents.rb +2 -2
  84. data/app/models/concerns/spotlight/resources/web.rb +1 -1
  85. data/app/models/concerns/spotlight/search_builder.rb +11 -0
  86. data/app/models/concerns/spotlight/solr_document.rb +1 -1
  87. data/app/models/concerns/spotlight/solr_document/atomic_updates.rb +2 -2
  88. data/app/models/concerns/spotlight/user.rb +7 -2
  89. data/app/models/sir_trevor_rails/blocks/browse_group_categories_block.rb +25 -0
  90. data/app/models/sir_trevor_rails/blocks/solr_documents_block.rb +9 -0
  91. data/app/models/sir_trevor_rails/blocks/uploaded_items_block.rb +4 -0
  92. data/app/models/spotlight/ability.rb +8 -2
  93. data/app/models/spotlight/about_page.rb +1 -1
  94. data/app/models/spotlight/attachment.rb +1 -1
  95. data/app/models/spotlight/background_job_progress.rb +96 -0
  96. data/app/models/spotlight/blacklight_configuration.rb +28 -7
  97. data/app/models/spotlight/bulk_update.rb +8 -0
  98. data/app/models/spotlight/event.rb +13 -0
  99. data/app/models/spotlight/exhibit.rb +15 -12
  100. data/app/models/spotlight/feature_page.rb +1 -3
  101. data/app/models/spotlight/featured_image.rb +8 -2
  102. data/app/models/spotlight/field_metadata.rb +4 -8
  103. data/app/models/spotlight/group.rb +22 -0
  104. data/app/models/spotlight/group_member.rb +11 -0
  105. data/app/models/spotlight/home_page.rb +1 -1
  106. data/app/models/spotlight/job_tracker.rb +114 -0
  107. data/app/models/spotlight/page.rb +3 -5
  108. data/app/models/spotlight/page_configurations.rb +15 -9
  109. data/app/models/spotlight/resource.rb +28 -62
  110. data/app/models/spotlight/resources/iiif_harvester.rb +12 -3
  111. data/app/models/spotlight/resources/iiif_manifest.rb +9 -7
  112. data/app/models/spotlight/resources/iiif_service.rb +9 -2
  113. data/app/models/spotlight/resources/json_upload.rb +12 -0
  114. data/app/models/spotlight/resources/upload.rb +25 -2
  115. data/app/models/spotlight/role.rb +1 -2
  116. data/app/models/spotlight/search.rb +5 -0
  117. data/app/models/spotlight/solr_document_sidecar.rb +2 -1
  118. data/app/presenters/spotlight/iiif_manifest_presenter.rb +2 -2
  119. data/app/services/spotlight/bulk_updates_csv_template_service.rb +93 -0
  120. data/app/services/spotlight/etl.rb +7 -0
  121. data/app/services/spotlight/etl/context.rb +52 -0
  122. data/app/services/spotlight/etl/executor.rb +192 -0
  123. data/app/services/spotlight/etl/loaders.rb +12 -0
  124. data/app/services/spotlight/etl/pipeline.rb +81 -0
  125. data/app/services/spotlight/etl/solr_loader.rb +96 -0
  126. data/app/services/spotlight/etl/sources.rb +25 -0
  127. data/app/services/spotlight/etl/step.rb +82 -0
  128. data/app/services/spotlight/etl/transforms.rb +64 -0
  129. data/app/services/spotlight/exhibit_import_export_service.rb +50 -22
  130. data/app/services/spotlight/iiif_resource_resolver.rb +1 -1
  131. data/app/services/spotlight/validity_checker.rb +5 -5
  132. data/app/uploaders/spotlight/bulk_updates_uploader.rb +7 -0
  133. data/app/uploaders/spotlight/featured_image_uploader.rb +1 -1
  134. data/app/views/catalog/_add_tags.html.erb +28 -0
  135. data/app/views/catalog/_bulk_actions.html.erb +12 -0
  136. data/app/views/catalog/_change_visibility.html.erb +35 -0
  137. data/app/views/catalog/_curator_actions.html.erb +3 -0
  138. data/app/views/catalog/_remove_tags.html.erb +37 -0
  139. data/app/views/catalog/_save_search.html.erb +1 -1
  140. data/app/views/spotlight/about_pages/_empty.html.erb +5 -5
  141. data/app/views/spotlight/browse/_search.html.erb +2 -1
  142. data/app/views/spotlight/browse/_search_box.html.erb +9 -9
  143. data/app/views/spotlight/browse/index.html.erb +13 -0
  144. data/app/views/spotlight/bulk_updates/_download.html.erb +23 -0
  145. data/app/views/spotlight/bulk_updates/_overview.html.erb +1 -0
  146. data/app/views/spotlight/bulk_updates/_progress_panel.html.erb +19 -0
  147. data/app/views/spotlight/bulk_updates/_upload.html.erb +12 -0
  148. data/app/views/spotlight/bulk_updates/edit.html.erb +37 -0
  149. data/app/views/spotlight/catalog/_admin_header.html.erb +1 -1
  150. data/app/views/spotlight/catalog/_admin_index_header_default.html.erb +1 -1
  151. data/app/views/spotlight/catalog/_admin_thumbnail_default.html.erb +3 -2
  152. data/app/views/spotlight/catalog/_document.html.erb +2 -4
  153. data/app/views/spotlight/catalog/_edit_default.html.erb +2 -2
  154. data/app/views/spotlight/catalog/_reindex_progress_panel.html.erb +1 -1
  155. data/app/views/spotlight/catalog/index.iiif_json.jbuilder +22 -0
  156. data/app/views/spotlight/contacts/_form.html.erb +1 -1
  157. data/app/views/spotlight/custom_fields/_form.html.erb +1 -1
  158. data/app/views/spotlight/custom_search_fields/_form.html.erb +1 -1
  159. data/app/views/spotlight/dashboards/_reindexing_activity.html.erb +6 -6
  160. data/app/views/spotlight/exhibits/_exhibit_card.html.erb +1 -1
  161. data/app/views/spotlight/feature_pages/_empty.html.erb +5 -5
  162. data/app/views/spotlight/featured_images/_form.html.erb +2 -2
  163. data/app/views/spotlight/featured_images/_upload_form.html.erb +1 -1
  164. data/app/views/spotlight/home_pages/_empty.html.erb +3 -3
  165. data/app/views/spotlight/job_trackers/show.html.erb +79 -0
  166. data/app/views/spotlight/metadata_configurations/_metadata_field.html.erb +2 -2
  167. data/app/views/spotlight/pages/_form.html.erb +2 -2
  168. data/app/views/spotlight/pages/_view_type_group.html.erb +3 -3
  169. data/app/views/spotlight/resources/_form.html.erb +1 -1
  170. data/app/views/spotlight/resources/csv_upload/_form.html.erb +1 -1
  171. data/app/views/spotlight/resources/iiif/_form.html.erb +1 -1
  172. data/app/views/spotlight/resources/json_upload/_form.html.erb +2 -2
  173. data/app/views/spotlight/resources/upload/_form.html.erb +1 -1
  174. data/app/views/spotlight/search_configurations/_document_index_view_types.html.erb +2 -2
  175. data/app/views/spotlight/searches/_form.html.erb +14 -2
  176. data/app/views/spotlight/searches/_group.html.erb +27 -0
  177. data/app/views/spotlight/searches/index.html.erb +58 -17
  178. data/app/views/spotlight/shared/_curation_sidebar.html.erb +3 -0
  179. data/app/views/spotlight/shared/_locale_picker.html.erb +1 -1
  180. data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +45 -0
  181. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb +8 -8
  182. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +7 -7
  183. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb +9 -7
  184. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb +5 -5
  185. data/app/views/spotlight/sir_trevor/blocks/_uploaded_items_block.html.erb +4 -0
  186. data/app/views/spotlight/tags/_tag.html.erb +24 -0
  187. data/app/views/spotlight/tags/index.html.erb +12 -16
  188. data/app/views/spotlight/translations/_groups.html.erb +34 -0
  189. data/app/views/spotlight/translations/_import.html.erb +5 -5
  190. data/app/views/spotlight/translations/edit.html.erb +6 -0
  191. data/app/views/spotlight/translations/show.yaml.yamlbuilder +6 -0
  192. data/config/i18n-tasks.yml +6 -0
  193. data/config/locales/spotlight.ar.yml +11 -1
  194. data/config/locales/spotlight.en.yml +283 -87
  195. data/config/routes.rb +39 -1
  196. data/db/migrate/20210113092223_create_spotlight_groups.rb +23 -0
  197. data/db/migrate/20210122082032_create_job_trackers.rb +22 -0
  198. data/db/migrate/20210126123041_create_events.rb +15 -0
  199. data/db/migrate/20210305070001_remove_class_from_sirtrevor_image_blocks.rb +20 -0
  200. data/db/migrate/20210305171150_create_bulk_updates.rb +9 -0
  201. data/db/migrate/20210308090000_migrate_caption_values_for_title_key.rb +29 -0
  202. data/lib/generators/spotlight/install_generator.rb +5 -5
  203. data/lib/generators/spotlight/scaffold_resource_generator.rb +5 -13
  204. data/lib/generators/spotlight/templates/config/initializers/riiif.rb +7 -5
  205. data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +1 -1
  206. data/lib/generators/spotlight/templates/solr/config/schema.xml +1 -1
  207. data/lib/migration/iiif.rb +3 -3
  208. data/lib/spotlight/engine.rb +26 -4
  209. data/lib/spotlight/version.rb +1 -1
  210. data/spec/controllers/spotlight/about_pages_controller_spec.rb +3 -3
  211. data/spec/controllers/spotlight/browse_controller_spec.rb +23 -6
  212. data/spec/controllers/spotlight/bulk_actions_controller_spec.rb +124 -0
  213. data/spec/controllers/spotlight/bulk_updates_controller_spec.rb +77 -0
  214. data/spec/controllers/spotlight/catalog_controller_spec.rb +15 -13
  215. data/spec/controllers/spotlight/contacts_controller_spec.rb +2 -2
  216. data/spec/controllers/spotlight/feature_pages_controller_spec.rb +11 -0
  217. data/spec/controllers/spotlight/featured_images_controller_spec.rb +3 -3
  218. data/spec/controllers/spotlight/groups_controller_spec.rb +103 -0
  219. data/spec/controllers/spotlight/home_pages_controller_spec.rb +1 -1
  220. data/spec/controllers/spotlight/job_trackers_controller_spec.rb +37 -0
  221. data/spec/controllers/spotlight/searches_controller_spec.rb +10 -3
  222. data/spec/controllers/spotlight/tags_controller_spec.rb +5 -1
  223. data/spec/controllers/spotlight/view_configurations_controller_spec.rb +1 -1
  224. data/spec/examples.txt +1501 -1410
  225. data/spec/factories/bulk_updates.rb +15 -0
  226. data/spec/factories/exhibits.rb +4 -0
  227. data/spec/factories/group.rb +17 -0
  228. data/spec/factories/job_trackers.rb +11 -0
  229. data/spec/factories/searches.rb +11 -1
  230. data/spec/factories/users.rb +27 -8
  231. data/spec/features/add_items_spec.rb +10 -5
  232. data/spec/features/browse_category_admin_spec.rb +37 -5
  233. data/spec/features/browse_category_navigation_spec.rb +44 -0
  234. data/spec/features/browse_category_spec.rb +2 -2
  235. data/spec/features/bulk_actions_spec.rb +72 -0
  236. data/spec/features/catalog_spec.rb +3 -2
  237. data/spec/features/dashboard_spec.rb +2 -2
  238. data/spec/features/edit_search_fields_spec.rb +2 -2
  239. data/spec/features/exhibits/edit_metadata_fields_spec.rb +1 -1
  240. data/spec/features/exhibits/translation_editing_spec.rb +55 -6
  241. data/spec/features/home_page_spec.rb +5 -5
  242. data/spec/features/import_exhibit_spec.rb +5 -1
  243. data/spec/features/item_admin_spec.rb +4 -4
  244. data/spec/features/javascript/about_page_admin_spec.rb +1 -1
  245. data/spec/features/javascript/block_controls_spec.rb +1 -1
  246. data/spec/features/javascript/blocks/browse_group_categories_block_spec.rb +64 -0
  247. data/spec/features/javascript/blocks/solr_documents_block_spec.rb +4 -4
  248. data/spec/features/javascript/blocks/uploaded_items_block_spec.rb +27 -1
  249. data/spec/features/javascript/browse_group_admin_spec.rb +45 -0
  250. data/spec/features/javascript/edit_in_place_spec.rb +3 -3
  251. data/spec/features/javascript/feature_page_admin_spec.rb +1 -1
  252. data/spec/features/javascript/reindex_monitor_spec.rb +1 -1
  253. data/spec/features/javascript/search_config_admin_spec.rb +1 -1
  254. data/spec/features/report_a_problem_spec.rb +1 -1
  255. data/spec/features/site_users_management_spec.rb +5 -5
  256. data/spec/fixtures/bulk-update-template.csv +57 -0
  257. data/spec/fixtures/updated-bulk-update-template-w-tags.csv +4 -0
  258. data/spec/fixtures/updated-bulk-update-template.csv +4 -0
  259. data/spec/helpers/spotlight/application_helper_spec.rb +5 -6
  260. data/spec/helpers/spotlight/crud_link_helpers_spec.rb +3 -3
  261. data/spec/helpers/spotlight/pages_helper_spec.rb +8 -15
  262. data/spec/helpers/spotlight/roles_helper_spec.rb +1 -1
  263. data/spec/i18n_spec.rb +1 -0
  264. data/spec/jobs/spotlight/add_tags_job_spec.rb +34 -0
  265. data/spec/jobs/spotlight/add_uploads_from_csv_spec.rb +4 -1
  266. data/spec/jobs/spotlight/change_visibility_job_spec.rb +30 -0
  267. data/spec/jobs/spotlight/process_bulk_updates_csv_job_spec.rb +78 -0
  268. data/spec/jobs/spotlight/reindex_exhibit_job_spec.rb +43 -0
  269. data/spec/jobs/spotlight/reindex_job_spec.rb +34 -60
  270. data/spec/jobs/spotlight/remove_tags_job_spec.rb +39 -0
  271. data/spec/lib/migration/iiif_spec.rb +1 -1
  272. data/spec/models/sir_trevor_rails/blocks/browse_group_categories_block_spec.rb +41 -0
  273. data/spec/models/spotlight/ability_spec.rb +27 -0
  274. data/spec/models/spotlight/background_job_progress_spec.rb +137 -0
  275. data/spec/models/spotlight/blacklight_configuration_spec.rb +22 -17
  276. data/spec/models/spotlight/browse_category_search_builder_spec.rb +49 -0
  277. data/spec/models/spotlight/exhibit_spec.rb +13 -59
  278. data/spec/models/spotlight/featured_image_spec.rb +1 -1
  279. data/spec/models/spotlight/group_spec.rb +19 -0
  280. data/spec/models/spotlight/main_navigation_spec.rb +1 -1
  281. data/spec/models/spotlight/resource_spec.rb +89 -87
  282. data/spec/models/spotlight/resources/iiif_harvester_spec.rb +9 -10
  283. data/spec/models/spotlight/role_spec.rb +1 -1
  284. data/spec/models/spotlight/search_spec.rb +30 -3
  285. data/spec/models/spotlight/solr_document/atomic_updates_spec.rb +10 -0
  286. data/spec/models/spotlight/solr_document_sidecar_spec.rb +1 -0
  287. data/spec/presenters/spotlight/iiif_manifest_presenter_spec.rb +1 -1
  288. data/spec/services/spotlight/bulk_updates_csv_template_service_spec.rb +26 -0
  289. data/spec/services/spotlight/etl/context_spec.rb +66 -0
  290. data/spec/services/spotlight/etl/executor_spec.rb +149 -0
  291. data/spec/services/spotlight/etl/pipeline_spec.rb +22 -0
  292. data/spec/services/spotlight/etl/solr_loader_spec.rb +76 -0
  293. data/spec/services/spotlight/etl/step_spec.rb +70 -0
  294. data/spec/services/spotlight/exhibit_import_export_service_spec.rb +48 -1
  295. data/spec/spec_helper.rb +3 -6
  296. data/spec/support/features/test_features_helpers.rb +15 -0
  297. data/spec/test_app_templates/Gemfile.extra +2 -0
  298. data/spec/test_app_templates/catalog_controller.rb +6 -3
  299. data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -2
  300. data/spec/uploaders/spotlight/featured_image_uploader_spec.rb +2 -2
  301. data/spec/views/shared/_exhibit_navbar.html.erb_spec.rb +1 -1
  302. data/spec/views/spotlight/browse/index.html.erb_spec.rb +2 -0
  303. data/spec/views/spotlight/catalog/_edit_default.html.erb_spec.rb +1 -1
  304. data/spec/views/spotlight/dashboards/_analytics.html.erb_spec.rb +1 -1
  305. data/spec/views/spotlight/dashboards/_reindexing_activity.html.erb_spec.rb +30 -25
  306. data/spec/views/spotlight/job_trackers/show.html.erb_spec.rb +65 -0
  307. data/spec/views/spotlight/metadata_configurations/_metadata_field.html.erb_spec.rb +3 -4
  308. data/spec/views/spotlight/pages/show.html.erb_spec.rb +1 -0
  309. data/spec/views/spotlight/search_configurations/_facets.html.erb_spec.rb +1 -1
  310. data/spec/views/spotlight/sir_trevor/blocks/_browse_block.html.erb_spec.rb +1 -1
  311. data/spec/views/spotlight/sir_trevor/blocks/_iframe_block.html.erb_spec.rb +1 -1
  312. data/spec/views/spotlight/sir_trevor/blocks/_link_to_search_block.html.erb_spec.rb +1 -1
  313. data/spec/views/spotlight/sir_trevor/blocks/_rule_block.html.erb_spec.rb +1 -1
  314. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb_spec.rb +8 -4
  315. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb_spec.rb +7 -2
  316. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_embed_block.html.erb_spec.rb +8 -5
  317. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb_spec.rb +3 -2
  318. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb_spec.rb +9 -4
  319. data/spec/views/spotlight/tags/index.html.erb_spec.rb +5 -2
  320. data/vendor/assets/javascripts/tiny-slider.js +3218 -0
  321. data/vendor/assets/stylesheets/tiny-slider.css +1 -0
  322. metadata +471 -281
  323. data/app/assets/images/blacklight/add_circle.svg +0 -1
  324. data/app/assets/images/blacklight/custom_fullscreen.svg +0 -1
  325. data/app/assets/images/blacklight/remove_circle.svg +0 -1
  326. data/app/assets/images/blacklight/resize_small.svg +0 -1
  327. data/app/models/concerns/spotlight/resources/open_graph.rb +0 -36
  328. data/app/models/spotlight/reindex_progress.rb +0 -78
  329. data/app/models/spotlight/reindexing_log_entry.rb +0 -42
  330. data/app/services/spotlight/resources/iiif_builder.rb +0 -19
  331. data/app/services/spotlight/solr_document_builder.rb +0 -77
  332. data/app/services/spotlight/upload_solr_document_builder.rb +0 -57
  333. data/spec/factories/reindexing_log_entries.rb +0 -54
  334. data/spec/models/spotlight/reindex_progress_spec.rb +0 -122
  335. data/spec/models/spotlight/reindexing_log_entry_spec.rb +0 -129
  336. data/spec/models/spotlight/resources/open_graph_spec.rb +0 -65
  337. data/spec/services/spotlight/solr_document_builder_spec.rb +0 -66
  338. data/vendor/assets/javascripts/handlebars-v1.3.0.js +0 -2746
@@ -17,4 +17,7 @@
17
17
  <% if (can? :manage, current_exhibit.translations.first_or_initialize) && current_exhibit.languages.any? %>
18
18
  <%= nav_link t(:'spotlight.curation.sidebar.translations'), spotlight.edit_exhibit_translations_path(current_exhibit), 'data-no-turbolink' => true %>
19
19
  <% end %>
20
+ <% if can? :bulk_update, current_exhibit %>
21
+ <%= nav_link t(:'spotlight.curation.sidebar.bulk_updates'), spotlight.edit_exhibit_bulk_updates_path(current_exhibit), 'data-no-turbolink' => true %>
22
+ <% end %>
20
23
  </ul>
@@ -6,7 +6,7 @@
6
6
  <ul class="dropdown-menu">
7
7
  <% locale_selecter_dropown_options.each do |language| %>
8
8
  <li>
9
- <%= link_to language.to_native, (spotlight.url_for(locale: lanaguage.locale) rescue url_for(locale: language.locale)), class: 'dropdown-item', data: { turbolinks: false } %>
9
+ <%= link_to language.to_native, current_page_for_locale(language.locale), class: 'dropdown-item', data: { turbolinks: false } %>
10
10
  </li>
11
11
  <% end %>
12
12
  </ul>
@@ -0,0 +1,45 @@
1
+ <% if browse_group_categories_block.groups? %>
2
+ <% browse_group_categories_block.groups.each do |group| %>
3
+ <div class="browse-group-categories-block" data-browse-group-categories-count="<%= group.searches.count %>">
4
+ <div class="d-flex flex-column flex-md-row py-2">
5
+ <div class="d-flex justify-content-between align-items-baseline">
6
+ <h2 class="m-0"><%= group.title %></h2>
7
+ <div class="pl-3">
8
+ <%= link_to t(:'.view_all'), exhibit_browse_groups_path(current_exhibit, group) %>
9
+ </div>
10
+ </div>
11
+ <% if group.searches.count > 1 %>
12
+ <ul class="browse-group-categories-controls p-0 pt-2 pt-md-0 ml-md-auto mb-0 d-flex justify-content-center align-items-end">
13
+ <li class="prev px-1 overflow-hidden">
14
+ <%= blacklight_icon 'arrow-alt-circle-left' %>
15
+ </li>
16
+ <li class="next px-1 overflow-hidden">
17
+ <%= blacklight_icon 'arrow-alt-circle-right' %>
18
+ </li>
19
+ </ul>
20
+ <% end %>
21
+ </div>
22
+ <div class="spotlight-flexbox browse-categories categories-<%= [group.searches.count, (@page.display_sidebar? ? 3 : 4)].min %>" data-browse-group-categories-carousel data-sidebar='<%= @page.display_sidebar? %>' data-browse-group-categories-count="<%= group.searches.count %>">
23
+ <% group.searches.published.each_with_index do |search, index| %>
24
+ <div class="box category-1 justify-content-center justify-content-md-space-around">
25
+ <%= link_to spotlight.exhibit_browse_group_path(current_exhibit, group, search), class: 'justify-content-center' do %>
26
+ <div class="browse-category" style='background-image: linear-gradient(rgba(0, 0, 0, 0.0), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.5)), url("<%= search.thumbnail.iiif_url if search.thumbnail %>")'>
27
+ <div class="category-caption">
28
+ <p class="category-title">
29
+ <%= search.title %>
30
+ <% if search.subtitle.present? %><span class="category-subtitle"><%= search.subtitle %></span><% end %>
31
+ </p>
32
+
33
+ <% if browse_group_categories_block.display_item_counts? %>
34
+ <span class="item-count"><%= t(:'.items', count: search.count) %></span>
35
+ <% end %>
36
+ </div>
37
+ <div class="hover-overlay"></div>
38
+ </div>
39
+ <% end %>
40
+ </div>
41
+ <% end %>
42
+ </div>
43
+ </div>
44
+ <% end %>
45
+ <% end %>
@@ -5,28 +5,28 @@
5
5
 
6
6
  <div class="items-col spotlight-flexbox <%= solr_documents_block.text? ? "col-md-6" : "col-md-12" %> <%= solr_documents_block.content_align == 'right' ? 'float-right' : 'float-left' %>">
7
7
  <% solr_documents_block.each_document do |block_options, document| %>
8
- <% doc_presenter = index_presenter(document) %>
8
+ <% doc_presenter = document_presenter(document) %>
9
9
  <div class="box" data-id="<%= document.id %>">
10
10
  <div class="contents">
11
11
  <% if block_options[:thumbnail_image_url].present? %>
12
- <%= link_to_document(document, image_tag(block_options[:thumbnail_image_url], class: 'img-thumbnail', alt: doc_presenter.heading), counter: -1) %>
12
+ <%= link_to_document(document, image_tag(block_options[:thumbnail_image_url], class: 'img-thumbnail', alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
13
13
  <% elsif block_options[:iiif_tilesource_base].present? %>
14
- <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!400,400/0/default.jpg', class: 'img-thumbnail', alt: doc_presenter.heading), counter: -1) %>
15
- <% elsif has_thumbnail? document %>
16
- <%= render_thumbnail_tag(document, { class: 'img-thumbnail', alt: doc_presenter.heading }, document_counter: -1) %>
14
+ <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!400,400/0/default.jpg', class: 'img-thumbnail', alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
15
+ <% elsif doc_presenter.thumbnail.exists? %>
16
+ <%= doc_presenter.thumbnail.thumbnail_tag({ class: 'img-thumbnail', alt: doc_presenter.heading }, document_counter: -1) %>
17
17
  <% end %>
18
18
  <% if solr_documents_block.primary_caption? %>
19
19
  <div class="caption primary-caption">
20
- <%= doc_presenter.field_value(blacklight_config.index_fields[solr_documents_block.primary_caption_field] || Blacklight::Configuration::NullField.new(solr_documents_block.primary_caption_field)) %>
20
+ <%= solr_documents_block.document_caption(doc_presenter, solr_documents_block.primary_caption_field) %>
21
21
  </div>
22
22
  <% end %>
23
23
  <% if solr_documents_block.secondary_caption? %>
24
24
  <div class="caption secondary-caption">
25
- <%= doc_presenter.field_value(blacklight_config.index_fields[solr_documents_block.secondary_caption_field] || Blacklight::Configuration::NullField.new(solr_documents_block.secondary_caption_field)) %>
25
+ <%= solr_documents_block.document_caption(doc_presenter, solr_documents_block.secondary_caption_field) %>
26
26
  </div>
27
27
  <% end %>
28
28
  <% if solr_documents_block.zpr_link? && block_options[:iiif_tilesource].present? %>
29
- <button class="btn btn-secondary zpr-link" data-iiif-tilesource="<%= block_options[:iiif_tilesource] %>">Show in ZPR viewer</button>
29
+ <button class="btn btn-secondary zpr-link" data-iiif-tilesource="<%= block_options[:iiif_tilesource] %>"><%= t('.zpr_link_html', title: doc_presenter.heading) %></button>
30
30
  <% end %>
31
31
  </div>
32
32
  </div>
@@ -6,24 +6,24 @@
6
6
  <div id="<%= html_id %>" class="carousel slide" data-ride="carousel" data-interval="<%= solr_documents_carousel_block.interval %>">
7
7
  <div class="carousel-inner text-center">
8
8
  <% solr_documents_carousel_block.each_document.each_with_index do |(block_options, document), index| %>
9
- <% doc_presenter = index_presenter(document) %>
9
+ <% doc_presenter = document_presenter(document) %>
10
10
  <div class="carousel-item <%= 'active' if index == 0 %>" data-id="<%= document.id %>">
11
11
  <% if block_options[:full_image_url].present? %>
12
- <%= link_to_document(document, image_tag(block_options[:full_image_url], alt: doc_presenter.heading), counter: -1) %>
12
+ <%= link_to_document(document, image_tag(block_options[:full_image_url], alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
13
13
  <% elsif block_options[:iiif_tilesource_base].present? %>
14
- <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!800,800/0/default.jpg', alt: doc_presenter.heading), counter: -1) %>
15
- <% elsif has_thumbnail? document %>
16
- <%= render_thumbnail_tag(document, { alt: doc_presenter.heading }, document_counter: -1) %>
14
+ <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!800,800/0/default.jpg', alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
15
+ <% elsif doc_presenter.thumbnail.exists? %>
16
+ <%= doc_presenter.thumbnail.thumbnail_tag({ alt: doc_presenter.heading }, document_counter: -1) %>
17
17
  <% end %>
18
18
  <div class="carousel-caption">
19
19
  <% if solr_documents_carousel_block.primary_caption? %>
20
20
  <h3 class="primary">
21
- <%= doc_presenter.field_value(blacklight_config.index_fields[solr_documents_carousel_block.primary_caption_field] || Blacklight::Configuration::NullField.new(solr_documents_carousel_block.primary_caption_field)) %>
21
+ <%= solr_documents_carousel_block.document_caption(doc_presenter, solr_documents_carousel_block.primary_caption_field) %>
22
22
  </h3>
23
23
  <% end %>
24
24
  <% if solr_documents_carousel_block.secondary_caption? %>
25
25
  <div class="secondary">
26
- <%= doc_presenter.field_value(blacklight_config.index_fields[solr_documents_carousel_block.secondary_caption_field] || Blacklight::Configuration::NullField.new(solr_documents_carousel_block.secondary_caption_field)) %>
26
+ <%= solr_documents_carousel_block.document_caption(doc_presenter, solr_documents_carousel_block.secondary_caption_field) %>
27
27
  </div>
28
28
  <% end %>
29
29
  </div>
@@ -9,24 +9,26 @@
9
9
  <div class="col-sm-6">
10
10
  <div class="carousel-inner">
11
11
  <% solr_documents_features_block.each_document.each_with_index do |(block_options, document), index| %>
12
- <% doc_presenter = index_presenter(document) %>
12
+ <% doc_presenter = document_presenter(document) %>
13
13
  <div class="carousel-item <%= 'active' if index == 0 %>" data-id="<%= document.id %>">
14
14
  <% if block_options[:full_image_url].present? %>
15
- <%= link_to_document(document, image_tag(block_options[:full_image_url], alt: doc_presenter.heading), counter: -1) %>
15
+ <%= link_to_document(document, image_tag(block_options[:full_image_url], alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
16
16
  <% elsif block_options[:iiif_tilesource_base].present? %>
17
- <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!800,800/0/default.jpg', alt: doc_presenter.heading), counter: -1) %>
18
- <% elsif has_thumbnail? document %>
19
- <%= render_thumbnail_tag(document, { alt: doc_presenter.heading }, document_counter: -1) %>
17
+ <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!800,800/0/default.jpg', alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
18
+ <% elsif doc_presenter.thumbnail.exists? %>
19
+ <%= doc_presenter.thumbnail.thumbnail_tag({ alt: doc_presenter.heading }, document_counter: -1) %>
20
20
  <% end %>
21
21
  </div>
22
22
 
23
23
  <% indicators << capture do %>
24
24
  <li data-target="#<%= html_id %>" data-slide-to="<%= index %>" class="list-group-item <%= 'active' if index == 0 %>">
25
- <a href="#" title="<%= (caption_text = doc_presenter.field_value(blacklight_config.index_fields[solr_documents_features_block.primary_caption? ? solr_documents_features_block.primary_caption_field : document_show_link_field(document)] || Blacklight::Configuration::NullField.new(solr_documents_features_block.primary_caption? ? solr_documents_features_block.primary_caption_field : document_show_link_field(document)))) %>">
25
+ <% caption_text = solr_documents_features_block.document_caption(doc_presenter, solr_documents_features_block.primary_caption_field, default: Spotlight::PageConfigurations::DOCUMENT_TITLE_KEY) %>
26
+
27
+ <a href="#" title="<%= caption_text %>">
26
28
  <%= truncate(caption_text, length: 95) %>
27
29
  </a>
28
30
  <% if solr_documents_features_block.secondary_caption? %>
29
- <p><%= doc_presenter.field_value(blacklight_config.index_fields[solr_documents_features_block.secondary_caption_field] || Blacklight::Configuration::NullField.new(solr_documents_features_block.secondary_caption_field)) %></p>
31
+ <p><%= solr_documents_features_block.document_caption(doc_presenter, solr_documents_features_block.secondary_caption_field) %></p>
30
32
  <% end %>
31
33
  </li>
32
34
  <% end %>
@@ -3,14 +3,14 @@
3
3
  <div class="items-col align-content-start justify-content-between flex-wrap <%= solr_documents_grid_block.text? ? 'col-md-9' : 'col-md-12' %> <%= solr_documents_grid_block.content_align == 'right' ? 'float-right' : 'float-left' %>">
4
4
  <% if solr_documents_grid_block.documents? %>
5
5
  <% solr_documents_grid_block.each_document.each_with_index do |(block_options, document), index| %>
6
- <% doc_presenter = index_presenter(document) %>
6
+ <% doc_presenter = document_presenter(document) %>
7
7
  <div class="box item-<%= index %>" data-id="<%= document.id %>">
8
8
  <% if block_options[:thumbnail_image_url].present? %>
9
- <%= link_to_document(document, image_tag(block_options[:thumbnail_image_url], class: 'img-thumbnail', alt: doc_presenter.heading), counter: -1) %>
9
+ <%= link_to_document(document, image_tag(block_options[:thumbnail_image_url], class: 'img-thumbnail', alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
10
10
  <% elsif block_options[:iiif_tilesource_base].present? %>
11
- <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!400,400/0/default.jpg', class: 'img-thumbnail', alt: doc_presenter.heading), counter: -1) %>
12
- <% elsif has_thumbnail? document %>
13
- <%= render_thumbnail_tag(document, { class: 'img-thumbnail', alt: doc_presenter.heading }, document_counter: -1) %>
11
+ <%= link_to_document(document, image_tag(block_options[:iiif_tilesource_base] + '/full/!400,400/0/default.jpg', class: 'img-thumbnail', alt: doc_presenter.heading, skip_pipeline: true), counter: -1) %>
12
+ <% elsif doc_presenter.thumbnail.exists? %>
13
+ <%= doc_presenter.thumbnail.thumbnail_tag({ class: 'img-thumbnail', alt: doc_presenter.heading }, document_counter: -1) %>
14
14
  <% end %>
15
15
  </div>
16
16
  <% end %>
@@ -16,6 +16,10 @@
16
16
  <%= file[:caption] %>
17
17
  </div>
18
18
  <% end %>
19
+
20
+ <% if uploaded_items_block.zpr_link? %>
21
+ <%= button_tag t('.zpr_link_html', title: file[:caption]), class: 'btn btn-secondary zpr-link', data: { 'iiif-tilesource' => { type: 'image', url: file[:url] }.to_json } %>
22
+ <% end %>
19
23
  </div>
20
24
  </div>
21
25
  <% end %>
@@ -0,0 +1,24 @@
1
+ <% tag = f.object %>
2
+
3
+ <%= render layout: 'spotlight/shared/dd3_item', locals: { id: tag.id.to_s, field: f, dd3_content_classes: "tag" , enabled_method: :present?, label_method: :name, label: tag.name } do |_, section| %>
4
+ <% case section when nil %>
5
+ <div class="d-flex flex-grow-1">
6
+ <div class="flex-grow-1 mx-2 main">
7
+ <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']">
8
+ <a href="#edit-in-place" class="field-label edit-in-place"><%= tag.name %></a>
9
+ <%= f.hidden_field :name, value: tag.name , class: 'form-control form-control-sm title-field', data: {:"edit-field-target" => 'true'} %>
10
+ </h4>
11
+
12
+ <div class="card-text">
13
+ <div class=""><%= t 'spotlight.tags.index.taggings.count', count: tag.taggings.count %> &bull; <%= link_to t(:'helpers.action.view'), url_to_tag_facet(tag.name) %></div>
14
+ <%= f.hidden_field :current_name, value: tag.name %>
15
+
16
+ </div>
17
+ </div>
18
+ <div class="flex m-2">
19
+ <div class="card-text">
20
+ <%= delete_link(tag, exhibit_tag_path(current_exhibit, tag), class: 'btn btn-danger btn-sm') %>
21
+ </div>
22
+ </div>
23
+ <% end %>
24
+ <% end %>
@@ -7,21 +7,17 @@
7
7
  <% if @tags.empty? %>
8
8
  <p><%= t :'.no_tags' %></p>
9
9
  <% else %>
10
- <table class="table table-striped tags">
11
- <thead>
12
- <th><%= t '.name' %></th>
13
- <th><%= t '.taggings.count' %></th>
14
- <%# TODO last used? %>
15
- <th><%= t '.actions' %></th>
16
- </thead>
17
- <tbody>
18
- <% @tags.each do |tag| %>
19
- <tr>
20
- <td><%= link_to tag.name, url_to_tag_facet(tag.name) %></td>
21
- <td><%= tag.taggings.count %></td>
22
- <td><%= delete_link(tag, exhibit_tag_path(current_exhibit, tag), class: 'btn btn-danger btn-sm') %></td>
23
- </tr>
10
+ <%= bootstrap_form_for @exhibit, url: update_all_exhibit_tags_path(@exhibit), layout: :horizontal, control_col: 'col-sm-10' do |f| %>
11
+ <ul class="dd-list">
12
+ <% @tags.each_with_index do |tag, index| %>
13
+ <%= f.fields_for :owned_tags_attributes, tag, index: index do |p| %>
14
+ <%= render partial: 'tag', locals: { f: p } %>
15
+ <% end %>
16
+ </ul>
17
+ <% end %>
18
+
19
+ <div class="float-right">
20
+ <%= submit_tag t(:'helpers.action.update_all'), class: "btn btn-primary" %>
21
+ </div>
24
22
  <% end %>
25
- </tbody>
26
- </table>
27
23
  <% end %>
@@ -0,0 +1,34 @@
1
+ <div role="tabpanel" class="tab-pane <%= 'active' if @tab == 'groups' %>" id="groups">
2
+ <%= bootstrap_form_for current_exhibit, url: spotlight.exhibit_translations_path(current_exhibit), layout: :horizontal do |f| %>
3
+ <% # Add hidden fields for the language and tab so the redirect knows how to come back here %>
4
+ <%= hidden_field_tag :language, @language %>
5
+ <%= hidden_field_tag :tab, 'groups' %>
6
+
7
+ <% current_exhibit.groups.each do |group| %>
8
+ <% title_translation = Translation.find_or_initialize_by(exhibit: current_exhibit, key: "#{group.slug}.title", locale: @language) %>
9
+ <%= f.fields_for :translations, title_translation do |translation_fields| %>
10
+ <%= translation_fields.hidden_field :key %>
11
+ <%= translation_fields.hidden_field :locale %>
12
+ <div data-translation-progress-item="true" class="row form-group browse-group-title">
13
+ <%= translation_fields.label :value, group[:title], class: 'col-form-label col-12 col-sm-2' %>
14
+ <div class="col-11 col-sm-9">
15
+ <%= translation_fields.text_field_without_bootstrap :value, class: 'form-control' %>
16
+ </div>
17
+ <div class="col-1">
18
+ <% if title_translation.value.present? %>
19
+ <span data-translation-present="true">
20
+ <%= blacklight_icon('check', classes: 'translation-complete') %>
21
+ </span>
22
+ <% end %>
23
+ </div>
24
+ </div>
25
+ <% end %>
26
+ <% end %>
27
+
28
+ <div class="form-actions">
29
+ <div class="primary-actions">
30
+ <%= f.submit nil, class: 'btn btn-primary' %>
31
+ </div>
32
+ </div>
33
+ <% end %>
34
+ </div>
@@ -1,10 +1,10 @@
1
1
  <% if can? :import_translations, Spotlight::Exhibit %>
2
- <div class="row col-md-12 mb-4">
2
+ <div class="row col-md-12 mb-5">
3
3
  <h2><%= t(:'.header') %></h2>
4
4
  <p class="instructions"><%= t(:'.description') %></p>
5
5
 
6
- <%= bootstrap_form_for current_exhibit, url: spotlight.import_exhibit_translations_path(current_exhibit), html: { class: 'row col-md-12 clearfix mb-3', multipart: true } do |f| %>
7
- <%= f.label :value, t(".import_label"), class: 'col-form-label col-12 col-sm-3 text-right' %>
6
+ <%= bootstrap_form_for current_exhibit, url: spotlight.import_exhibit_translations_path(current_exhibit), html: { class: 'row col-md-12 align-items-center clearfix mb-3', multipart: true } do |f| %>
7
+ <%= f.label :value, t(".import_label"), class: 'col-form-label col-12 col-sm-3 pl-0 translation-import-export-label' %>
8
8
 
9
9
  <div class="input-group col px-0">
10
10
  <%= file_field_tag :file, class: 'form-control' %>
@@ -14,8 +14,8 @@
14
14
  </div>
15
15
  </div>
16
16
  <% end %>
17
- <div class="row col-md-12">
18
- <%= content_tag :span, t(".export_label"), class: 'col-form-label col-12 col-sm-3 text-right' %>
17
+ <div class="row col-md-12 align-items-center">
18
+ <%= content_tag :span, t(".export_label"), class: 'col-form-label col-12 col-sm-3 pl-0 translation-import-export-label' %>
19
19
 
20
20
  <%= link_to t(:'.export_current_locale', language: t(:"locales.#{@language}")), spotlight.exhibit_translations_path(current_exhibit, format: "yaml", locale: @language), class: 'btn btn-primary mr-3' %>
21
21
  <%= link_to t(:'.export_default_locale', language: t(:"locales.#{I18n.default_locale}")), spotlight.exhibit_translations_path(current_exhibit, format: "yaml", locale: I18n.default_locale), class: 'btn btn-primary' %>
@@ -41,6 +41,11 @@
41
41
  <%= t('spotlight.translations.browse_categories.label') %> <span class="badge"></span>
42
42
  </a>
43
43
  </li>
44
+ <li class="nav-item">
45
+ <a href="#groups" class="nav-link <%= 'active' if @tab == 'groups' %>" aria-controls="groups" role="tab" data-toggle="tab" data-behavior="translation-progress">
46
+ <%= t('spotlight.translations.groups.label') %> <span class="badge"></span>
47
+ </a>
48
+ </li>
44
49
  <li class="nav-item">
45
50
  <a href="#pages" class="nav-link <%= 'active' if @tab == 'pages' %>" aria-controls="pages" role="tab" data-toggle="tab" data-behavior="translation-progress">
46
51
  <%= t('spotlight.translations.pages.label') %> <span class="badge"></span>
@@ -54,6 +59,7 @@
54
59
  <%= render 'search_fields' %>
55
60
  <%= render 'browse_categories' %>
56
61
  <%= render 'pages' %>
62
+ <%= render 'groups' %>
57
63
  </div>
58
64
  </div>
59
65
  </div>
@@ -71,6 +71,12 @@ json.set!(locale) do
71
71
  end
72
72
  end
73
73
 
74
+ current_exhibit.groups.each do |group|
75
+ json.set!(group.slug) do
76
+ json.title group.translated_title(default: '')
77
+ end
78
+ end
79
+
74
80
  current_exhibit.searches.each do |search|
75
81
  json.set!(search.slug) do
76
82
  json.title search.translated_title(default: '')
@@ -39,6 +39,8 @@ ignore_unused:
39
39
  - activerecord.attributes.spotlight/masthead.display # app/views/spotlight/appearances/edit.html.erb
40
40
  - activerecord.attributes.spotlight/custom_field.is_multiple # app/views/spotlight/custom_fields/_form.html.erb
41
41
  - activerecord.attributes.spotlight/custom_search_field.field # app/views/spotlight/custom_search_fields/_form.html.erb
42
+ - activerecord.models.spotlight/group # Used in flash messages around the app to rename Group to Browse group
43
+ - activerecord.models.spotlight/search # Used in flash messages around the app to rename Search to Browse category
42
44
  - helpers.label.spotlight/filter.{field,value} # app/views/spotlight/filters/_form.html.erb
43
45
  - spotlight.catalog.admin.{title,header} # app/helpers/spotlight/title_helper.rb
44
46
  - spotlight.{contacts,pages,searches}.edit.{title,header} # app/helpers/spotlight/title_helper.rb
@@ -49,14 +51,17 @@ ignore_unused:
49
51
  - spotlight.featured_images.upload_form.{non_iiif_alert_html,source.exhibit.help,source.exhibit.label} # app/views/spotlight/featured_images/_form.html.erb
50
52
  - spotlight.feature_pages.page_options.published # app/views/spotlight/feature_pages/_page_options.html.erb
51
53
  - spotlight.{exhibits,custom_fields,custom_search_fields}.{new,edit}.header # configuration_page_title
54
+ - spotlight.{searches}.{group}.{view}
52
55
  - helpers.submit.custom_field.{batch_error,batch_updated,create,submit,update} # Generic repeated template
53
56
  - helpers.submit.custom_search_field.{batch_error,batch_updated,create,submit,update} # Generic repeated template
54
57
  - helpers.submit.exhibit.{batch_error,batch_updated,create,submit,update} # Generic repeated template
58
+ - helpers.submit.group.{destroyed,updated} # Generic helper that is used
55
59
  - helpers.submit.search.{create,submit,update} # Generic repeated template
56
60
  - helpers.submit.site.{batch_error,batch_updated,create,created,destroyed,submit,update} # Generic repeated template
57
61
  - helpers.submit.filter.{batch_error,batch_updated,create,created,destroyed,submit,update} # Generic repeated template
58
62
  - helpers.action.destroy_are_you_sure # app/helpers/spotlight/crud_link_helpers.rb
59
63
  - helpers.action.spotlight/role.{create,destroy} # app/views/spotlight/roles/index.html.erb
64
+ - helpers.action.spotlight/group.destroy # app/views/spotlight/searches/_group.html.erb
60
65
  - helpers.action.{edit,edit_long,new,view} # app/helpers/spotlight/crud_link_helpers.rb
61
66
  - helpers.action.spotlight/search.edit_long # app/views/spotlight/searches/_search.html.erb
62
67
  - spotlight.about_pages.page_options.published # app/views/spotlight/about_pages/_page_options.html.erb
@@ -78,6 +83,7 @@ ignore_unused:
78
83
  - helpers.action.destroy # no idea here
79
84
  - helpers.action.spotlight/search.destroy # I think it might be used by #action_default_value
80
85
  - helpers.submit.contact_form.create # /shrug
86
+ - spotlight.bulk_actions.{add_tags,change_visibility,remove_tags}.changed.* # app/controllers/spotlight/bulk_actions_controller.rb
81
87
 
82
88
  <% I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
83
89
  patterns: [
@@ -34,6 +34,9 @@ ar:
34
34
  zero_results:
35
35
  expand_html: "تستطيع أن <a href=\"%{clear_search_url}\"> تمسح استعلام البحث </a> أو محاولة <a href=\"%{expand_search_url}\"> البحث في كل المواد المعروضة لاستعلام البحث ل\"%{browse_query}\"</a>"
36
36
  result_number: لم يتطابق بحثك مع أي عنصر في هذه الفئة.
37
+ exhibits:
38
+ groups:
39
+ all: الكل
37
40
  header_links:
38
41
  contact: ملاحظات واقتراحات
39
42
  login: تسجيل الدخول
@@ -52,7 +55,14 @@ ar:
52
55
  few: "%{count} عناصر"
53
56
  many: "%{count} عنصراً"
54
57
  other: "%{count} عنصراً"
55
-
58
+ browse_group_categories_block:
59
+ items:
60
+ one: "%{count} عنصر"
61
+ two: "%{count} عنصرين"
62
+ few: "%{count} عناصر"
63
+ many: "%{count} عنصراً"
64
+ other: "%{count} عنصراً"
65
+ view_all: مشاهدة الكل
56
66
  link_to_search_block:
57
67
  items:
58
68
  zero: "%{count} عنصر"
@@ -24,6 +24,8 @@ en:
24
24
  models:
25
25
  spotlight:
26
26
  page: Page
27
+ spotlight/group: Browse group
28
+ spotlight/search: Browse category
27
29
  cancel: Cancel
28
30
  drag: Drag
29
31
  helpers:
@@ -44,6 +46,8 @@ en:
44
46
  create: Add new field
45
47
  spotlight/custom_search_field:
46
48
  create: Add new field
49
+ spotlight/group:
50
+ destroy: Delete group
47
51
  spotlight/role:
48
52
  create: Add a new user
49
53
  destroy: Remove from site
@@ -101,6 +105,12 @@ en:
101
105
  created: The %{model} was created.
102
106
  destroyed: The %{model} was deleted.
103
107
  updated: The %{model} was successfully updated.
108
+ group:
109
+ batch_error: There was an error updating the requested %{model}.
110
+ batch_updated: "%{model} were successfully updated."
111
+ created: The %{model} was created.
112
+ destroyed: The %{model} was deleted.
113
+ updated: The %{model} was successfully updated.
104
114
  language:
105
115
  create: Add language
106
116
  created: The %{model} was created.
@@ -142,6 +152,10 @@ en:
142
152
  spotlight_default:
143
153
  updated: The %{model} was successfully updated.
144
154
  submit: Save changes
155
+ tags:
156
+ batch_updated:
157
+ one: Renaming %{count} tag
158
+ other: Renaming %{count} tags
145
159
  update: Save changes
146
160
  locales:
147
161
  ar: Arabic
@@ -155,12 +169,6 @@ en:
155
169
  pt-BR: Portuguese - Brazil
156
170
  sq: Albanian
157
171
  zh: Chinese
158
- reindexing_log:
159
- status:
160
- failed: Failed
161
- in_progress: In Progress
162
- succeeded: Successful
163
- unstarted: Not Yet Started
164
172
  shared:
165
173
  site_sidebar:
166
174
  documentation: Curator documentation
@@ -171,7 +179,7 @@ en:
171
179
  header: Contacts
172
180
  contacts_form:
173
181
  header: Contacts
174
- instructions: Enter details for each librarian, curator or other contact person for this exhibit. Select the contacts you want to be show in the sidebar of the About Pages. Drag and drop contacts to specify the order in which they are shown in the sidebar.
182
+ instructions: Enter details for each librarian, curator or other contact person for this exhibit. Select the contacts you want to be show in the sidebar of the about pages. Drag and drop contacts to specify the order in which they are shown in the sidebar.
175
183
  page_options:
176
184
  published: Publish
177
185
  admin_users:
@@ -196,7 +204,7 @@ en:
196
204
  edit:
197
205
  header: Appearance
198
206
  main_navigation:
199
- help: Select the menu items you want to be displayed in the main navigation menu (menu items are only displayed when published pages exist for that item). Click a menu item to change its display label. Drag and drop a menu item to change their order in the menu.
207
+ help: Select the menu items you want to be displayed in the main navigation menu (menu items are only displayed when published pages exist for that item). Select a menu item to change its display label. Drag and drop a menu item to change their order in the menu.
200
208
  menu: Main menu
201
209
  site_masthead:
202
210
  heading: Exhibit masthead
@@ -227,23 +235,147 @@ en:
227
235
  zero_results:
228
236
  expand_html: You can <a href="%{clear_search_url}"> clear this search</a> or try <a href="%{expand_search_url}">searching all exhibit items for "%{browse_query}"</a>.
229
237
  result_number: Your search did not match any items in this browse category.
238
+ bulk_actions:
239
+ add: Add
240
+ add_tags:
241
+ changed:
242
+ one: Tags are being added for %{count} item.
243
+ other: Tags are being added for %{count} items.
244
+ description:
245
+ one: There is %{count} item in the current search result set. Tags entered below will be added to this item. This action won’t affect any tags already assigned to this item.
246
+ other: There are %{count} items in the current search result set. Tags entered below will be added to all %{count} items in the result set. This action won’t affect any tags already assigned to these items.
247
+ heading: Add tags
248
+ label: Enter tags to add
249
+ change: Change
250
+ change_visibility:
251
+ changed:
252
+ one: Visibility of %{count} item is being updated.
253
+ other: Visibility of %{count} items is being updated.
254
+ description:
255
+ one: There is %{count} item in the current search result set. A visibility change will be applied to this item.
256
+ other: There are %{count} items in the current search result set. A visibility change will be applied to all items in the result set.
257
+ heading: Change item visibility
258
+ label: Item visibility
259
+ private: Private
260
+ public: Public
261
+ confirm: All items in the result set will be updated. Are you sure?
262
+ label: Bulk actions
263
+ remove: Remove
264
+ remove_tags:
265
+ assigned: Currently assigned tags
266
+ changed:
267
+ one: Tags are being removed for %{count} item.
268
+ other: Tags are being removed for %{count} items.
269
+ description_html:
270
+ one: "<p>There is %{count} item in the current search result set. Tags shown below are assigned to this item.</p><p>When you remove a tag below it will be unassigned from this item.</p>"
271
+ other: "<p>There are %{count} items in the current search result set. Tags shown below are assigned to one or more of those items.</p><p>When you remove a tag below it will be unassigned from any item in the result set to which that tag is currently assigned.</p>"
272
+ heading: Remove tags
273
+ label: Enter tags to remove
274
+ bulk_updates:
275
+ download:
276
+ guidelines_html: |
277
+ <h2>Guidelines for CSV updates</h2>
278
+ <p class="instructions">
279
+ The downloadable CSV file for this exhibit contains one line for each item in the exhibit. Each line contains one or more comma-separated values. Although you can update the CSV file directly, we strongly recommended importing it into a spreadsheet application and making your updates there. The rest of these guidelines assume you are making updates in a spreadsheet.
280
+ </p>
281
+ <p class="instructions">
282
+ Note that the more lines there are in the completed CSV file that you upload, the longer the updates will take to process. If your exhibit contains more than a few thousand items, after importing the CSV file into a spreadsheet application, you should consider removing the rows of items you do not intend to update. This will also make it easier to focus on the items you do intend to update.
283
+ </p>
284
+ <h3>Column headers</h3>
285
+ <p class="instructions">
286
+ Do not edit the column headers. These are used to match property values to existing exhibit item fields.
287
+ </p>
288
+
289
+ <h3>Reference fields</h3>
290
+ <p class="instructions">
291
+ Do not edit the reference fields. These are intended to help you identify items whose updatable fields you might want to change. Updates to the reference fields will not be processed.
292
+ </p>
293
+
294
+ <p class="instructions">
295
+ If you are making a lot of updates, we recommended you use the protect or lock feature of your spreadsheet application to lock the reference field columns and ensure you don’t inadvertently edit them.
296
+ </p>
297
+
298
+ <h3>Updatable fields</h3>
299
+ <dl>
300
+ <dt>Visibility</dt>
301
+ <dd>Valid values are <em>public</em> (expressed as <samp>TRUE</samp>) and <em>private</em> (blank value).</dd>
302
+
303
+ <dt>Tags</dt>
304
+ <dd>
305
+ <p class="instructions">
306
+ If you chose to include tags in the CSV file, there will be a column in the spreadsheet for each existing tag in the exhibit, prefixed with <samp>Tag:</samp>, such as <samp>Tag: apples</samp>. (If you want to add to items a tag that does not yet exist, you must first add that tag to at least one item (by editing an item or using the Bulk actions feature on a search result set of items) before downloading the CSV file.)
307
+ </p>
308
+
309
+ <p class="instructions">
310
+ To assign a tag to an exhibit item, the value of the <samp>Tag:</samp> column for that item must be <samp>TRUE</samp>. A blank value in the <samp>Tag:</samp> column for an item means that tag is not assigned to that item.
311
+ </p>
312
+
313
+ <p class="instructions">
314
+ To remove a tag currently assigned to an item, remove the <samp>TRUE</samp> value from the appropriate <samp>Tag:</samp> column for that item.
315
+ </p>
316
+ </dd>
317
+ </dl>
318
+ instructions_html: A CSV file listing each item in this exhibit will be generated with the reference and updatable fields you specify below. <i>Reference fields</i> are intended to help you identify items that you intend to update. <i>Updatable fields</i> are the fields for which you can update values (see guidelines below).
319
+ item_id: Item ID
320
+ item_title: Item title
321
+ reference_fields:
322
+ heading: Reference fields
323
+ submit: Download CSV file
324
+ tags: Tags
325
+ updatable_fields:
326
+ heading: Updatable fields
327
+ visibility: Visibility
328
+ edit:
329
+ download:
330
+ heading: Download CSV
331
+ header: Bulk updates
332
+ overview:
333
+ heading: Overview
334
+ upload:
335
+ heading: Upload CSV
336
+ overview:
337
+ instructions_html: |
338
+ <p>You can update in bulk several properties of items in this exhibit:</p> <ul>
339
+ <li>Visibility</li>
340
+ <li>Tags</li>
341
+ </ul> <p>The steps to making bulk updates are:</p> <ol>
342
+ <li>Download a CSV (comma-separated values) file from the Download CSV tab above. The downloaded CSV file will contain a row for every item in this exhibit. Each row contains the unique ID of an exhibit item along with the values of the reference and updatable fields you specify.</li>
343
+ <li>Import the CSV file into a new spreadsheet, using an application such as a Google Sheets or Excel.</li>
344
+ <li>In the new spreadsheet, update the values for the updatable fields of exhibit items you want to change. When you’ve finished making updates, save the spreadsheet.</li>
345
+ <li>(Optional) Remove the rows for items that contain no updated values. This is not required but for exhibits with many items this can speed up the import process. If necessary, save the spreadsheet.</li>
346
+ <li>Download/export the updated spreadsheet to your computer as a .csv file.</li>
347
+ <li>Use the Upload CSV tab above to submit the updated file for processing.</li>
348
+ </ol>
349
+ progress_panel:
350
+ begin_html: Began CSV processing
351
+ completed_html: Completed CSV processing
352
+ error: An error occured while processing the CSV. Contact your exhibits administrator for more information.
353
+ heading: CSV processing status
354
+ update:
355
+ error: There was a problem uploading your CSV.
356
+ submitted: The CSV file was uploaded successfully.
357
+ upload:
358
+ file_label: Upload CSV file
359
+ form_help: The uploaded file must have a ".csv" extension
360
+ instructions: After you've saved updates to a CSV file, use the Upload CSV file action below to submit it for processing.
361
+ submit: Upload
230
362
  catalog:
231
363
  admin:
232
364
  header: Items
233
- title: Curation - Items
365
+ title: Curation - items
234
366
  admin_header:
235
367
  new_resource: Add items
236
368
  reindex: Reindex items
237
369
  breadcrumb:
238
- index: Search Results
370
+ index: Search results
239
371
  document_visibility_control:
240
372
  inprogress:
241
373
  label: ''
242
374
  make_private:
243
- button: Make Private
375
+ button: Make private
244
376
  label: ''
245
377
  make_public:
246
- button: Make Public
378
+ button: Make public
247
379
  label: ''
248
380
  edit_default:
249
381
  url-field:
@@ -252,15 +384,16 @@ en:
252
384
  blank_field_warning_html: This field is currently hidden on all pages. You can make it visible on the Curation &gt; %{link} page.
253
385
  facets:
254
386
  exhibit_visibility:
255
- label: Item Visibility
387
+ label: Item visibility
256
388
  private: Private
389
+ public: Public
257
390
  fields:
258
- date_added: Date Added
391
+ date_added: Date added
259
392
  title: Title
260
393
  visibility: Public
261
394
  reindex_progress_panel:
262
395
  begin_html: Began reindexing a total of <span data-behavior='total'></span> items.
263
- completed_html: Reindexed <span data-behavior='completed'></span> of <span data-behavior='total'></span> items.
396
+ current_html: Reindexed <span data-behavior='completed'></span> of <span data-behavior='total'></span> items.
264
397
  error: An error occured while reindexing. Contact your exhibits administrator for more information.
265
398
  heading: Reindexing status
266
399
  configuration:
@@ -268,6 +401,7 @@ en:
268
401
  sidebar:
269
402
  appearance: Appearance
270
403
  header: Configuration
404
+ job_trackers: Job status
271
405
  metadata: Metadata
272
406
  search_configuration: Search
273
407
  settings: General
@@ -281,7 +415,7 @@ en:
281
415
  subject: "%{application_name} exhibit feedback"
282
416
  contacts:
283
417
  edit:
284
- header: Edit Contact
418
+ header: Edit contact
285
419
  form:
286
420
  avatar:
287
421
  header: Avatar
@@ -300,7 +434,7 @@ en:
300
434
  title:
301
435
  placeholder: Job title most relevant to this exhibit
302
436
  new:
303
- header: Add Exhibit Contact
437
+ header: Add exhibit contact
304
438
  curation:
305
439
  header: Curation
306
440
  nav:
@@ -309,6 +443,7 @@ en:
309
443
  about_pages: About pages
310
444
  analytics: Analytics
311
445
  browse: Browse
446
+ bulk_updates: Bulk updates
312
447
  dashboard: Dashboard
313
448
  feature_pages: Feature pages
314
449
  header: Curation
@@ -317,7 +452,7 @@ en:
317
452
  translations: Translations
318
453
  custom_fields:
319
454
  edit:
320
- header: Edit Exhibit-Specific Field
455
+ header: Edit exhibit-specific field
321
456
  form:
322
457
  field_type:
323
458
  label: Type
@@ -326,19 +461,19 @@ en:
326
461
  is_multiple:
327
462
  label: Multi-valued?
328
463
  new:
329
- header: Add Exhibit-Specific Field
464
+ header: Add exhibit-specific field
330
465
  custom_search_fields:
331
466
  edit:
332
- header: Edit Exhibit-Specific Field
467
+ header: Edit exhibit-specific field
333
468
  form:
334
469
  field:
335
470
  help: Specify fields to be searched and their boost values (e.g., full_title_tesim^100 personal_name_tesim^50).
336
471
  new:
337
- header: Add Exhibit-Specific Field
472
+ header: Add exhibit-specific field
338
473
  dashboards:
339
474
  analytics:
340
475
  header: Analytics
341
- monthly_header: User Activity Over the Past Month
476
+ monthly_header: User activity over the past month
342
477
  pages:
343
478
  header: Most popular pages
344
479
  pagetitle: page title
@@ -349,21 +484,21 @@ en:
349
484
  field:
350
485
  last_edited_by: User
351
486
  title: Title
352
- updated_at: Last Edited
353
- header: Recent Site Building Activity
487
+ updated_at: Last edited
488
+ header: Recent site building activity
354
489
  reindexing_activity:
355
490
  field:
356
491
  date: Date
357
- duration: Elapsed Time
358
- items_reindexed_count: Items Indexed
492
+ duration: Elapsed time
493
+ items_reindexed_count: Items indexed
359
494
  job_status: Status
360
- user: Requested By
361
- header: Recent Item Indexing Activity
495
+ user: Requested by
496
+ header: Recent item indexing activity
362
497
  no_reindexing_activity: There has been no reindexing activity
363
498
  show:
364
499
  header: Dashboard
365
500
  solr_document_activity:
366
- header: Recently Updated Items
501
+ header: Recently updated items
367
502
  no_documents: There are no documents in this exhibit
368
503
  exhibitnavbar:
369
504
  label: Exhibit navigation
@@ -403,6 +538,8 @@ en:
403
538
  published:
404
539
  help_block: ''
405
540
  uneditable_non_default_language: This field is not editable in the current language. Switch to the default language to edit it.
541
+ groups:
542
+ all: All
406
543
  import:
407
544
  button: Import data
408
545
  heading: Import data
@@ -412,7 +549,7 @@ en:
412
549
  unpublished: Unpublished exhibits
413
550
  user: Your exhibits
414
551
  languages:
415
- current_header: Current Languages
552
+ current_header: Current languages
416
553
  current_instructions: Each language listed below is available for translations on the Curation > Translations page. To enable exhibit visitors to change the language of the exhibit, enable the Public checkbox. To hide translations from an available language from the exhibit, disable the Public checkbox.
417
554
  heading: Languages
418
555
  modal:
@@ -440,7 +577,7 @@ en:
440
577
  exhibits_admin_invitation_mailer:
441
578
  invitation_instructions:
442
579
  accept: Accept invitation
443
- accept_invitation: " You can accept this invitation by clicking the link below."
580
+ accept_invitation: You can accept this invitation by selecting the link below.
444
581
  hello: Hello!
445
582
  ignore: If you don't want to accept the invitation, please ignore this email. Your exhibits administrator account won't be created until you access the link above.
446
583
  someone_invited_you: The Exhibits Administrator has invited you to help manage exhibits.
@@ -451,7 +588,7 @@ en:
451
588
  featured_images:
452
589
  form:
453
590
  crop_area:
454
- help: Adjust the image so that the rectangle contains the area you want to use as the %{thing}. Click "Save changes" to save the cropped area.
591
+ help_html: Adjust the image so that the rectangle contains the area you want to use as the %{thing}. Select <b>Save changes</b> to save the cropped area.
455
592
  non_iiif_alert_html: The image source must be a IIIF image. Contact your exhibits adminstrator or see the <a href="http://iiif.io">IIIF website</a> for more information about IIIF.
456
593
  source:
457
594
  exhibit:
@@ -464,7 +601,7 @@ en:
464
601
  label: Upload an image
465
602
  upload_form:
466
603
  crop_area:
467
- help: Adjust the image so that the rectangle contains the area you want to use as the %{thing}. Click "Save changes" to save the cropped area.
604
+ help_html: Adjust the image so that the rectangle contains the area you want to use as the %{thing}. Select <b>Save changes</b> to save the cropped area.
468
605
  non_iiif_alert_html: The image source must be a IIIF image. Contact your exhibits adminstrator or see the <a href="http://iiif.io">IIIF website</a> for more information about IIIF.
469
606
  source:
470
607
  exhibit:
@@ -494,30 +631,61 @@ en:
494
631
  title: Your CSV file has just finished being processed.
495
632
  invitation_mailer:
496
633
  invitation_instructions:
497
- accept_invitation: You can accept this invitation by clicking the link below.
634
+ accept_invitation: You can accept this invitation by selecting the link below.
498
635
  hello: Hello!
499
636
  ignore: If you don't want to accept the invitation, please ignore this email. Your account won't be created until you access the link above.
500
637
  someone_invited_you: The Exhibits Administrator has invited you to help work on the "%{exhibit_name}" exhibit.
501
638
  subject: Invitation to manage \"%{exhibit_name}\"
502
639
  visit: Visit exhibit
640
+ job_trackers:
641
+ show:
642
+ headers:
643
+ details: Details
644
+ message: Message
645
+ messages:
646
+ created_by: job created by %{user}
647
+ errors:
648
+ one: "(%{count} error)"
649
+ other: "(%{count} errors)"
650
+ progress: processed %{progress} / %{total}
651
+ started: job started
652
+ status:
653
+ completed: job completed
654
+ enqueued: job enqueued
655
+ failed: job failed
656
+ in_progress: ''
657
+ missing: "(missing status)"
658
+ pending: job pending
659
+ summary:
660
+ completed: Completed %{last_updated} ago in %{duration}
661
+ enqueued: In progress for %{created_at}
662
+ failed: Failed %{last_updated} ago in %{duration}
663
+ in_progress: In progress for %{created_at}
664
+ status:
665
+ completed: Successful
666
+ enqueued: Not yet started
667
+ failed: Failed
668
+ in_progress: In progress
669
+ missing: Unknown
670
+ pending: Pending
503
671
  main_navigation:
504
672
  about: About
505
673
  browse: Browse
506
- curated_features: Curated Features
674
+ curated_features: Curated features
507
675
  metadata_configurations:
508
676
  edit:
509
677
  deselect_all: Deselect all
510
678
  exhibit_specific:
511
- header: Exhibit-Specific Fields
679
+ header: Exhibit-specific fields
512
680
  instructions: You can add metadata fields to supplement the metadata fields that are part of the repository item record.
513
681
  field:
514
682
  label: Field name
515
683
  header: Metadata
516
- instructions: Select metadata fields to display on each type of page. Click a field name to edit its display label. Drag and drop fields to specify the order in which they are displayed.
517
- order_header: Display and Order Metadata Fields
684
+ instructions: Select metadata fields to display on each type of page. Select a field name to edit its display label. Drag and drop fields to specify the order in which they are displayed.
685
+ order_header: Display and order metadata fields
518
686
  select_all: Select all
519
687
  view:
520
- show: Item Details
688
+ show: Item details
521
689
  pages:
522
690
  edit:
523
691
  header: Edit page
@@ -527,30 +695,30 @@ en:
527
695
  page_options: Options
528
696
  page_thumbnail: Thumbnail
529
697
  thumbnail:
530
- help: You can select and crop an image to visually represent this page. It will be used as the thumbnail image if you include this page using the 'Highlight Featured Pages' widget.
698
+ help: You can select and crop an image to visually represent this page. It will be used as the thumbnail image if you include this page in the Pages widget.
531
699
  title_placeholder: Title
532
700
  index:
533
701
  about_pages:
534
- header: About Pages
702
+ header: About pages
535
703
  feature_pages:
536
- header: Feature Pages
704
+ header: Feature pages
537
705
  home_pages_header: Homepage
538
706
  home_pages:
539
- header: Exhibit Home
540
- title: Exhibit Home
707
+ header: Exhibit home
708
+ title: Exhibit home
541
709
  new:
542
710
  header: New page
543
711
  order_pages:
544
712
  cancel: Cancel
545
713
  instructions: Add new pages below. Drag and drop pages to change the order in which they are displayed in the sidebar.
546
714
  new_page: Add new page
547
- pages_header: Custom Pages
715
+ pages_header: Custom pages
548
716
  save: Save
549
717
  resources:
550
718
  csv_upload:
551
719
  form:
552
720
  add_item: Add item
553
- file_label: CSV File
721
+ file_label: CSV file
554
722
  help_html: "%{link}"
555
723
  template: Download template
556
724
  title: Upload multiple items
@@ -568,7 +736,7 @@ en:
568
736
  json_upload:
569
737
  form:
570
738
  add_item: Add item
571
- file_label: JSON File
739
+ file_label: JSON file
572
740
  title: Upload raw documents
573
741
  new:
574
742
  header: Add items
@@ -588,16 +756,17 @@ en:
588
756
  role:
589
757
  admin: Admin
590
758
  curator: Curator
759
+ viewer: Viewer
591
760
  roles:
592
761
  edit_fields:
593
762
  help: Enter a valid email address
594
763
  index:
595
764
  actions: Actions
596
- email: Email Address
765
+ email: Email address
597
766
  header: Users
598
767
  invite_pending: pending
599
768
  role: Role
600
- title: Site Configuration - Users
769
+ title: Site configuration - users
601
770
  saved_search:
602
771
  id: Select a title to update a previously saved search
603
772
  label: Save this search
@@ -605,41 +774,41 @@ en:
605
774
  search:
606
775
  fields:
607
776
  abstract_tesim: Abstract
608
- corporate_name_ssm: Corporate Names
777
+ corporate_name_ssm: Corporate names
609
778
  facet:
610
- corporate_name_ssm: Corporate Names
611
- exhibit_tags: Exhibit Tags
779
+ corporate_name_ssm: Corporate names
780
+ exhibit_tags: Exhibit tags
612
781
  genre_ssim: Genre
613
782
  language_ssim: Language
614
- personal_name_ssm: Personal Names
783
+ personal_name_ssm: Personal names
615
784
  subject_geographic_ssim: Geographic
616
785
  subject_temporal_ssim: Era
617
786
  full_title_tesim: Title
618
787
  language_ssm: Language
619
788
  note_desc_note_tesim: Note
620
789
  note_mapuse_tesim: Type
621
- note_page_num_tesim: Page Number
790
+ note_page_num_tesim: Page number
622
791
  note_phys_desc_tesim: Note
623
792
  note_provenance_tesim: Provenance
624
793
  note_references_tesim: References
625
794
  note_source_tesim: Source
626
- personal_name_ssm: Personal Names
795
+ personal_name_ssm: Personal names
627
796
  search:
628
797
  all_fields: Everything
629
798
  author: Author
630
799
  title: Title
631
800
  sort:
632
- date: Date (new to old)
633
- identifier: Identifier
634
- relevance: Relevance
635
- source: Source
636
- title: Title
637
- type: Type
801
+ date: date (new to old)
802
+ identifier: identifier
803
+ relevance: relevance
804
+ source: source
805
+ title: title
806
+ type: type
638
807
  spotlight_upload_attribution_tesim: Attribution
639
808
  spotlight_upload_date_tesim: Date
640
809
  spotlight_upload_description_tesim: Description
641
- subject_geographic_tesim: Geographic Subject
642
- subject_temporal_tesim: Temporal Subject
810
+ subject_geographic_tesim: Geographic subject
811
+ subject_temporal_tesim: Temporal subject
643
812
  search_configurations:
644
813
  default_per_page:
645
814
  label: Default per page
@@ -660,7 +829,7 @@ en:
660
829
  one: "%{count} unique value"
661
830
  other: "%{count} unique values"
662
831
  facets:
663
- help: If the sidebar is visible, users can use the facets shown in the sidebar to limit a search. You can select the facets that are available for searching below. Click a facet field name to edit its display label. Drag and drop facets to specify the order they are displayed in the sidebar.
832
+ help: If the sidebar is visible, users can use the facets shown in the sidebar to limit a search. You can select the facets that are available for searching below. Select a facet field name to edit its display label. Drag and drop facets to specify the order they are displayed in the sidebar.
664
833
  sort_by:
665
834
  count: Frequency
666
835
  index: Value
@@ -672,10 +841,10 @@ en:
672
841
  instructions: You can add custom search fields to supplement the search fields that are part of the default configuration.
673
842
  header: Field-based search
674
843
  help: If the search box is displayed, you can also enable field-based search. Field-based search adds a dropdown menu to your exhibit site's search box that provides the user with an option to restrict a search query to a single metadata field.
675
- instructions: If enabled, you can select below the metadata fields that are available for searching. Click a field name to edit its display label. Drag and drop fields to specify the order they are displayed in the search box dropdown menu.
844
+ instructions: If enabled, you can select below the metadata fields that are available for searching. Select a field name to edit its display label. Drag and drop fields to specify the order they are displayed in the search box dropdown menu.
676
845
  sort:
677
846
  header: Sort fields
678
- help: Select the fields you want to be available to users for sorting results. Click a field title to change its display label. Drag and drop fields to change their order in the sort dropdown menu. The field listed first is the default sort field.
847
+ help: Select the fields you want to be available to users for sorting results. Select a field title to change its display label. Drag and drop fields to change their order in the sort dropdown menu. The field listed first is the default sort field.
679
848
  keys:
680
849
  asc: ascending
681
850
  desc: descending
@@ -687,10 +856,13 @@ en:
687
856
  sort_type_ssi: type
688
857
  searches:
689
858
  edit:
690
- header: Edit Browse Category
691
- title: Curation - Browse
859
+ header: Edit browse category
860
+ title: Curation - browse
692
861
  form:
693
862
  default_index_view_type: Default view
863
+ group:
864
+ help: You can add this browse category to any number of browse groups. When you add a browse category to a group it will be displayed when an exhibit visitor selects that browse group’s filter button on the Browse landing page.
865
+ help_no_groups: You cannot add this browse category to a browse group because no browse groups have been created. To create a browse group, use the Browse groups tab on the Curation > Browse page.
694
866
  masthead:
695
867
  help: You can select and crop an image to use as a browse category-specific masthead, instead of the default site masthead, for this browse category's detail page.
696
868
  help_secondary: To create a browse category-specific masthead, you should use an image that is at least 120 pixels tall and 1200 pixels wide. For best results use an image at least 1800 pixels wide. You can crop larger images using the cropping tool below.
@@ -700,17 +872,32 @@ en:
700
872
  help_block: Displays a search box that enables users to search within the browse category results
701
873
  label: Search box
702
874
  search_description: Description
875
+ search_group: Group
703
876
  search_masthead: Masthead
704
877
  search_thumbnail: Thumbnail
705
878
  thumbnail:
706
879
  help: You can select and crop an image to visually represent this search.
880
+ group:
881
+ category_count:
882
+ one: "%{count} category"
883
+ other: "%{count} categories"
884
+ unpublished_count:
885
+ one: "(%{count} unpublished)"
886
+ other: "(%{count} unpublished)"
887
+ zero: ''
888
+ view: View
707
889
  index:
708
- categories_header: Browse Categories
890
+ add_new_group: Add new group
891
+ cancel: Cancel
892
+ categories_header: Browse categories
893
+ categories_instructions: Use the Save search button on a search results page to create a new browse category. Select the categories you want to be displayed on the browse landing page. Drag and drop categories to change the order in which they appear on that page.
894
+ groups_header: Browse groups
895
+ groups_instructions_html: "<p>Optionally, you can create groups to organize your exhibits’ browse categories and enable exhibit visitors to filter browse categories by group. Drag and drop browse groups to change the order in which their filter buttons are displayed.</p><p>To add a browse category to a browse group, edit the browse category from the Browse categories tab.</p>"
709
896
  header: Browse
710
- instructions: Use the Save search button on a search results page to create a new browse category. Select the categories you want to be displayed on the browse landing page. Drag and drop categories to change the order in which they appear on that page.
711
897
  no_saved_searches: You can save search results while in curation mode to create browse categories, which will be displayed here.
712
898
  not_searchable_html: This exhibit is not currently searchable. To perform searches that can be saved as additional browse categories, temporarily turn on the Display search box option in the Options section of the Configuration > %{href} page.
713
- title: Curation - Browse
899
+ save: Save
900
+ title: Curation - browse
714
901
  search:
715
902
  item_count:
716
903
  one: "%{count} item"
@@ -724,17 +911,26 @@ en:
724
911
  report_a_problem:
725
912
  honeypot_field_explanation: Ignore this text box. It is used to detect spammers. If you enter anything into this text box, your message will not be sent.
726
913
  reporting_from: 'Reporting from: %{url}'
727
- title: Contact Us
914
+ title: Contact us
728
915
  sir_trevor:
729
916
  blocks:
730
917
  browse_block:
731
918
  items:
732
919
  one: "%{count} item"
733
920
  other: "%{count} items"
921
+ browse_group_categories_block:
922
+ items:
923
+ one: "%{count} item"
924
+ other: "%{count} items"
925
+ view_all: View all
734
926
  link_to_search_block:
735
927
  items:
736
928
  one: "%{count} item"
737
929
  other: "%{count} items"
930
+ solr_documents_block:
931
+ zpr_link_html: View <span class="sr-only">%{title}</span> larger
932
+ uploaded_items_block:
933
+ zpr_link_html: View <span class="sr-only">%{title}</span> larger
738
934
  sites:
739
935
  edit:
740
936
  basic_settings:
@@ -754,12 +950,10 @@ en:
754
950
  home: Exhibits
755
951
  tags:
756
952
  index:
757
- actions: Actions
758
953
  header: Tags
759
- name: Tag name
760
- no_tags: No items in this exhibit have been tagged. You can add tags to an item on the Item Details page while in curation mode.
954
+ no_tags: No items in this exhibit have been tagged. You can add tags to an item on the item details page while in curation mode.
761
955
  taggings:
762
- count: Items tagged
956
+ count: 'Items tagged: %{count}'
763
957
  topbar:
764
958
  label: Utilities
765
959
  translations:
@@ -774,16 +968,18 @@ en:
774
968
  general:
775
969
  basic_settings:
776
970
  description: Description
777
- label: Basic Settings
971
+ label: Basic settings
778
972
  subtitle: Subtitle
779
973
  title: Title
780
974
  label: General
781
975
  main_menu:
782
976
  about: About
783
977
  browse: Browse
784
- curated_features: Curated Features
978
+ curated_features: Curated features
785
979
  home: Home
786
- label: Main Menu
980
+ label: Main menu
981
+ groups:
982
+ label: Browse groups
787
983
  import:
788
984
  description: You can import and export Rails-based YAML files containing the translated label values for the currently selected language for use in internationalization tools such as Transifex and i18n-tools. This feature does not include importing or exporting translations for Pages.
789
985
  export_current_locale: Export %{language}
@@ -794,7 +990,7 @@ en:
794
990
  import_submit: Import translations
795
991
  metadata:
796
992
  exhibit_specific_fields:
797
- label: Exhibit-Specific Fields
993
+ label: Exhibit-specific fields
798
994
  label: Metadata field labels
799
995
  page:
800
996
  destroy: Delete
@@ -806,12 +1002,12 @@ en:
806
1002
  recreate_are_you_sure: Are you sure you want to recreate this page? If you recreate this page all content, including any existing translations you have made, will be replaced with the content of the English version of the page.
807
1003
  pages:
808
1004
  about_pages:
809
- label: About Pages
1005
+ label: About pages
810
1006
  feature_pages:
811
- label: Feature Pages
812
- help_html: Before exhibit visitors can view translated pages you must create, edit, and publish each page translation. When you create a translated page, a copy of the default language version of the page is made to serve as the initial translated page. You can then edit that translated page to replace the page title and any text fields with translated text. A translated page will not be visible to exhibit visitors until you publish it. To replace a translated page with a current copy of the default language version of the page, use the <i>Recreate</i> action.
1007
+ label: Feature pages
1008
+ help_html: Before exhibit visitors can view translated pages you must create, edit, and publish each page translation. When you create a translated page, a copy of the default language version of the page is made to serve as the initial translated page. You can then edit that translated page to replace the page title and any text fields with translated text. A translated page will not be visible to exhibit visitors until you publish it. To replace a translated page with a current copy of the default language version of the page, use the <b>Recreate</b> action.
813
1009
  home_page:
814
- label: Home Page
1010
+ label: Home page
815
1011
  label: Pages
816
1012
  pages_table:
817
1013
  header:
@@ -821,12 +1017,12 @@ en:
821
1017
  last_updated: "%{language} title / Last update"
822
1018
  search_fields:
823
1019
  facet_fields:
824
- label: Facet Fields
1020
+ label: Facet fields
825
1021
  field_based_search_fields:
826
- label: Field-Based Search Fields
1022
+ label: Field-based search fields
827
1023
  label: Search field labels
828
1024
  sort_fields:
829
- label: Sort Fields
1025
+ label: Sort fields
830
1026
  versions:
831
1027
  redo: Redo changes
832
1028
  undo: Undo changes