blacklight-spotlight 3.0.0.rc2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (321) 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 +8 -1
  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 +30 -4
  27. data/app/assets/stylesheets/spotlight/_exhibit_admin.scss +9 -0
  28. data/app/assets/stylesheets/spotlight/_featured_browse_categories_block.scss +34 -1
  29. data/app/assets/stylesheets/spotlight/_modals.scss +3 -0
  30. data/app/assets/stylesheets/spotlight/_nestable.scss +8 -0
  31. data/app/assets/stylesheets/spotlight/_spotlight.scss +4 -0
  32. data/app/assets/stylesheets/spotlight/_view_larger.scss +22 -0
  33. data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +92 -0
  34. data/app/assets/stylesheets/spotlight/typeahead.css +23 -23
  35. data/app/builders/spotlight/bootstrap_breadcrumbs_builder.rb +5 -4
  36. data/app/controllers/concerns/spotlight/base.rb +1 -1
  37. data/app/controllers/concerns/spotlight/catalog.rb +7 -1
  38. data/app/controllers/concerns/spotlight/search_helper.rb +2 -8
  39. data/app/controllers/spotlight/appearances_controller.rb +0 -13
  40. data/app/controllers/spotlight/browse_controller.rb +15 -17
  41. data/app/controllers/spotlight/bulk_actions_controller.rb +62 -0
  42. data/app/controllers/spotlight/bulk_updates_controller.rb +67 -0
  43. data/app/controllers/spotlight/catalog_controller.rb +17 -14
  44. data/app/controllers/spotlight/concerns/application_controller.rb +13 -2
  45. data/app/controllers/spotlight/dashboards_controller.rb +5 -4
  46. data/app/controllers/spotlight/exhibits_controller.rb +1 -1
  47. data/app/controllers/spotlight/featured_images_controller.rb +1 -1
  48. data/app/controllers/spotlight/groups_controller.rb +80 -0
  49. data/app/controllers/spotlight/job_trackers_controller.rb +17 -0
  50. data/app/controllers/spotlight/pages_controller.rb +8 -13
  51. data/app/controllers/spotlight/searches_controller.rb +4 -17
  52. data/app/controllers/spotlight/tags_controller.rb +39 -5
  53. data/app/helpers/spotlight/application_helper.rb +21 -2
  54. data/app/helpers/spotlight/crud_link_helpers.rb +1 -1
  55. data/app/helpers/spotlight/job_trackers_helper.rb +31 -0
  56. data/app/helpers/spotlight/main_app_helpers.rb +4 -5
  57. data/app/helpers/spotlight/meta_helper.rb +2 -2
  58. data/app/helpers/spotlight/pages_helper.rb +1 -8
  59. data/app/helpers/spotlight/roles_helper.rb +1 -1
  60. data/app/helpers/spotlight/searches_helper.rb +1 -1
  61. data/app/jobs/concerns/spotlight/gather_documents.rb +35 -0
  62. data/app/jobs/concerns/spotlight/job_tracking.rb +64 -0
  63. data/app/jobs/concerns/spotlight/limit_concurrency.rb +33 -0
  64. data/app/jobs/spotlight/add_tags_job.rb +31 -0
  65. data/app/jobs/spotlight/add_uploads_from_csv.rb +4 -3
  66. data/app/jobs/spotlight/application_job.rb +8 -0
  67. data/app/jobs/spotlight/change_visibility_job.rb +33 -0
  68. data/app/jobs/spotlight/cleanup_job_trackers_job.rb +13 -0
  69. data/app/jobs/spotlight/default_thumbnail_job.rb +1 -3
  70. data/app/jobs/spotlight/process_bulk_updates_csv_job.rb +82 -0
  71. data/app/jobs/spotlight/reindex_exhibit_job.rb +39 -0
  72. data/app/jobs/spotlight/reindex_job.rb +64 -44
  73. data/app/jobs/spotlight/remove_tags_job.rb +31 -0
  74. data/app/jobs/spotlight/rename_sidecar_field_job.rb +3 -2
  75. data/app/jobs/spotlight/rename_tags_job.rb +33 -0
  76. data/app/jobs/spotlight/update_job_trackers_job.rb +20 -0
  77. data/app/models/concerns/spotlight/browse_category_search_builder.rb +59 -0
  78. data/app/models/concerns/spotlight/exhibit_analytics.rb +2 -6
  79. data/app/models/concerns/spotlight/exhibit_documents.rb +2 -2
  80. data/app/models/concerns/spotlight/resources/web.rb +1 -1
  81. data/app/models/concerns/spotlight/search_builder.rb +11 -0
  82. data/app/models/concerns/spotlight/solr_document.rb +1 -1
  83. data/app/models/concerns/spotlight/solr_document/atomic_updates.rb +2 -2
  84. data/app/models/concerns/spotlight/user.rb +7 -2
  85. data/app/models/sir_trevor_rails/blocks/browse_group_categories_block.rb +25 -0
  86. data/app/models/sir_trevor_rails/blocks/solr_documents_block.rb +9 -0
  87. data/app/models/sir_trevor_rails/blocks/uploaded_items_block.rb +4 -0
  88. data/app/models/spotlight/ability.rb +8 -2
  89. data/app/models/spotlight/about_page.rb +1 -1
  90. data/app/models/spotlight/attachment.rb +1 -1
  91. data/app/models/spotlight/background_job_progress.rb +96 -0
  92. data/app/models/spotlight/blacklight_configuration.rb +28 -7
  93. data/app/models/spotlight/bulk_update.rb +8 -0
  94. data/app/models/spotlight/event.rb +13 -0
  95. data/app/models/spotlight/exhibit.rb +15 -12
  96. data/app/models/spotlight/feature_page.rb +1 -3
  97. data/app/models/spotlight/featured_image.rb +41 -2
  98. data/app/models/spotlight/field_metadata.rb +4 -8
  99. data/app/models/spotlight/group.rb +22 -0
  100. data/app/models/spotlight/group_member.rb +11 -0
  101. data/app/models/spotlight/home_page.rb +1 -1
  102. data/app/models/spotlight/job_tracker.rb +114 -0
  103. data/app/models/spotlight/page.rb +3 -5
  104. data/app/models/spotlight/page_configurations.rb +15 -9
  105. data/app/models/spotlight/resource.rb +28 -62
  106. data/app/models/spotlight/resources/iiif_harvester.rb +12 -3
  107. data/app/models/spotlight/resources/iiif_manifest.rb +9 -7
  108. data/app/models/spotlight/resources/iiif_service.rb +9 -2
  109. data/app/models/spotlight/resources/json_upload.rb +12 -0
  110. data/app/models/spotlight/resources/upload.rb +25 -2
  111. data/app/models/spotlight/role.rb +1 -2
  112. data/app/models/spotlight/search.rb +5 -0
  113. data/app/models/spotlight/solr_document_sidecar.rb +2 -1
  114. data/app/presenters/spotlight/iiif_manifest_presenter.rb +2 -2
  115. data/app/services/spotlight/bulk_updates_csv_template_service.rb +93 -0
  116. data/app/services/spotlight/etl.rb +7 -0
  117. data/app/services/spotlight/etl/context.rb +52 -0
  118. data/app/services/spotlight/etl/executor.rb +192 -0
  119. data/app/services/spotlight/etl/loaders.rb +12 -0
  120. data/app/services/spotlight/etl/pipeline.rb +81 -0
  121. data/app/services/spotlight/etl/solr_loader.rb +96 -0
  122. data/app/services/spotlight/etl/sources.rb +25 -0
  123. data/app/services/spotlight/etl/step.rb +82 -0
  124. data/app/services/spotlight/etl/transforms.rb +64 -0
  125. data/app/services/spotlight/exhibit_import_export_service.rb +50 -22
  126. data/app/services/spotlight/iiif_resource_resolver.rb +1 -1
  127. data/app/services/spotlight/validity_checker.rb +5 -5
  128. data/app/uploaders/spotlight/bulk_updates_uploader.rb +7 -0
  129. data/app/uploaders/spotlight/featured_image_uploader.rb +1 -1
  130. data/app/views/catalog/_add_tags.html.erb +28 -0
  131. data/app/views/catalog/_bulk_actions.html.erb +12 -0
  132. data/app/views/catalog/_change_visibility.html.erb +35 -0
  133. data/app/views/catalog/_curator_actions.html.erb +3 -0
  134. data/app/views/catalog/_remove_tags.html.erb +37 -0
  135. data/app/views/catalog/_save_search.html.erb +1 -1
  136. data/app/views/spotlight/about_pages/_sidebar.html.erb +2 -2
  137. data/app/views/spotlight/browse/_search.html.erb +4 -3
  138. data/app/views/spotlight/browse/_search_box.html.erb +9 -9
  139. data/app/views/spotlight/browse/_search_title.html.erb +1 -1
  140. data/app/views/spotlight/browse/index.html.erb +13 -0
  141. data/app/views/spotlight/bulk_updates/_download.html.erb +23 -0
  142. data/app/views/spotlight/bulk_updates/_overview.html.erb +1 -0
  143. data/app/views/spotlight/bulk_updates/_progress_panel.html.erb +19 -0
  144. data/app/views/spotlight/bulk_updates/_upload.html.erb +12 -0
  145. data/app/views/spotlight/bulk_updates/edit.html.erb +37 -0
  146. data/app/views/spotlight/catalog/_admin_header.html.erb +1 -1
  147. data/app/views/spotlight/catalog/_admin_index_header_default.html.erb +1 -1
  148. data/app/views/spotlight/catalog/_admin_thumbnail_default.html.erb +3 -2
  149. data/app/views/spotlight/catalog/_document.html.erb +2 -4
  150. data/app/views/spotlight/catalog/_edit_default.html.erb +2 -2
  151. data/app/views/spotlight/catalog/_reindex_progress_panel.html.erb +1 -1
  152. data/app/views/spotlight/catalog/index.iiif_json.jbuilder +22 -0
  153. data/app/views/spotlight/custom_fields/_form.html.erb +1 -1
  154. data/app/views/spotlight/custom_search_fields/_form.html.erb +1 -1
  155. data/app/views/spotlight/dashboards/_reindexing_activity.html.erb +6 -6
  156. data/app/views/spotlight/exhibits/_exhibit_card.html.erb +1 -1
  157. data/app/views/spotlight/feature_pages/_sidebar.html.erb +1 -1
  158. data/app/views/spotlight/featured_images/_form.html.erb +1 -1
  159. data/app/views/spotlight/job_trackers/show.html.erb +79 -0
  160. data/app/views/spotlight/metadata_configurations/_metadata_field.html.erb +2 -2
  161. data/app/views/spotlight/pages/_form.html.erb +2 -2
  162. data/app/views/spotlight/pages/_view_type_group.html.erb +3 -3
  163. data/app/views/spotlight/pages/show.html.erb +1 -1
  164. data/app/views/spotlight/resources/_form.html.erb +1 -1
  165. data/app/views/spotlight/resources/csv_upload/_form.html.erb +1 -1
  166. data/app/views/spotlight/resources/iiif/_form.html.erb +1 -1
  167. data/app/views/spotlight/resources/json_upload/_form.html.erb +2 -2
  168. data/app/views/spotlight/resources/upload/_form.html.erb +1 -1
  169. data/app/views/spotlight/search_configurations/_document_index_view_types.html.erb +2 -2
  170. data/app/views/spotlight/searches/_form.html.erb +14 -2
  171. data/app/views/spotlight/searches/_group.html.erb +27 -0
  172. data/app/views/spotlight/searches/index.html.erb +58 -17
  173. data/app/views/spotlight/shared/_curation_sidebar.html.erb +3 -0
  174. data/app/views/spotlight/shared/_locale_picker.html.erb +1 -1
  175. data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +45 -0
  176. data/app/views/spotlight/sir_trevor/blocks/_search_results_block.html.erb +1 -1
  177. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb +8 -8
  178. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb +7 -7
  179. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb +9 -7
  180. data/app/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb +5 -5
  181. data/app/views/spotlight/sir_trevor/blocks/_uploaded_items_block.html.erb +4 -0
  182. data/app/views/spotlight/tags/_tag.html.erb +24 -0
  183. data/app/views/spotlight/tags/index.html.erb +12 -16
  184. data/app/views/spotlight/translations/_groups.html.erb +34 -0
  185. data/app/views/spotlight/translations/edit.html.erb +6 -0
  186. data/app/views/spotlight/translations/show.yaml.yamlbuilder +6 -0
  187. data/config/i18n-tasks.yml +6 -0
  188. data/config/locales/spotlight.ar.yml +11 -1
  189. data/config/locales/spotlight.en.yml +207 -11
  190. data/config/routes.rb +39 -1
  191. data/db/migrate/20210113092223_create_spotlight_groups.rb +23 -0
  192. data/db/migrate/20210122082032_create_job_trackers.rb +22 -0
  193. data/db/migrate/20210126123041_create_events.rb +15 -0
  194. data/db/migrate/20210305070001_remove_class_from_sirtrevor_image_blocks.rb +20 -0
  195. data/db/migrate/20210305171150_create_bulk_updates.rb +9 -0
  196. data/db/migrate/20210308090000_migrate_caption_values_for_title_key.rb +29 -0
  197. data/db/migrate/20210506070809_add_indexes_for_featured_images.rb +9 -0
  198. data/lib/generators/spotlight/install_generator.rb +5 -5
  199. data/lib/generators/spotlight/scaffold_resource_generator.rb +5 -13
  200. data/lib/generators/spotlight/templates/config/initializers/riiif.rb +7 -5
  201. data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +1 -1
  202. data/lib/generators/spotlight/templates/solr/config/schema.xml +1 -1
  203. data/lib/migration/iiif.rb +3 -3
  204. data/lib/spotlight/engine.rb +26 -4
  205. data/lib/spotlight/version.rb +1 -1
  206. data/spec/controllers/spotlight/browse_controller_spec.rb +23 -6
  207. data/spec/controllers/spotlight/bulk_actions_controller_spec.rb +124 -0
  208. data/spec/controllers/spotlight/bulk_updates_controller_spec.rb +77 -0
  209. data/spec/controllers/spotlight/catalog_controller_spec.rb +15 -13
  210. data/spec/controllers/spotlight/feature_pages_controller_spec.rb +11 -0
  211. data/spec/controllers/spotlight/featured_images_controller_spec.rb +3 -3
  212. data/spec/controllers/spotlight/groups_controller_spec.rb +103 -0
  213. data/spec/controllers/spotlight/job_trackers_controller_spec.rb +37 -0
  214. data/spec/controllers/spotlight/searches_controller_spec.rb +10 -3
  215. data/spec/controllers/spotlight/tags_controller_spec.rb +5 -1
  216. data/spec/controllers/spotlight/view_configurations_controller_spec.rb +1 -1
  217. data/spec/examples.txt +1502 -136
  218. data/spec/factories/bulk_updates.rb +15 -0
  219. data/spec/factories/exhibits.rb +4 -0
  220. data/spec/factories/group.rb +17 -0
  221. data/spec/factories/job_trackers.rb +11 -0
  222. data/spec/factories/searches.rb +10 -0
  223. data/spec/factories/users.rb +27 -8
  224. data/spec/features/add_items_spec.rb +10 -5
  225. data/spec/features/browse_category_admin_spec.rb +36 -4
  226. data/spec/features/browse_category_navigation_spec.rb +44 -0
  227. data/spec/features/browse_category_spec.rb +2 -2
  228. data/spec/features/bulk_actions_spec.rb +72 -0
  229. data/spec/features/catalog_spec.rb +1 -0
  230. data/spec/features/exhibits/translation_editing_spec.rb +49 -0
  231. data/spec/features/home_page_spec.rb +4 -4
  232. data/spec/features/import_exhibit_spec.rb +5 -1
  233. data/spec/features/javascript/about_page_admin_spec.rb +1 -1
  234. data/spec/features/javascript/block_controls_spec.rb +1 -1
  235. data/spec/features/javascript/blocks/browse_group_categories_block_spec.rb +64 -0
  236. data/spec/features/javascript/blocks/solr_documents_block_spec.rb +4 -4
  237. data/spec/features/javascript/blocks/uploaded_items_block_spec.rb +27 -1
  238. data/spec/features/javascript/browse_group_admin_spec.rb +45 -0
  239. data/spec/features/javascript/edit_in_place_spec.rb +2 -2
  240. data/spec/features/javascript/feature_page_admin_spec.rb +1 -1
  241. data/spec/features/javascript/reindex_monitor_spec.rb +1 -1
  242. data/spec/features/site_users_management_spec.rb +5 -5
  243. data/spec/fixtures/bulk-update-template.csv +57 -0
  244. data/spec/fixtures/updated-bulk-update-template-w-tags.csv +4 -0
  245. data/spec/fixtures/updated-bulk-update-template.csv +4 -0
  246. data/spec/helpers/spotlight/application_helper_spec.rb +5 -6
  247. data/spec/helpers/spotlight/crud_link_helpers_spec.rb +3 -3
  248. data/spec/helpers/spotlight/pages_helper_spec.rb +8 -15
  249. data/spec/helpers/spotlight/roles_helper_spec.rb +1 -1
  250. data/spec/i18n_spec.rb +1 -0
  251. data/spec/jobs/spotlight/add_tags_job_spec.rb +34 -0
  252. data/spec/jobs/spotlight/add_uploads_from_csv_spec.rb +4 -1
  253. data/spec/jobs/spotlight/change_visibility_job_spec.rb +30 -0
  254. data/spec/jobs/spotlight/process_bulk_updates_csv_job_spec.rb +78 -0
  255. data/spec/jobs/spotlight/reindex_exhibit_job_spec.rb +43 -0
  256. data/spec/jobs/spotlight/reindex_job_spec.rb +34 -60
  257. data/spec/jobs/spotlight/remove_tags_job_spec.rb +39 -0
  258. data/spec/lib/migration/iiif_spec.rb +1 -1
  259. data/spec/models/sir_trevor_rails/blocks/browse_group_categories_block_spec.rb +41 -0
  260. data/spec/models/spotlight/ability_spec.rb +27 -0
  261. data/spec/models/spotlight/background_job_progress_spec.rb +137 -0
  262. data/spec/models/spotlight/blacklight_configuration_spec.rb +22 -17
  263. data/spec/models/spotlight/browse_category_search_builder_spec.rb +49 -0
  264. data/spec/models/spotlight/exhibit_spec.rb +12 -58
  265. data/spec/models/spotlight/featured_image_spec.rb +13 -1
  266. data/spec/models/spotlight/group_spec.rb +19 -0
  267. data/spec/models/spotlight/resource_spec.rb +89 -87
  268. data/spec/models/spotlight/resources/iiif_harvester_spec.rb +9 -10
  269. data/spec/models/spotlight/role_spec.rb +1 -1
  270. data/spec/models/spotlight/search_spec.rb +30 -3
  271. data/spec/models/spotlight/solr_document/atomic_updates_spec.rb +10 -0
  272. data/spec/models/spotlight/solr_document_sidecar_spec.rb +1 -0
  273. data/spec/presenters/spotlight/iiif_manifest_presenter_spec.rb +1 -1
  274. data/spec/services/spotlight/bulk_updates_csv_template_service_spec.rb +26 -0
  275. data/spec/services/spotlight/etl/context_spec.rb +66 -0
  276. data/spec/services/spotlight/etl/executor_spec.rb +149 -0
  277. data/spec/services/spotlight/etl/pipeline_spec.rb +22 -0
  278. data/spec/services/spotlight/etl/solr_loader_spec.rb +76 -0
  279. data/spec/services/spotlight/etl/step_spec.rb +70 -0
  280. data/spec/services/spotlight/exhibit_import_export_service_spec.rb +48 -1
  281. data/spec/spec_helper.rb +3 -6
  282. data/spec/support/features/test_features_helpers.rb +15 -0
  283. data/spec/test_app_templates/Gemfile.extra +2 -0
  284. data/spec/test_app_templates/catalog_controller.rb +6 -3
  285. data/spec/test_app_templates/lib/generators/test_app_generator.rb +2 -2
  286. data/spec/uploaders/spotlight/featured_image_uploader_spec.rb +2 -2
  287. data/spec/views/spotlight/browse/index.html.erb_spec.rb +2 -0
  288. data/spec/views/spotlight/catalog/_edit_default.html.erb_spec.rb +1 -1
  289. data/spec/views/spotlight/dashboards/_reindexing_activity.html.erb_spec.rb +24 -19
  290. data/spec/views/spotlight/job_trackers/show.html.erb_spec.rb +65 -0
  291. data/spec/views/spotlight/metadata_configurations/_metadata_field.html.erb_spec.rb +3 -4
  292. data/spec/views/spotlight/pages/show.html.erb_spec.rb +1 -0
  293. data/spec/views/spotlight/sir_trevor/blocks/_browse_block.html.erb_spec.rb +1 -1
  294. data/spec/views/spotlight/sir_trevor/blocks/_iframe_block.html.erb_spec.rb +1 -1
  295. data/spec/views/spotlight/sir_trevor/blocks/_link_to_search_block.html.erb_spec.rb +1 -1
  296. data/spec/views/spotlight/sir_trevor/blocks/_rule_block.html.erb_spec.rb +1 -1
  297. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb_spec.rb +8 -4
  298. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb_spec.rb +7 -2
  299. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_embed_block.html.erb_spec.rb +8 -5
  300. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb_spec.rb +3 -2
  301. data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb_spec.rb +9 -4
  302. data/spec/views/spotlight/tags/index.html.erb_spec.rb +5 -2
  303. data/vendor/assets/javascripts/tiny-slider.js +3218 -0
  304. data/vendor/assets/stylesheets/tiny-slider.css +1 -0
  305. metadata +472 -287
  306. data/app/assets/images/blacklight/add_circle.svg +0 -1
  307. data/app/assets/images/blacklight/custom_fullscreen.svg +0 -1
  308. data/app/assets/images/blacklight/remove_circle.svg +0 -1
  309. data/app/assets/images/blacklight/resize_small.svg +0 -1
  310. data/app/models/concerns/spotlight/resources/open_graph.rb +0 -36
  311. data/app/models/spotlight/reindex_progress.rb +0 -78
  312. data/app/models/spotlight/reindexing_log_entry.rb +0 -42
  313. data/app/services/spotlight/resources/iiif_builder.rb +0 -19
  314. data/app/services/spotlight/solr_document_builder.rb +0 -77
  315. data/app/services/spotlight/upload_solr_document_builder.rb +0 -57
  316. data/spec/factories/reindexing_log_entries.rb +0 -54
  317. data/spec/models/spotlight/reindex_progress_spec.rb +0 -122
  318. data/spec/models/spotlight/reindexing_log_entry_spec.rb +0 -129
  319. data/spec/models/spotlight/resources/open_graph_spec.rb +0 -65
  320. data/spec/services/spotlight/solr_document_builder_spec.rb +0 -66
  321. data/vendor/assets/javascripts/handlebars-v1.3.0.js +0 -2746
@@ -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>
@@ -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
@@ -227,6 +235,130 @@ 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
@@ -254,13 +386,14 @@ en:
254
386
  exhibit_visibility:
255
387
  label: Item visibility
256
388
  private: Private
389
+ public: Public
257
390
  fields:
258
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
@@ -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
@@ -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
@@ -500,6 +637,37 @@ en:
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
@@ -588,6 +756,7 @@ 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
@@ -691,6 +860,9 @@ en:
691
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,16 +872,31 @@ 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:
890
+ add_new_group: Add new group
891
+ cancel: Cancel
708
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.
899
+ save: Save
713
900
  title: Curation - browse
714
901
  search:
715
902
  item_count:
@@ -731,10 +918,19 @@ en:
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
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:
@@ -784,6 +978,8 @@ en:
784
978
  curated_features: Curated features
785
979
  home: Home
786
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}