blacklight-spotlight 2.6.1.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spotlight/admin/add_another.js +22 -0
  3. data/app/assets/javascripts/spotlight/{add_new_page_button.js → admin/add_new_page_button.js} +0 -0
  4. data/app/assets/javascripts/spotlight/{appearance.js → admin/appearance.js} +0 -0
  5. data/app/assets/javascripts/spotlight/{attachments.js → admin/attachments.js} +0 -0
  6. data/app/assets/javascripts/spotlight/{blacklight_configuration.js → admin/blacklight_configuration.js} +0 -0
  7. data/app/assets/javascripts/spotlight/{block_mixins → admin/block_mixins}/autocompleteable.js +0 -0
  8. data/app/assets/javascripts/spotlight/{block_mixins → admin/block_mixins}/formable.js +0 -0
  9. data/app/assets/javascripts/spotlight/{block_mixins → admin/block_mixins}/plustextable.js +0 -0
  10. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/block.js +0 -0
  11. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/browse_block.js +1 -1
  12. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/iframe_block.js +0 -0
  13. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/link_to_search_block.js +1 -1
  14. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/oembed_block.js +0 -0
  15. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/pages_block.js +1 -1
  16. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/resources_block.js +0 -0
  17. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/rule_block.js +0 -0
  18. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/search_result_block.js +3 -3
  19. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/solr_documents_base_block.js +3 -3
  20. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/solr_documents_block.js +1 -1
  21. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/solr_documents_carousel_block.js +1 -1
  22. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/solr_documents_embed_block.js +1 -1
  23. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/solr_documents_features_block.js +2 -2
  24. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/solr_documents_grid_block.js +1 -1
  25. data/app/assets/javascripts/spotlight/{blocks → admin/blocks}/uploaded_items_block.js +0 -0
  26. data/app/assets/javascripts/spotlight/{catalog_edit.js → admin/catalog_edit.js} +0 -0
  27. data/app/assets/javascripts/spotlight/{copy_email_addresses.js → admin/copy_email_addresses.js} +0 -0
  28. data/app/assets/javascripts/spotlight/{crop.es6 → admin/crop.es6} +5 -0
  29. data/app/assets/javascripts/spotlight/{croppable.js → admin/croppable.js} +1 -1
  30. data/app/assets/javascripts/spotlight/{edit_in_place.js → admin/edit_in_place.js} +0 -0
  31. data/app/assets/javascripts/spotlight/{exhibits.js → admin/exhibits.js} +0 -0
  32. data/app/assets/javascripts/spotlight/{form_observer.js → admin/form_observer.js} +0 -0
  33. data/app/assets/javascripts/spotlight/{iiif.es6 → admin/iiif.es6} +0 -0
  34. data/app/assets/javascripts/spotlight/admin/index.js +18 -0
  35. data/app/assets/javascripts/spotlight/{locks.js → admin/locks.js} +0 -0
  36. data/app/assets/javascripts/spotlight/{multi_image_selector.js → admin/multi_image_selector.js} +0 -0
  37. data/app/assets/javascripts/spotlight/{pages.js.erb → admin/pages.js.erb} +0 -2
  38. data/app/assets/javascripts/spotlight/{readonly_checkbox.js → admin/readonly_checkbox.js} +0 -0
  39. data/app/assets/javascripts/spotlight/{reindex_monitor.js → admin/reindex_monitor.js} +0 -0
  40. data/app/assets/javascripts/spotlight/{search_typeahead.js → admin/search_typeahead.js} +1 -1
  41. data/app/assets/javascripts/spotlight/{select_related_input.js → admin/select_related_input.js} +0 -0
  42. data/app/assets/javascripts/spotlight/{sir-trevor → admin/sir-trevor}/block_controls.js +0 -0
  43. data/app/assets/javascripts/spotlight/{sir-trevor → admin/sir-trevor}/block_limits.js +0 -0
  44. data/app/assets/javascripts/spotlight/{sir-trevor → admin/sir-trevor}/locales.js +0 -0
  45. data/app/assets/javascripts/spotlight/{spotlight_nestable.js → admin/spotlight_nestable.js} +0 -0
  46. data/app/assets/javascripts/spotlight/{tabs.js → admin/tabs.js} +0 -0
  47. data/app/assets/javascripts/spotlight/{translation_progress.js → admin/translation_progress.js} +0 -0
  48. data/app/assets/javascripts/spotlight/{users.js → admin/users.js} +0 -0
  49. data/app/assets/javascripts/spotlight/application.js +2 -22
  50. data/app/assets/javascripts/spotlight/{analytics.js → user/analytics.js} +0 -0
  51. data/app/assets/javascripts/spotlight/user/carousel.js +3 -0
  52. data/app/assets/javascripts/spotlight/{clear_form_button.js → user/clear_form_button.js} +0 -0
  53. data/app/assets/javascripts/spotlight/user/index.js +6 -0
  54. data/app/assets/javascripts/spotlight/{report_a_problem.js → user/report_a_problem.js} +0 -0
  55. data/app/assets/javascripts/spotlight/{zpr_links.js.erb → user/zpr_links.js.erb} +0 -0
  56. data/app/controllers/spotlight/catalog_controller.rb +1 -1
  57. data/app/controllers/spotlight/custom_fields_controller.rb +1 -1
  58. data/app/controllers/spotlight/pages_controller.rb +1 -1
  59. data/app/controllers/spotlight/resources/csv_upload_controller.rb +1 -1
  60. data/app/controllers/spotlight/resources/upload_controller.rb +17 -13
  61. data/app/controllers/spotlight/resources_controller.rb +5 -0
  62. data/app/controllers/spotlight/searches_controller.rb +0 -2
  63. data/app/controllers/spotlight/solr_controller.rb +18 -1
  64. data/app/helpers/spotlight/application_helper.rb +4 -1
  65. data/app/helpers/spotlight/pages_helper.rb +10 -0
  66. data/app/jobs/spotlight/add_uploads_from_csv.rb +1 -1
  67. data/app/jobs/spotlight/rename_sidecar_field_job.rb +21 -7
  68. data/app/models/concerns/spotlight/custom_translation_extension.rb +2 -0
  69. data/app/models/sir_trevor_rails/blocks/featured_pages_block.rb +10 -3
  70. data/app/models/spotlight/blacklight_configuration.rb +5 -3
  71. data/app/models/spotlight/custom_field.rb +20 -20
  72. data/app/models/spotlight/exhibit.rb +11 -1
  73. data/app/models/spotlight/page.rb +11 -4
  74. data/app/models/spotlight/page_content.rb +18 -0
  75. data/app/models/spotlight/page_content/sir_trevor.rb +17 -0
  76. data/app/models/spotlight/solr_document_sidecar.rb +3 -0
  77. data/app/presenters/spotlight/iiif_manifest_presenter.rb +2 -2
  78. data/app/serializers/spotlight/exhibit_export_serializer.rb +5 -1
  79. data/app/services/spotlight/solr_document_builder.rb +1 -1
  80. data/app/services/spotlight/upload_solr_document_builder.rb +10 -3
  81. data/app/values/custom_field_name.rb +6 -6
  82. data/app/views/spotlight/catalog/_edit_sidecar.html.erb +9 -14
  83. data/app/views/spotlight/custom_fields/_form.html.erb +7 -2
  84. data/app/views/spotlight/custom_fields/form_group/_text.html.erb +14 -0
  85. data/app/views/spotlight/custom_fields/form_group/_vocab.html.erb +14 -0
  86. data/app/views/spotlight/pages/_form.html.erb +1 -1
  87. data/app/views/spotlight/resources/new.html.erb +9 -3
  88. data/app/views/spotlight/resources/upload/_form.html.erb +3 -1
  89. data/config/i18n-tasks.yml +1 -0
  90. data/config/locales/spotlight.ar.yml +40 -0
  91. data/config/locales/spotlight.en.yml +5 -0
  92. data/config/locales/spotlight.fr.yml +40 -0
  93. data/db/migrate/20190807085432_add_content_type_to_pages.rb +5 -0
  94. data/db/migrate/20190813085432_add_is_multiple_to_custom_fields.rb +7 -0
  95. data/lib/spotlight/engine.rb +8 -1
  96. data/lib/spotlight/version.rb +1 -1
  97. data/spec/controllers/spotlight/catalog_controller_spec.rb +6 -0
  98. data/spec/controllers/spotlight/resources/csv_upload_controller_spec.rb +1 -1
  99. data/spec/controllers/spotlight/resources/upload_controller_spec.rb +9 -1
  100. data/spec/controllers/spotlight/solr_controller_spec.rb +16 -0
  101. data/spec/examples.txt +1335 -1319
  102. data/spec/factories/pages.rb +6 -0
  103. data/spec/features/add_custom_field_metadata_spec.rb +19 -1
  104. data/spec/features/add_items_spec.rb +19 -2
  105. data/spec/features/exhibits/custom_metadata_fields_spec.rb +23 -0
  106. data/spec/features/exhibits/translation_editing_spec.rb +8 -0
  107. data/spec/features/javascript/locale_selector_spec.rb +6 -0
  108. data/spec/fixtures/sample_solr_documents.yml +110 -110
  109. data/spec/helpers/spotlight/pages_helper_spec.rb +14 -0
  110. data/spec/jobs/spotlight/add_uploads_from_csv_spec.rb +4 -2
  111. data/spec/models/spotlight/blacklight_configuration_spec.rb +2 -2
  112. data/spec/models/spotlight/custom_field_spec.rb +8 -3
  113. data/spec/models/spotlight/custom_translation_extension_spec.rb +23 -0
  114. data/spec/models/spotlight/page_spec.rb +45 -0
  115. data/spec/services/spotlight/solr_document_builder_spec.rb +9 -0
  116. data/spec/spec_helper.rb +14 -16
  117. data/spec/test_app_templates/Gemfile.extra +0 -1
  118. metadata +80 -52
@@ -100,4 +100,18 @@ describe Spotlight::PagesHelper, type: :helper do
100
100
  expect(helper.sir_trevor_markdown(nil)).to be_blank
101
101
  end
102
102
  end
103
+
104
+ describe '#content_editor_class' do
105
+ context 'with a sir-trevor backed page' do
106
+ it 'has a custom class' do
107
+ expect(helper.content_editor_class(Spotlight::Page.new)).to eq 'js-st-instance'
108
+ end
109
+ end
110
+
111
+ context 'with a sir-trevor backed page' do
112
+ it 'derives a css class name from the editor type' do
113
+ expect(helper.content_editor_class(Spotlight::Page.new(content_type: 'Something::Custom'))).to eq 'js-something-custom-instance'
114
+ end
115
+ end
116
+ end
103
117
  end
@@ -7,7 +7,8 @@ describe Spotlight::AddUploadsFromCSV do
7
7
  let(:data) do
8
8
  [
9
9
  { 'url' => 'x' },
10
- { 'url' => 'y' }
10
+ { 'url' => 'y' },
11
+ { 'url' => '~' }
11
12
  ]
12
13
  end
13
14
 
@@ -29,10 +30,11 @@ describe Spotlight::AddUploadsFromCSV do
29
30
 
30
31
  it 'creates uploaded resources for each row of data' do
31
32
  upload = FactoryBot.create(:uploaded_resource)
32
- expect(Spotlight::Resources::Upload).to receive(:new).at_least(:once).and_return(upload)
33
+ expect(Spotlight::Resources::Upload).to receive(:new).exactly(3).times.and_return(upload)
33
34
 
34
35
  expect(upload).to receive(:build_upload).with(remote_image_url: 'x').and_call_original
35
36
  expect(upload).to receive(:build_upload).with(remote_image_url: 'y').and_call_original
37
+ expect(upload).not_to receive(:build_upload).with(remote_image_url: '~')
36
38
  expect(upload).to receive(:save_and_index).at_least(:once)
37
39
 
38
40
  job.perform_now
@@ -96,7 +96,7 @@ describe Spotlight::BlacklightConfiguration, type: :model do
96
96
 
97
97
  it 'defaults to not showing a custom field in the facets' do
98
98
  field = double('field', new_record?: false, field: 'a', solr_field: 'a', configuration: {})
99
- custom_fields = double('custom_fields', vocab: [field], reject: [])
99
+ custom_fields = double('custom_fields', facetable: [field], reject: [])
100
100
  allow(custom_fields).to receive(:map).and_yield(field)
101
101
  allow(subject.exhibit).to receive(:custom_fields).and_return(custom_fields)
102
102
  subject.facet_fields = { 'a' => { enabled: '1', label: 'Label' } }
@@ -523,7 +523,7 @@ describe Spotlight::BlacklightConfiguration, type: :model do
523
523
 
524
524
  describe '#custom_facet_fields' do
525
525
  it 'converts exhibit-specific fields to Blacklight configurations' do
526
- allow(subject.exhibit).to receive_message_chain(:custom_fields, vocab: [
526
+ allow(subject.exhibit).to receive_message_chain(:custom_fields, facetable: [
527
527
  stub_model(Spotlight::CustomField, field: 'abc', configuration: { a: 1 }, exhibit: subject.exhibit),
528
528
  stub_model(Spotlight::CustomField, field: 'xyz', configuration: { x: 2 }, exhibit: subject.exhibit)
529
529
  ])
@@ -67,13 +67,13 @@ describe Spotlight::CustomField, type: :model do
67
67
  it 'ends in the text suffix if it is a text field' do
68
68
  subject.field_type = 'text'
69
69
  subject.save
70
- expect(subject.field).to end_with Spotlight::Engine.config.solr_fields.text_suffix
70
+ expect(subject.field).to end_with '_tesim'
71
71
  end
72
72
 
73
73
  it 'ends in a string suffix if it is a vocab field' do
74
74
  subject.field_type = 'vocab'
75
75
  subject.save
76
- expect(subject.field).to end_with Spotlight::Engine.config.solr_fields.string_suffix
76
+ expect(subject.field).to end_with '_ssim'
77
77
  end
78
78
 
79
79
  it 'begins with readonly if it is readonly' do
@@ -182,7 +182,12 @@ describe Spotlight::CustomField, type: :model do
182
182
  end
183
183
 
184
184
  it 'queues a job to reindex any documents with data in the old field' do
185
- expect(Spotlight::RenameSidecarFieldJob).to receive(:perform_later).with(exhibit, subject.field, subject.field.sub('tesim', 'ssim'))
185
+ expect(Spotlight::RenameSidecarFieldJob).to receive(:perform_later).with(
186
+ exhibit,
187
+ subject.field, subject.field.sub('tesim', 'ssim'),
188
+ subject.slug, subject.slug
189
+ )
190
+
186
191
  subject.field_type = 'vocab'
187
192
  subject.save
188
193
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Spotlight::CustomTranslationExtension do
4
+ let(:exhibit) { FactoryBot.create(:exhibit) }
5
+ subject do
6
+ Class.new(ActiveRecord::Base) do
7
+ include Spotlight::CustomTranslationExtension
8
+ end
9
+ end
10
+
11
+ describe '.current_exhibit' do
12
+ it 'sets the current exhibit' do
13
+ subject.current_exhibit = exhibit
14
+ expect(subject.current_exhibit).to eq exhibit
15
+ end
16
+
17
+ it 'reloads the i18n' do
18
+ allow(I18n.backend).to receive(:reload!)
19
+
20
+ subject.current_exhibit = exhibit
21
+ end
22
+ end
23
+ end
@@ -65,6 +65,28 @@ describe Spotlight::Page, type: :model do
65
65
  page.content = []
66
66
  expect(page.content).to be_a_kind_of SirTrevorRails::BlockArray
67
67
  end
68
+
69
+ context 'with an alternate page content type' do
70
+ let(:page) { FactoryBot.create(:feature_page, content_type: 'Static') }
71
+ let(:fake_class) do
72
+ Class.new do
73
+ def self.parse(*_args)
74
+ 'xyz'
75
+ end
76
+ end
77
+ end
78
+
79
+ before do
80
+ # needed so we don't accidentally stub Spotlight::PageContent below
81
+ require 'spotlight/page_content'
82
+ stub_const('Spotlight::PageContent::Static', fake_class)
83
+ end
84
+
85
+ it 'works' do
86
+ page.content = [].to_json
87
+ expect(page.content).to eq 'xyz'
88
+ end
89
+ end
68
90
  end
69
91
 
70
92
  describe '#content?' do
@@ -81,6 +103,19 @@ describe Spotlight::Page, type: :model do
81
103
  end
82
104
  end
83
105
 
106
+ describe '#content_type' do
107
+ let(:page) { FactoryBot.create(:feature_page) }
108
+
109
+ it 'can be set as an attribute' do
110
+ page.content_type = 'Xyz'
111
+ expect(page.content_type).to eq 'Xyz'
112
+ end
113
+
114
+ it 'defauts to SirTrevor' do
115
+ expect(page.content_type).to eq 'SirTrevor'
116
+ end
117
+ end
118
+
84
119
  describe '#slug' do
85
120
  let(:page) { FactoryBot.create(:feature_page) }
86
121
 
@@ -172,6 +207,16 @@ describe Spotlight::Page, type: :model do
172
207
  end
173
208
  end
174
209
 
210
+ context 'when cloning a page that has been deleted with a FriendlyId UUID added' do
211
+ let(:feature_page_static_title) { FactoryBot.create(:feature_page_static_title, exhibit: exhibit) }
212
+ let(:feature_page_static_title_two) { FactoryBot.create(:feature_page_static_title, exhibit: exhibit) }
213
+ it 'translated page has the same UUID' do
214
+ expect(feature_page_static_title.slug).to eq 'featurepage'
215
+ expect(feature_page_static_title_two.slug).not_to eq feature_page_static_title.slug
216
+ expect(feature_page_static_title_two.clone_for_locale('es').slug).to eq feature_page_static_title_two.slug
217
+ end
218
+ end
219
+
175
220
  context 'when cloning a parent page whose children pages have already been cloned' do
176
221
  let(:parent_page_es) { parent_page.clone_for_locale('es') }
177
222
  let(:child_page_es) { child_page.clone_for_locale('es') }
@@ -51,6 +51,15 @@ describe Spotlight::SolrDocumentBuilder do
51
51
  expect(sidecar.exhibit).to eq resource.exhibit
52
52
  expect(sidecar.resource).to eq resource
53
53
  end
54
+
55
+ context 'without a persisted resource' do
56
+ let(:resource) { FactoryBot.build(:resource) }
57
+
58
+ it 'does not implicitly persist the resource' do
59
+ resource.document_builder.documents_to_index.first
60
+ expect(resource).not_to be_persisted
61
+ end
62
+ end
54
63
  end
55
64
  end
56
65
  end
@@ -15,26 +15,26 @@ require 'rspec/rails'
15
15
  require 'rspec/active_model/mocks'
16
16
  require 'paper_trail/frameworks/rspec'
17
17
 
18
- require 'chromedriver-helper'
19
18
  require 'selenium-webdriver'
19
+ require 'webdrivers'
20
20
  require 'webmock/rspec'
21
21
 
22
22
  Capybara.javascript_driver = :headless_chrome
23
23
 
24
- # @note In January 2018, TravisCI disabled Chrome sandboxing in its Linux
25
- # container build environments to mitigate Meltdown/Spectre
26
- # vulnerabilities, at which point Spotlight needs to use the --no-sandbox
27
- # flag. https://github.com/travis-ci/docs-travis-ci-com/blob/c1da4af0b7ee5de35fa4490fa8e0fc4b44881089/user/chrome.md
28
- # h/t @mjgiarlo
29
24
  Capybara.register_driver :headless_chrome do |app|
30
- capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
31
- chromeOptions: { args: %w[headless disable-gpu no-sandbox window-size=1280,1696] }
32
- )
33
-
34
- Capybara::Selenium::Driver.new(app,
35
- browser: :chrome,
36
- desired_capabilities: capabilities)
25
+ Capybara::Selenium::Driver.load_selenium
26
+ browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
27
+ opts.args << '--headless'
28
+ opts.args << '--disable-gpu'
29
+ opts.args << '--no-sandbox'
30
+ opts.args << '--window-size=1280,1696'
31
+ end
32
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
37
33
  end
34
+ require 'webmock/rspec'
35
+ allowed_sites = ['chromedriver.storage.googleapis.com']
36
+
37
+ WebMock.disable_net_connect!(allow_localhost: true, allow: allowed_sites)
38
38
 
39
39
  if ENV['COVERAGE'] || ENV['CI']
40
40
  require 'simplecov'
@@ -61,9 +61,7 @@ RSpec.configure do |config|
61
61
  config.filter_rails_from_backtrace!
62
62
 
63
63
  config.use_transactional_fixtures = true
64
- config.before :all do
65
- WebMock.disable_net_connect!(allow_localhost: true)
66
- end
64
+
67
65
  config.before :each do
68
66
  # The first user is automatically granted admin privileges; we don't want that behavior for many of our tests
69
67
  Spotlight::Engine.user_class.create email: 'initial+admin@example.com', password: 'password', password_confirmation: 'password'
@@ -1,2 +1 @@
1
1
  gem 'thor', '~> 0.20'
2
- gem 'i18n', '< 1.1' # pinned until Rails and i18n sort our compatibility https://github.com/rails/rails/pull/33574
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blacklight-spotlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-05-21 00:00:00.000000000 Z
14
+ date: 2019-10-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -509,6 +509,20 @@ dependencies:
509
509
  - - ">="
510
510
  - !ruby/object:Gem::Version
511
511
  version: '0'
512
+ - !ruby/object:Gem::Dependency
513
+ name: i18n
514
+ requirement: !ruby/object:Gem::Requirement
515
+ requirements:
516
+ - - ">="
517
+ - !ruby/object:Gem::Version
518
+ version: '0'
519
+ type: :runtime
520
+ prerelease: false
521
+ version_requirements: !ruby/object:Gem::Requirement
522
+ requirements:
523
+ - - ">="
524
+ - !ruby/object:Gem::Version
525
+ version: '0'
512
526
  - !ruby/object:Gem::Dependency
513
527
  name: sqlite3
514
528
  requirement: !ruby/object:Gem::Requirement
@@ -636,7 +650,7 @@ dependencies:
636
650
  - !ruby/object:Gem::Version
637
651
  version: '1.25'
638
652
  - !ruby/object:Gem::Dependency
639
- name: chromedriver-helper
653
+ name: webdrivers
640
654
  requirement: !ruby/object:Gem::Requirement
641
655
  requirements:
642
656
  - - ">="
@@ -775,57 +789,61 @@ files:
775
789
  - app/assets/images/spotlight/default_browse_thumbnail.jpg
776
790
  - app/assets/images/spotlight/default_thumbnail.jpg
777
791
  - app/assets/images/spotlight/fallback/default.png
778
- - app/assets/javascripts/spotlight/add_new_page_button.js
779
- - app/assets/javascripts/spotlight/analytics.js
780
- - app/assets/javascripts/spotlight/appearance.js
792
+ - app/assets/javascripts/spotlight/admin/add_another.js
793
+ - app/assets/javascripts/spotlight/admin/add_new_page_button.js
794
+ - app/assets/javascripts/spotlight/admin/appearance.js
795
+ - app/assets/javascripts/spotlight/admin/attachments.js
796
+ - app/assets/javascripts/spotlight/admin/blacklight_configuration.js
797
+ - app/assets/javascripts/spotlight/admin/block_mixins/autocompleteable.js
798
+ - app/assets/javascripts/spotlight/admin/block_mixins/formable.js
799
+ - app/assets/javascripts/spotlight/admin/block_mixins/plustextable.js
800
+ - app/assets/javascripts/spotlight/admin/blocks/block.js
801
+ - app/assets/javascripts/spotlight/admin/blocks/browse_block.js
802
+ - app/assets/javascripts/spotlight/admin/blocks/iframe_block.js
803
+ - app/assets/javascripts/spotlight/admin/blocks/link_to_search_block.js
804
+ - app/assets/javascripts/spotlight/admin/blocks/oembed_block.js
805
+ - app/assets/javascripts/spotlight/admin/blocks/pages_block.js
806
+ - app/assets/javascripts/spotlight/admin/blocks/resources_block.js
807
+ - app/assets/javascripts/spotlight/admin/blocks/rule_block.js
808
+ - app/assets/javascripts/spotlight/admin/blocks/search_result_block.js
809
+ - app/assets/javascripts/spotlight/admin/blocks/solr_documents_base_block.js
810
+ - app/assets/javascripts/spotlight/admin/blocks/solr_documents_block.js
811
+ - app/assets/javascripts/spotlight/admin/blocks/solr_documents_carousel_block.js
812
+ - app/assets/javascripts/spotlight/admin/blocks/solr_documents_embed_block.js
813
+ - app/assets/javascripts/spotlight/admin/blocks/solr_documents_features_block.js
814
+ - app/assets/javascripts/spotlight/admin/blocks/solr_documents_grid_block.js
815
+ - app/assets/javascripts/spotlight/admin/blocks/uploaded_items_block.js
816
+ - app/assets/javascripts/spotlight/admin/catalog_edit.js
817
+ - app/assets/javascripts/spotlight/admin/copy_email_addresses.js
818
+ - app/assets/javascripts/spotlight/admin/crop.es6
819
+ - app/assets/javascripts/spotlight/admin/croppable.js
820
+ - app/assets/javascripts/spotlight/admin/edit_in_place.js
821
+ - app/assets/javascripts/spotlight/admin/exhibits.js
822
+ - app/assets/javascripts/spotlight/admin/form_observer.js
823
+ - app/assets/javascripts/spotlight/admin/iiif.es6
824
+ - app/assets/javascripts/spotlight/admin/index.js
825
+ - app/assets/javascripts/spotlight/admin/locks.js
826
+ - app/assets/javascripts/spotlight/admin/multi_image_selector.js
827
+ - app/assets/javascripts/spotlight/admin/pages.js.erb
828
+ - app/assets/javascripts/spotlight/admin/readonly_checkbox.js
829
+ - app/assets/javascripts/spotlight/admin/reindex_monitor.js
830
+ - app/assets/javascripts/spotlight/admin/search_typeahead.js
831
+ - app/assets/javascripts/spotlight/admin/select_related_input.js
832
+ - app/assets/javascripts/spotlight/admin/sir-trevor/block_controls.js
833
+ - app/assets/javascripts/spotlight/admin/sir-trevor/block_limits.js
834
+ - app/assets/javascripts/spotlight/admin/sir-trevor/locales.js
835
+ - app/assets/javascripts/spotlight/admin/spotlight_nestable.js
836
+ - app/assets/javascripts/spotlight/admin/tabs.js
837
+ - app/assets/javascripts/spotlight/admin/translation_progress.js
838
+ - app/assets/javascripts/spotlight/admin/users.js
781
839
  - app/assets/javascripts/spotlight/application.js
782
- - app/assets/javascripts/spotlight/attachments.js
783
- - app/assets/javascripts/spotlight/blacklight_configuration.js
784
- - app/assets/javascripts/spotlight/block_mixins/autocompleteable.js
785
- - app/assets/javascripts/spotlight/block_mixins/formable.js
786
- - app/assets/javascripts/spotlight/block_mixins/plustextable.js
787
- - app/assets/javascripts/spotlight/blocks/block.js
788
- - app/assets/javascripts/spotlight/blocks/browse_block.js
789
- - app/assets/javascripts/spotlight/blocks/iframe_block.js
790
- - app/assets/javascripts/spotlight/blocks/link_to_search_block.js
791
- - app/assets/javascripts/spotlight/blocks/oembed_block.js
792
- - app/assets/javascripts/spotlight/blocks/pages_block.js
793
- - app/assets/javascripts/spotlight/blocks/resources_block.js
794
- - app/assets/javascripts/spotlight/blocks/rule_block.js
795
- - app/assets/javascripts/spotlight/blocks/search_result_block.js
796
- - app/assets/javascripts/spotlight/blocks/solr_documents_base_block.js
797
- - app/assets/javascripts/spotlight/blocks/solr_documents_block.js
798
- - app/assets/javascripts/spotlight/blocks/solr_documents_carousel_block.js
799
- - app/assets/javascripts/spotlight/blocks/solr_documents_embed_block.js
800
- - app/assets/javascripts/spotlight/blocks/solr_documents_features_block.js
801
- - app/assets/javascripts/spotlight/blocks/solr_documents_grid_block.js
802
- - app/assets/javascripts/spotlight/blocks/uploaded_items_block.js
803
- - app/assets/javascripts/spotlight/catalog_edit.js
804
- - app/assets/javascripts/spotlight/clear_form_button.js
805
- - app/assets/javascripts/spotlight/copy_email_addresses.js
806
- - app/assets/javascripts/spotlight/crop.es6
807
- - app/assets/javascripts/spotlight/croppable.js
808
- - app/assets/javascripts/spotlight/edit_in_place.js
809
- - app/assets/javascripts/spotlight/exhibits.js
810
- - app/assets/javascripts/spotlight/form_observer.js
811
- - app/assets/javascripts/spotlight/iiif.es6
812
- - app/assets/javascripts/spotlight/locks.js
813
- - app/assets/javascripts/spotlight/multi_image_selector.js
814
- - app/assets/javascripts/spotlight/pages.js.erb
815
- - app/assets/javascripts/spotlight/readonly_checkbox.js
816
- - app/assets/javascripts/spotlight/reindex_monitor.js
817
- - app/assets/javascripts/spotlight/report_a_problem.js
818
- - app/assets/javascripts/spotlight/search_typeahead.js
819
- - app/assets/javascripts/spotlight/select_related_input.js
820
- - app/assets/javascripts/spotlight/sir-trevor/block_controls.js
821
- - app/assets/javascripts/spotlight/sir-trevor/block_limits.js
822
- - app/assets/javascripts/spotlight/sir-trevor/locales.js
823
840
  - app/assets/javascripts/spotlight/spotlight.js
824
- - app/assets/javascripts/spotlight/spotlight_nestable.js
825
- - app/assets/javascripts/spotlight/tabs.js
826
- - app/assets/javascripts/spotlight/translation_progress.js
827
- - app/assets/javascripts/spotlight/users.js
828
- - app/assets/javascripts/spotlight/zpr_links.js.erb
841
+ - app/assets/javascripts/spotlight/user/analytics.js
842
+ - app/assets/javascripts/spotlight/user/carousel.js
843
+ - app/assets/javascripts/spotlight/user/clear_form_button.js
844
+ - app/assets/javascripts/spotlight/user/index.js
845
+ - app/assets/javascripts/spotlight/user/report_a_problem.js
846
+ - app/assets/javascripts/spotlight/user/zpr_links.js.erb
829
847
  - app/assets/stylesheets/spotlight/_attachments.css
830
848
  - app/assets/stylesheets/spotlight/_blacklight_configuration.scss
831
849
  - app/assets/stylesheets/spotlight/_blacklight_overrides.scss
@@ -976,6 +994,8 @@ files:
976
994
  - app/models/spotlight/masthead.rb
977
995
  - app/models/spotlight/page.rb
978
996
  - app/models/spotlight/page_configurations.rb
997
+ - app/models/spotlight/page_content.rb
998
+ - app/models/spotlight/page_content/sir_trevor.rb
979
999
  - app/models/spotlight/reindex_progress.rb
980
1000
  - app/models/spotlight/reindexing_log_entry.rb
981
1001
  - app/models/spotlight/resource.rb
@@ -1065,6 +1085,8 @@ files:
1065
1085
  - app/views/spotlight/contacts/new.html.erb
1066
1086
  - app/views/spotlight/custom_fields/_form.html.erb
1067
1087
  - app/views/spotlight/custom_fields/edit.html.erb
1088
+ - app/views/spotlight/custom_fields/form_group/_text.html.erb
1089
+ - app/views/spotlight/custom_fields/form_group/_vocab.html.erb
1068
1090
  - app/views/spotlight/custom_fields/new.html.erb
1069
1091
  - app/views/spotlight/dashboards/_analytics.html.erb
1070
1092
  - app/views/spotlight/dashboards/_page.html.erb
@@ -1183,7 +1205,9 @@ files:
1183
1205
  - app/views/spotlight/translations/edit.html.erb
1184
1206
  - config/i18n-tasks.yml
1185
1207
  - config/locales/devise.en.yml
1208
+ - config/locales/spotlight.ar.yml
1186
1209
  - config/locales/spotlight.en.yml
1210
+ - config/locales/spotlight.fr.yml
1187
1211
  - config/locales/spotlight.it.yml
1188
1212
  - config/locales/spotlight.zh.yml
1189
1213
  - config/routes.rb
@@ -1250,6 +1274,8 @@ files:
1250
1274
  - db/migrate/20180529225807_change_spotlight_pages_content_column_to_medium_text.rb
1251
1275
  - db/migrate/20180822233601_change_type_of_taggings_taggable.rb
1252
1276
  - db/migrate/20181127085432_change_weight_on_pages.rb
1277
+ - db/migrate/20190807085432_add_content_type_to_pages.rb
1278
+ - db/migrate/20190813085432_add_is_multiple_to_custom_fields.rb
1253
1279
  - lib/blacklight/spotlight.rb
1254
1280
  - lib/generators/spotlight/install_generator.rb
1255
1281
  - lib/generators/spotlight/scaffold_resource_generator.rb
@@ -1423,6 +1449,7 @@ files:
1423
1449
  - spec/models/spotlight/contact_image_spec.rb
1424
1450
  - spec/models/spotlight/contact_spec.rb
1425
1451
  - spec/models/spotlight/custom_field_spec.rb
1452
+ - spec/models/spotlight/custom_translation_extension_spec.rb
1426
1453
  - spec/models/spotlight/exhibit_spec.rb
1427
1454
  - spec/models/spotlight/exhibit_thumbnail_spec.rb
1428
1455
  - spec/models/spotlight/feature_page_spec.rb
@@ -1662,6 +1689,7 @@ test_files:
1662
1689
  - spec/models/spotlight/exhibit_spec.rb
1663
1690
  - spec/models/spotlight/featured_image_spec.rb
1664
1691
  - spec/models/spotlight/ability_spec.rb
1692
+ - spec/models/spotlight/custom_translation_extension_spec.rb
1665
1693
  - spec/models/spotlight/site_spec.rb
1666
1694
  - spec/models/spotlight/solr_document_sidecar_spec.rb
1667
1695
  - spec/models/spotlight/search_spec.rb