blacklight-spotlight 0.17.1 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -7
  3. data/Rakefile +22 -36
  4. data/app/assets/javascripts/spotlight/blocks/solr_documents_block.js +1 -1
  5. data/app/assets/javascripts/spotlight/search_typeahead.js +1 -1
  6. data/app/assets/javascripts/spotlight/spotlight.js +3 -9
  7. data/app/assets/stylesheets/spotlight/_footer.scss +2 -19
  8. data/app/controllers/concerns/spotlight/base.rb +2 -2
  9. data/app/controllers/concerns/spotlight/catalog.rb +7 -5
  10. data/app/controllers/concerns/spotlight/controller.rb +4 -4
  11. data/app/controllers/spotlight/application_controller.rb +2 -0
  12. data/app/controllers/spotlight/browse_controller.rb +1 -2
  13. data/app/controllers/spotlight/catalog_controller.rb +8 -8
  14. data/app/controllers/spotlight/concerns/application_controller.rb +59 -0
  15. data/app/controllers/spotlight/dashboards_controller.rb +1 -2
  16. data/app/controllers/spotlight/home_pages_controller.rb +1 -1
  17. data/app/controllers/spotlight/pages_controller.rb +1 -2
  18. data/app/controllers/spotlight/resources/upload_controller.rb +3 -3
  19. data/app/controllers/spotlight/resources_controller.rb +3 -3
  20. data/app/controllers/spotlight/searches_controller.rb +1 -1
  21. data/app/helpers/spotlight/application_helper.rb +3 -7
  22. data/app/helpers/spotlight/main_app_helpers.rb +10 -29
  23. data/app/helpers/spotlight/pages_helper.rb +1 -1
  24. data/app/jobs/spotlight/reindex_job.rb +2 -3
  25. data/app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb +34 -0
  26. data/app/models/concerns/spotlight/exhibit_documents.rb +2 -3
  27. data/app/models/concerns/spotlight/sitemap.rb +1 -1
  28. data/app/models/concerns/spotlight/solr_document/uploaded_resource.rb +1 -2
  29. data/app/models/sir_trevor_rails/blocks/browse_block.rb +7 -1
  30. data/app/models/sir_trevor_rails/blocks/textable.rb +2 -1
  31. data/app/models/spotlight/ability.rb +2 -1
  32. data/app/models/spotlight/contact_form.rb +1 -1
  33. data/app/models/spotlight/custom_field.rb +7 -15
  34. data/app/models/spotlight/field_metadata.rb +1 -1
  35. data/app/models/spotlight/resource.rb +2 -1
  36. data/app/models/spotlight/search.rb +1 -1
  37. data/app/values/custom_field_name.rb +36 -0
  38. data/app/views/blacklight/nav/_saved_searches.html.erb +1 -1
  39. data/app/views/blacklight/nav/_search_history.html.erb +1 -1
  40. data/app/views/catalog/_save_search.html.erb +1 -1
  41. data/app/views/catalog/_search_form.html.erb +1 -1
  42. data/app/views/layouts/spotlight/spotlight.html.erb +1 -1
  43. data/app/views/shared/_site_sidebar.html.erb +2 -2
  44. data/app/views/spotlight/about_pages/_empty.html.erb +1 -1
  45. data/app/views/spotlight/appearances/edit.html.erb +1 -1
  46. data/app/views/spotlight/catalog/_document_visibility_control.html.erb +1 -1
  47. data/app/views/spotlight/catalog/_edit_default.html.erb +4 -4
  48. data/app/views/spotlight/dashboards/analytics.html.erb +1 -1
  49. data/app/views/spotlight/exhibits/_missing_exhibits.html.erb +1 -1
  50. data/app/views/spotlight/feature_pages/_empty.html.erb +1 -1
  51. data/app/views/spotlight/home_pages/_empty.html.erb +2 -2
  52. data/app/views/spotlight/pages/_form.html.erb +1 -1
  53. data/app/views/spotlight/pages/_order_pages.html.erb +1 -1
  54. data/app/views/spotlight/resources/_missing_external_resources_partials.html.erb +1 -1
  55. data/app/views/spotlight/searches/_form.html.erb +1 -1
  56. data/app/views/spotlight/shared/_curation_sidebar.html.erb +2 -2
  57. data/config/locales/spotlight.en.yml +3 -3
  58. data/config/routes.rb +13 -9
  59. data/db/migrate/20160329215014_add_readonly_to_custom_fields.rb +5 -0
  60. data/lib/generators/spotlight/install_generator.rb +4 -4
  61. data/lib/spotlight/engine.rb +6 -1
  62. data/lib/spotlight/version.rb +1 -1
  63. data/spec/controllers/spotlight/about_pages_controller_spec.rb +4 -4
  64. data/spec/controllers/spotlight/application_controller_spec.rb +1 -1
  65. data/spec/controllers/spotlight/browse_controller_spec.rb +0 -2
  66. data/spec/controllers/spotlight/catalog_controller_spec.rb +103 -17
  67. data/spec/controllers/spotlight/dashboards_controller_spec.rb +1 -1
  68. data/spec/controllers/spotlight/feature_pages_controller_spec.rb +0 -2
  69. data/spec/controllers/spotlight/home_pages_controller_spec.rb +0 -2
  70. data/spec/controllers/spotlight/resources/upload_controller_spec.rb +1 -1
  71. data/spec/controllers/spotlight/resources_controller_spec.rb +1 -1
  72. data/spec/controllers/spotlight/search_configurations_controller_spec.rb +1 -1
  73. data/spec/features/add_custom_field_metadata_spec.rb +16 -3
  74. data/spec/features/catalog_spec.rb +2 -2
  75. data/spec/features/edit_search_fields_spec.rb +1 -1
  76. data/spec/features/exhibits/add_tags_spec.rb +2 -2
  77. data/spec/features/item_admin_spec.rb +5 -5
  78. data/spec/features/javascript/reindex_monitor_spec.rb +1 -1
  79. data/spec/features/javascript/search_context_spec.rb +4 -2
  80. data/spec/features/report_a_problem_spec.rb +2 -2
  81. data/spec/features/slideshow_spec.rb +1 -1
  82. data/spec/fixtures/sample_solr_documents.yml +44 -44
  83. data/spec/helpers/spotlight/application_helper_spec.rb +2 -23
  84. data/spec/helpers/spotlight/main_app_helpers_spec.rb +4 -62
  85. data/spec/helpers/spotlight/pages_helper_spec.rb +1 -2
  86. data/spec/models/sir_trevor_rails/blocks/browse_block_spec.rb +22 -0
  87. data/spec/{lib/spotlight/catalog/access_controls_enforcement_spec.rb → models/spotlight/access_controls_enforcement_search_builder_spec.rb} +5 -18
  88. data/spec/models/spotlight/contact_form_spec.rb +35 -0
  89. data/spec/models/spotlight/custom_field_spec.rb +6 -0
  90. data/spec/models/spotlight/exhibit_spec.rb +3 -2
  91. data/spec/models/spotlight/search_spec.rb +2 -2
  92. data/spec/spec_helper.rb +7 -0
  93. data/spec/support/helpers/controller_level_helpers.rb +13 -0
  94. data/spec/test_app_templates/catalog_controller.rb +1 -0
  95. data/spec/test_app_templates/lib/generators/test_app_generator.rb +9 -1
  96. data/spec/views/shared/_footer.html.erb_spec.rb +3 -3
  97. data/spec/views/spotlight/about_pages/index.html.erb_spec.rb +7 -11
  98. data/spec/views/spotlight/catalog/admin.html.erb_spec.rb +3 -1
  99. data/spec/views/spotlight/home_pages/_empty.html.erb_spec.rb +1 -1
  100. data/spec/views/spotlight/metadata_configurations/_metadata_field.html.erb_spec.rb +2 -1
  101. data/spec/views/spotlight/metadata_configurations/edit.html.erb_spec.rb +2 -1
  102. data/spec/views/spotlight/pages/index.html.erb_spec.rb +2 -4
  103. data/spec/views/spotlight/pages/show.html.erb_spec.rb +1 -2
  104. data/spec/views/spotlight/search_configurations/_sort.html.erb_spec.rb +2 -1
  105. data/spec/views/spotlight/searches/_search.html.erb_spec.rb +1 -1
  106. data/spec/views/spotlight/searches/edit.html.erb_spec.rb +1 -1
  107. metadata +30 -25
  108. data/app/controllers/concerns/spotlight/catalog/access_controls_enforcement.rb +0 -47
  109. data/config/jetty.yml +0 -6
  110. data/spec/test_app_templates/Gemfile.extra +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0e7cf4f1e70ba9c0eceafb312f984eaaec2f196
4
- data.tar.gz: 0d312a6be60fefc15e1a01d6c46629b01368c643
3
+ metadata.gz: 6bff0876109f9e68d8dcadddb01e465330d67d25
4
+ data.tar.gz: 9f7f3daa3104c882c01e8edc24731d8e5fd9401f
5
5
  SHA512:
6
- metadata.gz: ce5ec4536695fe29b7f2dc34dc346c71dfd1f84552a3b1e02fc06bb54af26ab0b4ab1d54591a1bffeb56f5d0d03092e6c841fdaa1e821731c88fd763bf5e7d1b
7
- data.tar.gz: d12bb30e5e9757d7189ac856dec1e59e570adfb3f673dc48f42218d4f8277048d1e4759ad5971db2578f465e883130ac30d9339d1b688100d897d64c8b70d047
6
+ metadata.gz: f27a7aab2b68144eeecd58b51b98fbaf9d78bafb38a780eecdf5a7efe74c3aefe299e4e05f4da8f5fd0251d2422bf8a45e43b6c83b7379768280e6aa0edb72d5
7
+ data.tar.gz: 85db41321a6ba7e8baaa8db613bb149d88b6afaf9689bbb27c2c7538dba062e79d66a86902b6b8f9dfe0e2a519c9ad79e67a72ecb4009b454507027b288219c9
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  spotlight
2
2
  =========
3
3
 
4
- [![Build Status](https://travis-ci.org/sul-dlss/spotlight.png?branch=master)](https://travis-ci.org/sul-dlss/spotlight) | [![Coverage Status](https://coveralls.io/repos/sul-dlss/spotlight/badge.png?branch=master)](https://coveralls.io/r/sul-dlss/spotlight) | [![Gem Version](https://badge.fury.io/rb/blacklight-spotlight.png)](http://badge.fury.io/rb/blacklight-spotlight) | [Release Notes](https://github.com/sul-dlss/spotlight/releases) | [Design Documents](https://github.com/sul-dlss/spotlight/releases/tag/v0.0.0)
4
+ [![Build Status](https://travis-ci.org/projectblacklight/spotlight.png?branch=master)](https://travis-ci.org/projectblacklight/spotlight) | [![Coverage Status](https://coveralls.io/repos/projectblacklight/spotlight/badge.png?branch=master)](https://coveralls.io/r/projectblacklight/spotlight) | [![Gem Version](https://badge.fury.io/rb/blacklight-spotlight.png)](http://badge.fury.io/rb/blacklight-spotlight) | [Release Notes](https://github.com/projectblacklight/spotlight/releases) | [Design Documents](https://github.com/projectblacklight/spotlight/releases/tag/v0.0.0)
5
5
 
6
6
  Spotlight is open source software that enables librarians, curators, and other content experts to easily build feature-rich websites that showcase collections and objects from a digital repository, uploaded items, or a combination of the two. Spotlight is a plug-in for [Blacklight](https://github.com/projectblacklight/blacklight), an open source, Ruby on Rails Engine that provides a basic discovery interface for searching an Apache Solr index.
7
7
 
8
- Read more about what Spotlight is, our motivations for creating it, and how to install and configure it in the [wiki pages](https://github.com/sul-dlss/spotlight/wiki). You might also want to take a look at our demo videos, especially the [tour of a completed Spotlight exhibit](https://www.youtube.com/watch?v=_A7vTbbiF4g) and the walkthrough of [building an exhibit with Spotlight](https://www.youtube.com/watch?v=qPJtgajJ4ic).
8
+ Read more about what Spotlight is, our motivations for creating it, and how to install and configure it in the [wiki pages](https://github.com/projectblacklight/spotlight/wiki). You might also want to take a look at our demo videos, especially the [tour of a completed Spotlight exhibit](https://www.youtube.com/watch?v=_A7vTbbiF4g) and the walkthrough of [building an exhibit with Spotlight](https://www.youtube.com/watch?v=qPJtgajJ4ic).
9
9
 
10
10
  ## Requirements
11
11
 
@@ -19,13 +19,13 @@ Read more about what Spotlight is, our motivations for creating it, and how to i
19
19
  To bootstrap a new Rails application:
20
20
 
21
21
  ```
22
- $ rails new app-name -m https://raw.githubusercontent.com/sul-dlss/spotlight/master/template.rb
22
+ $ rails new app-name -m https://raw.githubusercontent.com/projectblacklight/spotlight/master/template.rb
23
23
  ```
24
24
 
25
25
  or from an existing Rails application:
26
26
 
27
27
  ```
28
- $ rake rails:template LOCATION=https://raw.githubusercontent.com/sul-dlss/spotlight/master/template.rb
28
+ $ rake rails:template LOCATION=https://raw.githubusercontent.com/projectblacklight/spotlight/master/template.rb
29
29
  ```
30
30
 
31
31
  *During this process you will be prompted to enter an initial administrator email and password (this is a super-admin that can administer any exhibit in the installation).* If you choose not to create one, the first user will be given administrative privileges.
@@ -65,7 +65,7 @@ Spotlight introduces functionality that depends on being able to send emails to
65
65
 
66
66
  ### More
67
67
 
68
- See the [Spotlight wiki](https://github.com/sul-dlss/spotlight/wiki) for more detailed information on configuring Spotlight.
68
+ See the [Spotlight wiki](https://github.com/projectblacklight/spotlight/wiki) for more detailed information on configuring Spotlight.
69
69
 
70
70
  # Developing Spotlight
71
71
 
@@ -78,8 +78,8 @@ Our `$ rake ci` and `$ rake spotlight:server` tasks utilize Solr and the testing
78
78
 
79
79
  ## More Information for Developers
80
80
 
81
- * [Contributing to Spotlight](https://github.com/sul-dlss/spotlight/wiki/Contributing-to-Spotlight)
82
- * [Testing](https://github.com/sul-dlss/spotlight/wiki/Testing)
81
+ * [Contributing to Spotlight](https://github.com/projectblacklight/spotlight/wiki/Contributing-to-Spotlight)
82
+ * [Testing](https://github.com/projectblacklight/spotlight/wiki/Testing)
83
83
 
84
84
  ## Tests
85
85
 
data/Rakefile CHANGED
@@ -4,8 +4,6 @@ rescue LoadError
4
4
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
5
  end
6
6
 
7
- ZIP_URL = 'https://github.com/projectblacklight/blacklight-jetty/archive/v4.10.4.zip'.freeze
8
-
9
7
  require 'rdoc/task'
10
8
 
11
9
  RDoc::Task.new(:rdoc) do |rdoc|
@@ -18,40 +16,33 @@ end
18
16
 
19
17
  Bundler::GemHelper.install_tasks
20
18
 
19
+ require 'solr_wrapper'
20
+
21
21
  require 'rspec/core/rake_task'
22
22
  RSpec::Core::RakeTask.new(:spec)
23
23
 
24
24
  require 'rubocop/rake_task'
25
25
  RuboCop::RakeTask.new(:rubocop)
26
26
 
27
- require 'jettywrapper'
28
-
29
27
  require 'engine_cart/rake_task'
30
28
  EngineCart.fingerprint_proc = EngineCart.rails_fingerprint_proc
31
29
 
32
30
  require 'spotlight/version'
33
31
 
34
- task ci: ['engine_cart:generate', 'jetty:clean', 'spotlight:configure_jetty'] do
32
+ task ci: ['engine_cart:generate'] do
35
33
  ENV['environment'] = 'test'
36
- jetty_params = Jettywrapper.load_config
37
- jetty_params[:startup_wait] = 60
38
34
 
39
- Jettywrapper.wrap(jetty_params) do
40
- Rake::Task['spotlight:fixtures'].invoke
35
+ SolrWrapper.wrap(port: '8983') do |solr|
36
+ solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path(File.dirname(__FILE__)), 'solr_conf', 'conf')) do
37
+ Rake::Task['spotlight:fixtures'].invoke
41
38
 
42
- # run the tests
43
- Rake::Task['spec'].invoke
39
+ # run the tests
40
+ Rake::Task['spec'].invoke
41
+ end
44
42
  end
45
43
  end
46
44
 
47
45
  namespace :spotlight do
48
- desc 'Copies the default SOLR config for the bundled Testing Server'
49
- task :configure_jetty do
50
- FileList['solr_conf/conf/*'].each do |f|
51
- cp(f, 'jetty/solr/blacklight-core/conf/', verbose: true)
52
- end
53
- end
54
-
55
46
  desc 'Load fixtures'
56
47
  task fixtures: ['engine_cart:generate'] do
57
48
  within_test_app do
@@ -64,22 +55,16 @@ namespace :spotlight do
64
55
  task :server do
65
56
  Rake::Task['engine_cart:generate'].invoke
66
57
 
67
- unless File.exist? 'jetty'
68
- Rake::Task['jetty:clean'].invoke
69
- Rake::Task['spotlight:configure_jetty'].invoke
70
- end
71
-
72
- jetty_params = Jettywrapper.load_config
73
- jetty_params[:startup_wait] = 60
74
-
75
- Jettywrapper.wrap(jetty_params) do
76
- within_test_app do
77
- unless File.exist? '.initialized'
78
- system 'bundle exec rake spotlight:initialize'
79
- system 'bundle exec rake spotlight_test:solr:seed'
80
- File.open('.initialized', 'w') {}
58
+ SolrWrapper.wrap(port: '8983') do |solr|
59
+ solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path(File.dirname(__FILE__)), 'solr_conf', 'conf')) do
60
+ within_test_app do
61
+ unless File.exist? '.initialized'
62
+ system 'bundle exec rake spotlight:initialize'
63
+ system 'bundle exec rake spotlight_test:solr:seed'
64
+ File.open('.initialized', 'w') {}
65
+ end
66
+ system 'bundle exec rails s'
81
67
  end
82
- system 'bundle exec rails s'
83
68
  end
84
69
  end
85
70
  end
@@ -111,9 +96,10 @@ namespace :spotlight do
111
96
  Bundler.with_clean_env do
112
97
  Dir.chdir('internal') do
113
98
  APP_ROOT = Dir.pwd
114
- jetty_params = Jettywrapper.load_config
115
- Jettywrapper.wrap(jetty_params) do
116
- system 'bundle exec rails s'
99
+ SolrWrapper.wrap(port: '8983') do |solr|
100
+ solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path('..', File.dirname(__FILE__)), 'solr', 'conf')) do
101
+ system 'bundle exec rails s'
102
+ end
117
103
  end
118
104
  end
119
105
  end
@@ -9,7 +9,7 @@ SirTrevor.Blocks.SolrDocuments = (function(){
9
9
 
10
10
  icon_name: "items",
11
11
 
12
- autocomplete_url: function() { return this.$instance().closest('form[data-autocomplete-exhibit-catalog-index-path]').data('autocomplete-exhibit-catalog-index-path').replace("%25QUERY", "%QUERY"); },
12
+ autocomplete_url: function() { return this.$instance().closest('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path').replace("%25QUERY", "%QUERY"); },
13
13
  autocomplete_template: function() { return '<div class="autocomplete-item{{#if private}} blacklight-private{{/if}}">{{#if thumbnail}}<div class="document-thumbnail thumbnail"><img src="{{thumbnail}}" /></div>{{/if}}<span class="autocomplete-title">{{title}}</span><br/><small>&nbsp;&nbsp;{{description}}</small></div>' },
14
14
 
15
15
  transform_autocomplete_results: function(response) {
@@ -36,7 +36,7 @@ function itemsBloodhound() {
36
36
  queryTokenizer: Bloodhound.tokenizers.whitespace,
37
37
  limit: 10,
38
38
  remote: {
39
- url: $('form[data-autocomplete-exhibit-catalog-index-path]').data('autocomplete-exhibit-catalog-index-path').replace("%25QUERY", "%QUERY"),
39
+ url: $('form[data-autocomplete-exhibit-catalog-path]').data('autocomplete-exhibit-catalog-path').replace("%25QUERY", "%QUERY"),
40
40
  filter: function(response) {
41
41
  return $.map(response['docs'], function(doc) {
42
42
  return doc;
@@ -1,5 +1,5 @@
1
1
  Spotlight = function() {
2
- var buffer = new Array;
2
+ var buffer = [];
3
3
  return {
4
4
  onLoad: function(func) {
5
5
  buffer.push(func);
@@ -10,19 +10,13 @@ Spotlight = function() {
10
10
  buffer[i].call();
11
11
  }
12
12
  }
13
- }
13
+ };
14
14
  }();
15
15
 
16
- if (typeof Turbolinks !== "undefined") {
17
- $(document).on('page:load', function() {
18
- Spotlight.activate();
19
- });
20
- }
21
- $(document).ready(function() {
16
+ Blacklight.onLoad(function() {
22
17
  Spotlight.activate();
23
18
  });
24
19
 
25
-
26
20
  Spotlight.onLoad(function(){
27
21
  SpotlightNestable.init();
28
22
  $.each($('.social-share-button a'), function() {
@@ -14,30 +14,13 @@
14
14
  a {
15
15
  display: block;
16
16
  margin-bottom: 5px;
17
- background: none;
18
- width: 100%;
17
+ padding-left: 18px;
18
+ text-indent: 10px;
19
19
  color: $gray-light;
20
20
  }
21
21
  a:hover, a:focus {
22
22
  color: $gray;
23
23
  text-decoration: none;
24
24
  }
25
- a:before {
26
- content: '';
27
- margin-right: 5px;
28
- margin-bottom: -3px;
29
- display: inline-block;
30
- width: 16px;
31
- height: 16px;
32
- }
33
- a.social-share-button-twitter:before {
34
- background: image-url("sprites/social-share-button.png") -32px -48px no-repeat;
35
- }
36
- a.social-share-button-facebook:before {
37
- background: image-url("sprites/social-share-button.png") -32px 0px no-repeat;
38
- }
39
- a.social-share-button-google_plus:before {
40
- background: image-url("sprites/social-share-button.png") -16px -32px no-repeat;
41
- }
42
25
  }
43
26
  }
@@ -22,14 +22,14 @@ module Spotlight
22
22
  def autocomplete_json_response_for_document(doc)
23
23
  {
24
24
  id: doc.id,
25
- title: CGI.unescapeHTML(view_context.presenter(doc).document_heading.to_str),
25
+ title: CGI.unescapeHTML(view_context.presenter(doc).heading.to_str),
26
26
  thumbnail: doc.first(blacklight_config.index.thumbnail_field),
27
27
  thumbnails: doc.spotlight_image_versions.try(:thumb) || doc[blacklight_config.index.thumbnail_field],
28
28
  full_image_url: doc.spotlight_image_versions.try(:full).try(:first),
29
29
  full_images: doc.spotlight_image_versions.try(:full),
30
30
  image_versions: doc.spotlight_image_versions.image_versions(:thumb, :full),
31
31
  description: doc.id,
32
- url: exhibit_catalog_path(current_exhibit, doc),
32
+ url: polymorphic_path([current_exhibit, doc]),
33
33
  private: doc.private?(current_exhibit),
34
34
  global_id: doc.to_global_id.to_s
35
35
  }
@@ -6,10 +6,6 @@ module Spotlight
6
6
  include Blacklight::Catalog
7
7
  include Spotlight::Base
8
8
 
9
- require 'spotlight/catalog/access_controls_enforcement'
10
-
11
- include Spotlight::Catalog::AccessControlsEnforcement
12
-
13
9
  included do
14
10
  before_action :add_facet_visibility_field
15
11
  end
@@ -23,8 +19,14 @@ module Spotlight
23
19
  query: {
24
20
  private: {
25
21
  label: I18n.t(:'spotlight.catalog.facets.exhibit_visibility.private'),
26
- fq: "#{blacklight_config.document_model.visibility_field(current_exhibit)}:false" }
22
+ fq: "#{blacklight_config.document_model.visibility_field(current_exhibit)}:false"
23
+ }
27
24
  }
28
25
  end
26
+
27
+ def render_save_this_search?
28
+ (current_exhibit && can?(:curate, current_exhibit)) &&
29
+ !(params[:controller] == 'spotlight/catalog' && params[:action] == 'admin')
30
+ end
29
31
  end
30
32
  end
@@ -56,7 +56,7 @@ module Spotlight
56
56
  if current_exhibit
57
57
  exhibit_search_action_url(*args)
58
58
  else
59
- main_app.catalog_index_url(*args)
59
+ main_app.search_catalog_url(*args)
60
60
  end
61
61
  end
62
62
 
@@ -74,9 +74,9 @@ module Spotlight
74
74
  options.except! :exhibit_id, :only_path
75
75
 
76
76
  if only_path
77
- spotlight.exhibit_catalog_index_path(current_exhibit, *args, options)
77
+ spotlight.search_exhibit_catalog_path(current_exhibit, *args, options)
78
78
  else
79
- spotlight.exhibit_catalog_index_url(current_exhibit, *args, options)
79
+ spotlight.search_exhibit_catalog_url(current_exhibit, *args, options)
80
80
  end
81
81
  end
82
82
 
@@ -84,7 +84,7 @@ module Spotlight
84
84
  options = args.extract_options!
85
85
  options = params.merge(options).except(:exhibit_id, :only_path)
86
86
 
87
- spotlight.exhibit_catalog_facet_url(current_exhibit, *args, options)
87
+ spotlight.facet_exhibit_catalog_url(current_exhibit, *args, options)
88
88
  end
89
89
  end
90
90
  end
@@ -10,5 +10,7 @@ module Spotlight
10
10
  before_action do
11
11
  flash.now[:notice] = flash[:notice].html_safe if flash[:html_safe] && flash[:notice]
12
12
  end
13
+
14
+ before_action :set_paper_trail_whodunnit
13
15
  end
14
16
  end
@@ -5,7 +5,6 @@ module Spotlight
5
5
  class BrowseController < Spotlight::ApplicationController
6
6
  load_and_authorize_resource :exhibit, class: 'Spotlight::Exhibit'
7
7
  include Spotlight::Base
8
- include Spotlight::Catalog::AccessControlsEnforcement
9
8
 
10
9
  load_and_authorize_resource :search, except: :index, through: :exhibit, parent: false
11
10
  before_action :attach_breadcrumbs
@@ -21,7 +20,7 @@ module Spotlight
21
20
  blacklight_config.index.document_actions = blacklight_config.browse.document_actions
22
21
 
23
22
  add_breadcrumb @search.title, exhibit_browse_path(@exhibit, @search)
24
- (@response, @document_list) = search_results(@search.query_params.with_indifferent_access.merge(params), search_params_logic)
23
+ (@response, @document_list) = search_results(@search.query_params.with_indifferent_access.merge(params))
25
24
  end
26
25
 
27
26
  protected
@@ -52,7 +52,7 @@ module Spotlight
52
52
  # results when a partial match is passed in the "q" parameter.
53
53
  def autocomplete
54
54
  search_params = params.merge(search_field: Spotlight::Engine.config.autocomplete_search_field)
55
- (_, @document_list) = search_results(search_params.merge(public: true), search_params_logic)
55
+ (_, @document_list) = search_results(search_params.merge(public: true))
56
56
 
57
57
  respond_to do |format|
58
58
  format.json do
@@ -63,8 +63,8 @@ module Spotlight
63
63
 
64
64
  def admin
65
65
  add_breadcrumb t(:'spotlight.curation.sidebar.header'), exhibit_dashboard_path(@exhibit)
66
- add_breadcrumb t(:'spotlight.curation.sidebar.items'), admin_exhibit_catalog_index_path(@exhibit)
67
- (@response, @document_list) = search_results(params, search_params_logic)
66
+ add_breadcrumb t(:'spotlight.curation.sidebar.items'), admin_exhibit_catalog_path(@exhibit)
67
+ (@response, @document_list) = search_results(params)
68
68
  @filters = params[:f] || []
69
69
 
70
70
  respond_to do |format|
@@ -79,7 +79,7 @@ module Spotlight
79
79
 
80
80
  try_solr_commit!
81
81
 
82
- redirect_to exhibit_catalog_path(current_exhibit, @document)
82
+ redirect_to polymorphic_path([current_exhibit, @document])
83
83
  end
84
84
 
85
85
  def edit
@@ -87,7 +87,7 @@ module Spotlight
87
87
  end
88
88
 
89
89
  def make_private
90
- @response, @document = fetch params[:catalog_id]
90
+ @response, @document = fetch params[:id]
91
91
  @document.make_private!(current_exhibit)
92
92
  @document.save
93
93
 
@@ -98,7 +98,7 @@ module Spotlight
98
98
  end
99
99
 
100
100
  def make_public
101
- @response, @document = fetch params[:catalog_id]
101
+ @response, @document = fetch params[:id]
102
102
  @document.make_public!(current_exhibit)
103
103
  @document.save
104
104
 
@@ -179,7 +179,7 @@ module Spotlight
179
179
  end
180
180
 
181
181
  def custom_field_params
182
- current_exhibit.custom_fields.pluck(:field)
182
+ current_exhibit.custom_fields.writeable.pluck(:field)
183
183
  end
184
184
 
185
185
  def check_authorization
@@ -205,7 +205,7 @@ module Spotlight
205
205
  add_breadcrumb t(:'spotlight.catalog.breadcrumb.index'), search_action_url(current_search_session.query_params)
206
206
  end
207
207
 
208
- add_breadcrumb Array(document[blacklight_config.view_config(:show).title_field]).join(', '), exhibit_catalog_path(current_exhibit, document)
208
+ add_breadcrumb Array(document[blacklight_config.view_config(:show).title_field]).join(', '), polymorphic_path([current_exhibit, document])
209
209
  end
210
210
  # rubocop:enable Metrics/AbcSize
211
211
 
@@ -25,6 +25,65 @@ module Spotlight
25
25
  end
26
26
  end
27
27
  end
28
+
29
+ def enabled_in_spotlight_view_type_configuration?(config, *args)
30
+ if config.respond_to?(:upstream_if) &&
31
+ !config.upstream_if.nil? &&
32
+ !blacklight_configuration_context.evaluate_configuration_conditional(config.upstream_if, config, *args)
33
+ false
34
+ elsif current_exhibit.nil? || is_a?(Spotlight::PagesController)
35
+ true
36
+ else
37
+ current_exhibit.blacklight_configuration.document_index_view_types.include? config.key.to_s
38
+ end
39
+ end
40
+
41
+ # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength
42
+ def field_enabled?(field, *args)
43
+ if !field.enabled
44
+ false
45
+ elsif field.respond_to?(:upstream_if) &&
46
+ !field.upstream_if.nil? &&
47
+ !blacklight_configuration_context.evaluate_configuration_conditional(field.upstream_if, field, *args)
48
+ false
49
+ elsif field.is_a?(Blacklight::Configuration::SortField) || field.is_a?(Blacklight::Configuration::SearchField)
50
+ field.enabled
51
+ elsif field.is_a?(Blacklight::Configuration::FacetField) || (is_a?(Blacklight::Catalog) && %w(edit show).include?(action_name))
52
+ field.show
53
+ else
54
+ field.send(document_index_view_type)
55
+ end
56
+ end
57
+ # rubocop:enable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength
58
+
59
+ private
60
+
61
+ ##
62
+ # Get the current "view type" (and ensure it is a valid type)
63
+ #
64
+ # @param [Hash] the query parameters to check
65
+ # @return [Symbol]
66
+ def document_index_view_type
67
+ view_param = params[:view]
68
+ view_param ||= session[:preferred_view]
69
+ if view_param && document_index_views.keys.include?(view_param.to_sym)
70
+ view_param.to_sym
71
+ else
72
+ default_document_index_view_type
73
+ end
74
+ end
75
+
76
+ def document_index_views
77
+ blacklight_config.view.select do |_k, config|
78
+ blacklight_configuration_context.evaluate_if_unless_configuration config
79
+ end
80
+ end
81
+
82
+ ##
83
+ # Get the default index view type
84
+ def default_document_index_view_type
85
+ document_index_views.select { |_k, config| config.respond_to?(:default) && config.default }.keys.first || document_index_views.keys.first
86
+ end
28
87
  end
29
88
  end
30
89
  end