sufia 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +5 -2
  5. data/History.md +6 -0
  6. data/README.md +40 -0
  7. data/Rakefile +4 -0
  8. data/app/assets/javascripts/sufia.js +3 -115
  9. data/app/assets/javascripts/sufia/batch_select_all.js +179 -0
  10. data/app/assets/javascripts/sufia/edit_metadata.js +86 -0
  11. data/app/assets/javascripts/sufia/multiForm.js +57 -0
  12. data/app/assets/javascripts/terms_of_service.js +7 -0
  13. data/app/assets/stylesheets/audio-js.css +3 -0
  14. data/app/assets/stylesheets/dashboard.css.scss +51 -0
  15. data/app/assets/stylesheets/generic_files.css +36 -0
  16. data/app/assets/stylesheets/sufia.css.scss +2 -0
  17. data/app/controllers/batch_controller.rb +11 -0
  18. data/app/controllers/batch_edits_controller.rb +1 -77
  19. data/app/controllers/generic_files_controller.rb +1 -0
  20. data/app/controllers/mailbox_controller.rb +1 -1
  21. data/app/controllers/single_use_link_controller.rb +11 -7
  22. data/app/helpers/generic_file_helper.rb +11 -3
  23. data/app/helpers/sufia_helper.rb +13 -10
  24. data/app/models/batch.rb +1 -1
  25. data/app/models/datastreams/fits_datastream.rb +2 -2
  26. data/app/models/datastreams/generic_file_rdf_datastream.rb +22 -18
  27. data/app/models/datastreams/properties_datastream.rb +2 -2
  28. data/app/views/_user_util_links.html.erb +2 -2
  29. data/app/views/batch/_metadata.html.erb +82 -0
  30. data/app/views/batch/_more_metadata.html.erb +6 -0
  31. data/app/views/batch/edit.html.erb +1 -8
  32. data/app/views/batch_edits/_check_all.html.erb +0 -157
  33. data/app/views/batch_edits/edit.html.erb +0 -29
  34. data/app/views/catalog/_index_partials/_list_files.html.erb +8 -10
  35. data/app/views/catalog/_recent_document.html.erb +9 -18
  36. data/app/views/catalog/_results_pagination.html.erb +1 -1
  37. data/app/views/contact_form/new.html.erb +1 -1
  38. data/app/views/dashboard/_index_partials/_default_group.html.erb +1 -1
  39. data/app/views/dashboard/_index_partials/_list_files.html.erb +12 -14
  40. data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +9 -19
  41. data/app/views/dashboard/_results_pagination.html.erb +1 -1
  42. data/app/views/dashboard/index.html.erb +6 -82
  43. data/app/views/error/single_use_error.html.erb +35 -0
  44. data/app/views/generic_files/_descriptions.html.erb +2 -2
  45. data/app/views/generic_files/_extra_fields_modal.html.erb +1 -1
  46. data/app/views/generic_files/_field_form.html.erb +2 -5
  47. data/app/views/generic_files/_media_display.html.erb +8 -6
  48. data/app/views/generic_files/_permission.html.erb +2 -2
  49. data/app/views/generic_files/_rights_modal.html.erb +1 -1
  50. data/app/views/generic_files/_show_actions.html.erb +1 -1
  51. data/app/views/generic_files/_show_details.html.erb +11 -6
  52. data/app/views/generic_files/edit.html.erb +0 -8
  53. data/app/views/generic_files/edit_fields/_type.html.erb +1 -1
  54. data/app/views/generic_files/show.html.erb +5 -8
  55. data/app/views/generic_files/show_fields/_based_near.html.erb +4 -1
  56. data/app/views/generic_files/show_fields/_contributor.html.erb +4 -1
  57. data/app/views/generic_files/show_fields/_creator.html.erb +4 -1
  58. data/app/views/generic_files/show_fields/_date_created.html.erb +4 -1
  59. data/app/views/generic_files/show_fields/_description.html.erb +4 -1
  60. data/app/views/generic_files/show_fields/_language.html.erb +1 -1
  61. data/app/views/generic_files/show_fields/_publisher.html.erb +4 -1
  62. data/app/views/generic_files/show_fields/_related_url.html.erb +3 -1
  63. data/app/views/generic_files/show_fields/_resource_type.html.erb +1 -1
  64. data/app/views/generic_files/show_fields/_subject.html.erb +4 -1
  65. data/app/views/generic_files/show_fields/_tag.html.erb +1 -1
  66. data/app/views/generic_files/show_fields/_title.html.erb +4 -1
  67. data/app/views/layouts/error.html.erb +0 -4
  68. data/app/views/layouts/hydra-head.html.erb +2 -6
  69. data/app/views/single_use_link/show.html.erb +1 -1
  70. data/app/views/users/index.html.erb +1 -1
  71. data/app/views/users/show.html.erb +1 -1
  72. data/config/locales/sufia.en.yml +1 -0
  73. data/config/routes.rb +11 -4
  74. data/lib/generators/sufia/sufia_generator.rb +2 -1
  75. data/lib/generators/sufia/templates/catalog_controller.rb +143 -117
  76. data/lib/generators/sufia/templates/config/resque_admin.rb +10 -0
  77. data/lib/generators/sufia/templates/config/sufia.rb +8 -0
  78. data/lib/sufia.rb +4 -14
  79. data/lib/sufia/batch_edits_controller_behavior.rb +89 -0
  80. data/lib/sufia/controller.rb +7 -5
  81. data/lib/sufia/downloads_controller_behavior.rb +14 -19
  82. data/lib/sufia/file_content/extract_metadata.rb +11 -4
  83. data/lib/sufia/files_controller_behavior.rb +63 -44
  84. data/lib/sufia/generic_file.rb +29 -11
  85. data/lib/sufia/generic_file/audit.rb +1 -1
  86. data/lib/sufia/generic_file/thumbnail.rb +51 -26
  87. data/lib/sufia/id_service.rb +28 -11
  88. data/lib/sufia/jobs/batch_update_job.rb +2 -2
  89. data/lib/sufia/jobs/characterize_job.rb +11 -3
  90. data/lib/sufia/jobs/ffmpeg_transcode_job.rb +61 -0
  91. data/lib/sufia/jobs/resolrize_job.rb +1 -1
  92. data/lib/sufia/jobs/transcode_audio_job.rb +40 -0
  93. data/lib/sufia/jobs/transcode_video_job.rb +9 -49
  94. data/lib/sufia/queue/resque.rb +2 -2
  95. data/lib/sufia/single_use_error.rb +4 -0
  96. data/lib/sufia/solr_document_behavior.rb +108 -1
  97. data/lib/sufia/version.rb +1 -1
  98. data/solr_conf/conf/schema.xml +332 -652
  99. data/solr_conf/conf/solrconfig.xml +60 -196
  100. data/spec/controllers/batch_controller_spec.rb +4 -5
  101. data/spec/controllers/catalog_controller_spec.rb +13 -13
  102. data/spec/controllers/dashboard_controller_spec.rb +2 -2
  103. data/spec/controllers/downloads_controller_spec.rb +74 -62
  104. data/spec/controllers/generic_files_controller_spec.rb +10 -8
  105. data/spec/controllers/single_use_link_controller_spec.rb +12 -4
  106. data/spec/fixtures/Example.ogg +0 -0
  107. data/spec/fixtures/piano_note.wav +0 -0
  108. data/spec/fixtures/sufia_generic_stub.descMeta.txt +1 -1
  109. data/spec/helpers/sufia_helper_spec.rb +12 -0
  110. data/spec/models/characterize_job_spec.rb +89 -0
  111. data/spec/models/checksum_audit_log_spec.rb +1 -0
  112. data/spec/models/event_jobs_spec.rb +9 -9
  113. data/spec/models/file_content_datastream_spec.rb +16 -10
  114. data/spec/models/fits_datastream_spec.rb +2 -8
  115. data/spec/models/generic_file_spec.rb +131 -60
  116. data/spec/models/solr_document_spec.rb +21 -0
  117. data/spec/models/transcode_audio_job_spec.rb +81 -0
  118. data/spec/models/transcode_video_job_spec.rb +2 -2
  119. data/spec/models/unzip_job_spec.rb +3 -3
  120. data/spec/spec_helper.rb +21 -0
  121. data/spec/support/Gemfile +7 -3
  122. data/sufia.gemspec +8 -11
  123. data/tasks/cucumber.rake +1 -2
  124. data/tasks/sufia-dev.rake +13 -2
  125. data/tasks/sufia.rake +1 -1
  126. metadata +77 -118
  127. data/app/views/batch_edits/_metadata.html.erb +0 -180
  128. data/lib/generators/sufia/templates/config/hydra_config.rb +0 -32
  129. data/lib/kaminari/helpers/tag.rb +0 -11
@@ -2,7 +2,10 @@
2
2
  <th>Location</th>
3
3
  <td>
4
4
  <% @generic_file.based_near.each do |bn| %>
5
- <%= link_to_facet(bn, 'desc_metadata__based_near_facet') %><br />
5
+ <span itemprop="contentLocation" itemscope itemtype="http://schema.org/Place">
6
+ <span itemprop="name"><%= link_to_facet(bn, Solrizer.solr_name("desc_metadata__based_near", :facetable)) %></span>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Contributor</th>
3
3
  <td>
4
4
  <% @generic_file.contributor.each do |contributor| %>
5
- <%= link_to_field('contributor', contributor) %><br />
5
+ <span itemprop="contributor" itemscope itemtype="http://schema.org/Thing">
6
+ <span itemprop="name"><%= link_to_field('contributor', contributor) %></span>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Creator</th>
3
3
  <td>
4
4
  <% @generic_file.creator.each do |creator| %>
5
- <%= link_to_facet(creator, 'desc_metadata__creator_facet') %><br />
5
+ <span itemprop="creator" itemscope itemtype="http://schema.org/Thing">
6
+ <span itemprop="name"><%= link_to_facet(creator, Solrizer.solr_name("desc_metadata__creator", :facetable)) %></span>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Date Created</th>
3
3
  <td>
4
4
  <% @generic_file.date_created.each do |dc| %>
5
- <%= dc %><br />
5
+ <span itemprop="dateCreated">
6
+ <%= dc %>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Abstract or Summary</th>
3
3
  <td>
4
4
  <% @generic_file.description.each do |desc| %>
5
- <%= iconify_auto_link(desc) %><br />
5
+ <span itemprop="description">
6
+ <%= iconify_auto_link(desc) %>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,7 @@
2
2
  <th>Language</th>
3
3
  <td>
4
4
  <% @generic_file.language.each do |lang| %>
5
- <%= link_to_facet(lang,'desc_metadata__language_facet') %><br />
5
+ <span itemprop="inLanguage"><%= link_to_facet(lang, Solrizer.solr_name("desc_metadata__language", :facetable)) %></span><br />
6
6
  <% end %>
7
7
  </td>
8
8
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Publisher</th>
3
3
  <td>
4
4
  <% @generic_file.publisher.each do |pub| %>
5
- <%= link_to_facet(pub,'desc_metadata__publisher_facet') %><br />
5
+ <span itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
6
+ <span itemprop="name"><%= link_to_facet(pub, Solrizer.solr_name("desc_metadata__publisher", :facetable)) %></span>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,9 @@
2
2
  <th>Related URL</th>
3
3
  <td>
4
4
  <% @generic_file.related_url.each do |url| %>
5
- <%= iconify_auto_link(url) %><br />
5
+ <div style="word-break:break-all;">
6
+ <%= iconify_auto_link(url) %>
7
+ </div>
6
8
  <% end %>
7
9
  </td>
8
10
  </tr>
@@ -2,7 +2,7 @@
2
2
  <th>Resource Type</th>
3
3
  <td>
4
4
  <% @generic_file.resource_type.each do |rtype| %>
5
- <%= link_to_facet(rtype, 'desc_metadata__resource_type_facet') %><br />
5
+ <%= link_to_facet(rtype, Solrizer.solr_name("desc_metadata__resource_type", :facetable)) %><br />
6
6
  <% end %>
7
7
  </td>
8
8
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Subject</th>
3
3
  <td>
4
4
  <% @generic_file.subject.each do |sub| %>
5
- <%= link_to_facet(sub, 'desc_metadata__subject_facet') %><br />
5
+ <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
6
+ <span itemprop="name"><%= link_to_facet(sub, Solrizer.solr_name("desc_metadata__subject", :facetable)) %></span>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -2,7 +2,7 @@
2
2
  <th>Keyword</th>
3
3
  <td>
4
4
  <% @generic_file.tag.each do |t| %>
5
- <%= link_to_facet(t, 'desc_metadata__tag_facet') %><br />
5
+ <span itemprop="keywords"><%= link_to_facet(t, Solrizer.solr_name("desc_metadata__tag", :facetable)) %></span><br />
6
6
  <% end %>
7
7
  </td>
8
8
  </tr>
@@ -2,7 +2,10 @@
2
2
  <th>Title</th>
3
3
  <td>
4
4
  <% @generic_file.title.each do |title| %>
5
- <%= title %><br />
5
+ <span itemprop="name">
6
+ <%= title %>
7
+ </span>
8
+ <br />
6
9
  <% end %>
7
10
  </td>
8
11
  </tr>
@@ -37,10 +37,6 @@ limitations under the License.
37
37
  </script>
38
38
 
39
39
  <%= render :partial => '/ga', :formats => [:html] %>
40
-
41
- <style type="text/css">
42
- <%= yield(:local_css) %>
43
- </style>
44
40
  </head>
45
41
 
46
42
  <body>
@@ -39,10 +39,6 @@ limitations under the License.
39
39
  </script>
40
40
 
41
41
  <%= render :partial => '/ga', :formats => [:html] %>
42
-
43
- <style type="text/css">
44
- <%= yield(:local_css) %>
45
- </style>
46
42
  </head>
47
43
 
48
44
  <%# need a better way to determine if we are on the home page and using three col layout %>
@@ -77,7 +73,7 @@ limitations under the License.
77
73
 
78
74
  <div class="span30 offset2">
79
75
  <h2 class="heading1">Contribute</h2>
80
- <%= link_to '<i class="icon-file"></i> Share Your Work'.html_safe, sufia.new_generic_file_path, :class => "btn btn-primary btn-large", :id => "contribute_link" %>
76
+ <%= link_to "<i class=\"icon-file\"></i> #{t('sufia.share_button')}".html_safe, sufia.new_generic_file_path, :class => "btn btn-primary btn-large", :id => "contribute_link" %>
81
77
  <div class="row center"> <a href="/terms/">Terms of Use</a></div><br />
82
78
  <div class="row">&nbsp;</div>
83
79
  <h2 class="heading1">My Latest</h2>
@@ -96,6 +92,6 @@ limitations under the License.
96
92
  </div><!-- /.container -->
97
93
  </div><!-- /#wrapper -->
98
94
  <%= render partial: '/footer' %>
99
- <div id="ajax-modal" class="modal hide fade" tabindex="-1"></div>
95
+ <div id="ajax-modal" class="modal hide" tabindex="-1"></div>
100
96
  </body>
101
97
  </html>
@@ -10,7 +10,7 @@
10
10
  <table class="table table-striped"><!-- class="verticalheadings"> -->
11
11
  <tbody>
12
12
  <% @terms.each do |term| %>
13
- <% vals = @generic_file.send(term) %>
13
+ <% vals = Array( @generic_file.send(term)) %>
14
14
  <tr id='row_<%=term.to_s%>' class="expandable">
15
15
  <th width="20%">
16
16
  <%=get_label(term)%>
@@ -36,7 +36,7 @@ limitations under the License.
36
36
  <td ><a href="<%= sufia.profile_path(URI.escape(user.user_key,'@.')) %>" ><%= user.name %><a></td>
37
37
  <td><a href="<%= sufia.profile_path(URI.escape(user.user_key,'@.')) %>" ><%= user.user_key %><a></td>
38
38
  <td><%= user.department %> </td>
39
- <td><%= GenericFile.find(:depositor_t => user.to_s).count %> </td>
39
+ <td><%= GenericFile.find(:depositor => user.to_s).count %> </td>
40
40
  </tr>
41
41
 
42
42
  <% end %>
@@ -37,7 +37,7 @@ limitations under the License.
37
37
  <dt><i class="icon-calendar"></i> Active Since</dt>
38
38
  <dd><%= @user.created_at.to_date.to_formatted_s(:long_ordinal) %></dd>
39
39
  <dt><i class="icon-folder-open"></i> Deposited Files</dt>
40
- <dd><%= link_to_field('depositor', @user.to_s, GenericFile.find(:depositor_t => @user.to_s).count) %></dd>
40
+ <dd><%= link_to_field('depositor', @user.to_s, GenericFile.where(:depositor => @user.to_s).count) %></dd>
41
41
  <dt><i class="icon-trophy trophy-on" ></i> Highlighted Files</dt>
42
42
  <% @trophies.each do |t| %>
43
43
  <dd> <%= link_to display_title(t), sufia.generic_file_path(t) %></dd>
@@ -5,6 +5,7 @@ en:
5
5
  institution_name: "Penn State"
6
6
  deposit_agreement: "ScholarSphere's Deposit Agreement"
7
7
  upload_tooltip: "Please accept Deposit Agreement before you can upload."
8
+ share_button: "Share Your Work"
8
9
  directory:
9
10
  suffix: "@psu.edu"
10
11
  search:
@@ -72,16 +72,23 @@ Sufia::Engine.routes.draw do
72
72
  match 'contact' => 'contact_form#create', :via => :post, :as => :contact_form_index
73
73
  match 'contact' => 'contact_form#new', :via => :get, :as => :contact_form_index
74
74
 
75
- # Resque monitoring routes
76
- namespace :admin do
77
- constraints Sufia::ResqueAdmin do
78
- mount Resque::Server, :at => "queues"
75
+ # Resque monitoring routes. Don't bother with this route unless Sufia::ResqueAdmin
76
+ # has been defined in the initalizers.
77
+ if defined?(Sufia::ResqueAdmin)
78
+ namespace :admin do
79
+ constraints Sufia::ResqueAdmin do
80
+ mount Resque::Server, :at => "queues"
81
+ end
79
82
  end
80
83
  end
81
84
 
82
85
  # Static page routes (workaround)
83
86
  match ':action' => 'static#:action', :constraints => { :action => /about|help|terms|zotero|mendeley|agreement|subject_libraries|versions/ }, :as => :static
84
87
 
88
+ #Single use link errors
89
+ match 'single_use_link/not_found' => 'errors#single_use_error'
90
+ match 'single_use_link/expired' => 'errors#single_use_error'
91
+
85
92
  # Catch-all (for routing errors)
86
93
  match '*error' => 'errors#routing'
87
94
 
@@ -58,7 +58,7 @@ add_groups_to_users.rb create_local_authorities.rb create_trophies.rb}.each do
58
58
  controller_name = "ApplicationController"
59
59
  file_path = "app/controllers/application_controller.rb"
60
60
  if File.exists?(file_path)
61
- insert_into_file file_path, :after => 'include Hydra::Controller::ControllerBehavior' do
61
+ insert_into_file file_path, :after => 'include Blacklight::Controller' do
62
62
  " \n# Adds Sufia behaviors into the application controller \n" +
63
63
  " include Sufia::Controller\n"
64
64
  end
@@ -72,6 +72,7 @@ add_groups_to_users.rb create_local_authorities.rb create_trophies.rb}.each do
72
72
  copy_file "config/sufia.rb", "config/initializers/sufia.rb"
73
73
  copy_file "config/redis.yml", "config/redis.yml"
74
74
  copy_file "config/redis_config.rb", "config/initializers/redis_config.rb"
75
+ copy_file "config/resque_admin.rb", "config/initializers/resque_admin.rb"
75
76
  end
76
77
 
77
78
  def catalog_controller
@@ -46,54 +46,30 @@ class CatalogController < ApplicationController
46
46
  def recent
47
47
  if user_signed_in?
48
48
  # grab other people's documents
49
- (resp, doc_list) = get_search_results(:q =>'{!lucene q.op=AND df=depositor_t}-'+current_user.user_key, :sort=>"system_create_dt desc", :rows=>3)
49
+ (_, @recent_documents) = get_search_results(:q =>filter_not_mine,
50
+ :sort=>sort_field, :rows=>4)
50
51
  else
51
52
  # grab any documents we do not know who you are
52
- (resp, doc_list) = get_search_results(:q =>'', :sort=>"system_create_dt desc", :rows=>3)
53
+ (_, @recent_documents) = get_search_results(:q =>'', :sort=>sort_field, :rows=>4)
53
54
  end
54
- @recent_documents = doc_list[0..3]
55
55
  end
56
56
 
57
57
  def recent_me
58
58
  if user_signed_in?
59
- (resp, doc_list) = get_search_results(:q =>'{!lucene q.op=AND df=depositor_t}'+current_user.user_key, :sort=>"system_create_dt desc", :rows=>3)
60
- @recent_user_documents = doc_list[0..3]
61
- else
62
- @recent_user_documents = nil
59
+ (_, @recent_user_documents) = get_search_results(:q =>filter_not_mine,
60
+ :sort=>sort_field, :rows=>4)
63
61
  end
64
62
  end
65
63
 
64
+ def self.uploaded_field
65
+ # system_create_dtsi
66
+ solr_name('desc_metadata__date_uploaded', :stored_sortable, type: :date)
67
+ end
66
68
 
67
- #####################
68
- # jgm testing start #
69
- #####################
70
- if Rails.env == "integration"
71
- # COPIED AND MODIFIED from:
72
- # /usr/local/rvm/gems/ree-1.8.7-2011.03@scholarsphere/gems/blacklight-3.3.2/lib/blacklight/catalog.rb
73
- #
74
- # when solr (RSolr) throws an error (RSolr::RequestError), this method is executed.
75
- def rsolr_request_error(exception)
76
- #if Rails.env == "development"
77
- if ['development', 'integration'].include?(Rails.env)
78
- raise exception # Rails own code will catch and give usual Rails error page with stack trace
79
- else
80
- flash_notice = "Sorry, I don't understand your search."
81
- # Set the notice flag if the flash[:notice] is already set to the error that we are setting.
82
- # This is intended to stop the redirect loop error
83
- notice = flash[:notice] if flash[:notice] == flash_notice
84
- unless notice
85
- flash[:notice] = flash_notice
86
- redirect_to root_path, :status => 500
87
- else
88
- render :template => "public/500.html", :layout => false, :status => 500
89
- end
90
- end
91
- end
92
- #
69
+ def self.modified_field
70
+ solr_name('desc_metadata__date_modified', :stored_sortable, type: :date)
93
71
  end
94
- ###################
95
- # jgm testing end #
96
- ###################
72
+
97
73
 
98
74
  configure_blacklight do |config|
99
75
  ## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params
@@ -103,25 +79,24 @@ class CatalogController < ApplicationController
103
79
  }
104
80
 
105
81
  # solr field configuration for search results/index views
106
- config.index.show_link = "desc_metadata__title_display"
82
+ config.index.show_link = solr_name("desc_metadata__title", :displayable)
107
83
  config.index.record_display_type = "id"
108
84
 
109
85
  # solr field configuration for document/show views
110
- config.show.html_title = "desc_metadata__title_display"
111
- config.show.heading = "desc_metadata__title_display"
112
- config.show.display_type = "has_model_s"
86
+ config.show.html_title = solr_name("desc_metadata__title", :displayable)
87
+ config.show.heading = solr_name("desc_metadata__title", :displayable)
88
+ config.show.display_type = solr_name("has_model", :symbol)
113
89
 
114
90
  # solr fields that will be treated as facets by the blacklight application
115
91
  # The ordering of the field names is the order of the display
116
- config.add_facet_field "desc_metadata__resource_type_facet", :label => "Resource Type", :limit => 5
117
- #config.add_facet_field "desc_metadata__contributor_facet", :label => "Contributor", :limit => 5
118
- config.add_facet_field "desc_metadata__creator_facet", :label => "Creator", :limit => 5
119
- config.add_facet_field "desc_metadata__tag_facet", :label => "Keyword", :limit => 5
120
- config.add_facet_field "desc_metadata__subject_facet", :label => "Subject", :limit => 5
121
- config.add_facet_field "desc_metadata__language_facet", :label => "Language", :limit => 5
122
- config.add_facet_field "desc_metadata__based_near_facet", :label => "Location", :limit => 5
123
- config.add_facet_field "desc_metadata__publisher_facet", :label => "Publisher", :limit => 5
124
- config.add_facet_field "file_format_facet", :label => "File Format", :limit => 5
92
+ config.add_facet_field solr_name("desc_metadata__resource_type", :facetable), :label => "Resource Type", :limit => 5
93
+ config.add_facet_field solr_name("desc_metadata__creator", :facetable), :label => "Creator", :limit => 5
94
+ config.add_facet_field solr_name("desc_metadata__tag", :facetable), :label => "Keyword", :limit => 5
95
+ config.add_facet_field solr_name("desc_metadata__subject", :facetable), :label => "Subject", :limit => 5
96
+ config.add_facet_field solr_name("desc_metadata__language", :facetable), :label => "Language", :limit => 5
97
+ config.add_facet_field solr_name("desc_metadata__based_near", :facetable), :label => "Location", :limit => 5
98
+ config.add_facet_field solr_name("desc_metadata__publisher", :facetable), :label => "Publisher", :limit => 5
99
+ config.add_facet_field solr_name("file_format", :facetable), :label => "File Format", :limit => 5
125
100
 
126
101
  # Have BL send all facet field names to Solr, which has been the default
127
102
  # previously. Simply remove these lines if you'd rather use Solr request
@@ -130,41 +105,41 @@ class CatalogController < ApplicationController
130
105
 
131
106
  # solr fields to be displayed in the index (search results) view
132
107
  # The ordering of the field names is the order of the display
133
- config.add_index_field "desc_metadata__title_display", :label => "Title"
134
- config.add_index_field "desc_metadata__description_display", :label => "Description"
135
- config.add_index_field "desc_metadata__tag_display", :label => "Keyword"
136
- config.add_index_field "desc_metadata__subject_display", :label => "Subject"
137
- config.add_index_field "desc_metadata__creator_display", :label => "Creator"
138
- config.add_index_field "desc_metadata__contributor_display", :label => "Contributor"
139
- config.add_index_field "desc_metadata__publisher_display", :label => "Publisher"
140
- config.add_index_field "desc_metadata__based_near_display", :label => "Location"
141
- config.add_index_field "desc_metadata__language_display", :label => "Language"
142
- config.add_index_field "desc_metadata__date_uploaded_display", :label => "Date Uploaded"
143
- config.add_index_field "desc_metadata__date_modified_display", :label => "Date Modified"
144
- config.add_index_field "desc_metadata__date_created_display", :label => "Date Created"
145
- config.add_index_field "desc_metadata__rights_display", :label => "Rights"
146
- config.add_index_field "desc_metadata__resource_type_display", :label => "Resource Type"
147
- config.add_index_field "desc_metadata__format_display", :label => "File Format"
148
- config.add_index_field "desc_metadata__identifier_display", :label => "Identifier"
108
+ config.add_index_field solr_name("desc_metadata__title", :stored_searchable, type: :string), :label => "Title"
109
+ config.add_index_field solr_name("desc_metadata__description", :stored_searchable, type: :string), :label => "Description"
110
+ config.add_index_field solr_name("desc_metadata__tag", :stored_searchable, type: :string), :label => "Keyword"
111
+ config.add_index_field solr_name("desc_metadata__subject", :stored_searchable, type: :string), :label => "Subject"
112
+ config.add_index_field solr_name("desc_metadata__creator", :stored_searchable, type: :string), :label => "Creator"
113
+ config.add_index_field solr_name("desc_metadata__contributor", :stored_searchable, type: :string), :label => "Contributor"
114
+ config.add_index_field solr_name("desc_metadata__publisher", :stored_searchable, type: :string), :label => "Publisher"
115
+ config.add_index_field solr_name("desc_metadata__based_near", :stored_searchable, type: :string), :label => "Location"
116
+ config.add_index_field solr_name("desc_metadata__language", :stored_searchable, type: :string), :label => "Language"
117
+ config.add_index_field solr_name("desc_metadata__date_uploaded", :stored_searchable, type: :string), :label => "Date Uploaded"
118
+ config.add_index_field solr_name("desc_metadata__date_modified", :stored_searchable, type: :string), :label => "Date Modified"
119
+ config.add_index_field solr_name("desc_metadata__date_created", :stored_searchable, type: :string), :label => "Date Created"
120
+ config.add_index_field solr_name("desc_metadata__rights", :stored_searchable, type: :string), :label => "Rights"
121
+ config.add_index_field solr_name("desc_metadata__resource_type", :stored_searchable, type: :string), :label => "Resource Type"
122
+ config.add_index_field solr_name("desc_metadata__format", :stored_searchable, type: :string), :label => "File Format"
123
+ config.add_index_field solr_name("desc_metadata__identifier", :stored_searchable, type: :string), :label => "Identifier"
149
124
 
150
125
  # solr fields to be displayed in the show (single result) view
151
126
  # The ordering of the field names is the order of the display
152
- config.add_show_field "desc_metadata__title_display", :label => "Title"
153
- config.add_show_field "desc_metadata__description_display", :label => "Description"
154
- config.add_show_field "desc_metadata__tag_display", :label => "Keyword"
155
- config.add_show_field "desc_metadata__subject_display", :label => "Subject"
156
- config.add_show_field "desc_metadata__creator_display", :label => "Creator"
157
- config.add_show_field "desc_metadata__contributor_display", :label => "Contributor"
158
- config.add_show_field "desc_metadata__publisher_display", :label => "Publisher"
159
- config.add_show_field "desc_metadata__based_near_display", :label => "Location"
160
- config.add_show_field "desc_metadata__language_display", :label => "Language"
161
- config.add_show_field "desc_metadata__date_uploaded_display", :label => "Date Uploaded"
162
- config.add_show_field "desc_metadata__date_modified_display", :label => "Date Modified"
163
- config.add_show_field "desc_metadata__date_created_display", :label => "Date Created"
164
- config.add_show_field "desc_metadata__rights_display", :label => "Rights"
165
- config.add_show_field "desc_metadata__resource_type_display", :label => "Resource Type"
166
- config.add_show_field "desc_metadata__file_format_display", :label => "File Format"
167
- config.add_show_field "desc_metadata__identifier_display", :label => "Identifier"
127
+ config.add_show_field solr_name("desc_metadata__title", :stored_searchable, type: :string), :label => "Title"
128
+ config.add_show_field solr_name("desc_metadata__description", :stored_searchable, type: :string), :label => "Description"
129
+ config.add_show_field solr_name("desc_metadata__tag", :stored_searchable, type: :string), :label => "Keyword"
130
+ config.add_show_field solr_name("desc_metadata__subject", :stored_searchable, type: :string), :label => "Subject"
131
+ config.add_show_field solr_name("desc_metadata__creator", :stored_searchable, type: :string), :label => "Creator"
132
+ config.add_show_field solr_name("desc_metadata__contributor", :stored_searchable, type: :string), :label => "Contributor"
133
+ config.add_show_field solr_name("desc_metadata__publisher", :stored_searchable, type: :string), :label => "Publisher"
134
+ config.add_show_field solr_name("desc_metadata__based_near", :stored_searchable, type: :string), :label => "Location"
135
+ config.add_show_field solr_name("desc_metadata__language", :stored_searchable, type: :string), :label => "Language"
136
+ config.add_show_field solr_name("desc_metadata__date_uploaded", :stored_searchable, type: :string), :label => "Date Uploaded"
137
+ config.add_show_field solr_name("desc_metadata__date_modified", :stored_searchable, type: :string), :label => "Date Modified"
138
+ config.add_show_field solr_name("desc_metadata__date_created", :stored_searchable, type: :string), :label => "Date Created"
139
+ config.add_show_field solr_name("desc_metadata__rights", :stored_searchable, type: :string), :label => "Rights"
140
+ config.add_show_field solr_name("desc_metadata__resource_type", :stored_searchable, type: :string), :label => "Resource Type"
141
+ config.add_show_field solr_name("desc_metadata__format", :stored_searchable, type: :string), :label => "File Format"
142
+ config.add_show_field solr_name("desc_metadata__identifier", :stored_searchable, type: :string), :label => "Identifier"
168
143
 
169
144
  # "fielded" search configuration. Used by pulldown among other places.
170
145
  # For supported keys in hash, see rdoc for Blacklight::SearchFields
@@ -183,7 +158,15 @@ class CatalogController < ApplicationController
183
158
  # This one uses all the defaults set by the solr request handler. Which
184
159
  # solr request handler? The one set in config[:default_solr_parameters][:qt],
185
160
  # since we aren't specifying it otherwise.
186
- config.add_search_field 'all_fields', :label => 'All Fields', :include_in_advanced_search => false
161
+ config.add_search_field('all_fields', :label => 'All Fields', :include_in_advanced_search => false) do |field|
162
+ title_name = solr_name("desc_metadata__title", :stored_searchable, type: :string)
163
+ label_name = solr_name("desc_metadata__title", :stored_searchable, type: :string)
164
+ contributor_name = solr_name("desc_metadata__contributor", :stored_searchable, type: :string)
165
+ field.solr_parameters = {
166
+ :qf => "#{title_name} noid_tsi #{label_name} file_format_tesim #{contributor_name}",
167
+ :pf => "#{title_name}"
168
+ }
169
+ end
187
170
 
188
171
 
189
172
  # Now we see how to over-ride Solr request handler defaults, in this
@@ -199,17 +182,21 @@ class CatalogController < ApplicationController
199
182
  # syntax, as eg {! qf=$title_qf }. This is neccesary to use
200
183
  # Solr parameter de-referencing like $title_qf.
201
184
  # See: http://wiki.apache.org/solr/LocalParams
185
+ solr_name = solr_name("desc_metadata__contributor", :stored_searchable, type: :string)
202
186
  field.solr_local_parameters = {
203
- :qf => "desc_metadata__contributor_t",
204
- :pf => "desc_metadata__contributor_t"
187
+ :qf => solr_name,
188
+ :pf => solr_name
205
189
  }
206
190
  end
207
191
 
192
+
193
+
208
194
  config.add_search_field('creator') do |field|
209
195
  field.solr_parameters = { :"spellcheck.dictionary" => "creator" }
196
+ solr_name = solr_name("desc_metadata__creator", :stored_searchable, type: :string)
210
197
  field.solr_local_parameters = {
211
- :qf => "desc_metadata__creator_t",
212
- :pf => "desc_metadata__creator_t"
198
+ :qf => solr_name,
199
+ :pf => solr_name
213
200
  }
214
201
  end
215
202
 
@@ -217,9 +204,10 @@ class CatalogController < ApplicationController
217
204
  field.solr_parameters = {
218
205
  :"spellcheck.dictionary" => "title"
219
206
  }
207
+ solr_name = solr_name("desc_metadata__title", :stored_searchable, type: :string)
220
208
  field.solr_local_parameters = {
221
- :qf => "desc_metadata__title_t",
222
- :pf => "desc_metadata__title_t"
209
+ :qf => solr_name,
210
+ :pf => solr_name
223
211
  }
224
212
  end
225
213
 
@@ -228,9 +216,10 @@ class CatalogController < ApplicationController
228
216
  field.solr_parameters = {
229
217
  :"spellcheck.dictionary" => "description"
230
218
  }
219
+ solr_name = solr_name("desc_metadata__description", :stored_searchable, type: :string)
231
220
  field.solr_local_parameters = {
232
- :qf => "desc_metadata__description_t",
233
- :pf => "desc_metadata__description_t"
221
+ :qf => solr_name,
222
+ :pf => solr_name
234
223
  }
235
224
  end
236
225
 
@@ -238,9 +227,10 @@ class CatalogController < ApplicationController
238
227
  field.solr_parameters = {
239
228
  :"spellcheck.dictionary" => "publisher"
240
229
  }
230
+ solr_name = solr_name("desc_metadata__publisher", :stored_searchable, type: :string)
241
231
  field.solr_local_parameters = {
242
- :qf => "desc_metadata__publisher_t",
243
- :pf => "desc_metadata__publisher_t"
232
+ :qf => solr_name,
233
+ :pf => solr_name
244
234
  }
245
235
  end
246
236
 
@@ -248,9 +238,10 @@ class CatalogController < ApplicationController
248
238
  field.solr_parameters = {
249
239
  :"spellcheck.dictionary" => "date_created"
250
240
  }
241
+ solr_name = solr_name("desc_metadata__created", :stored_searchable, type: :string)
251
242
  field.solr_local_parameters = {
252
- :qf => "desc_metadata__date_created_t",
253
- :pf => "desc_metadata__date_created_t"
243
+ :qf => solr_name,
244
+ :pf => solr_name
254
245
  }
255
246
  end
256
247
 
@@ -258,9 +249,10 @@ class CatalogController < ApplicationController
258
249
  field.solr_parameters = {
259
250
  :"spellcheck.dictionary" => "subject"
260
251
  }
252
+ solr_name = solr_name("desc_metadata__subject", :stored_searchable, type: :string)
261
253
  field.solr_local_parameters = {
262
- :qf => "desc_metadata__subject_t",
263
- :pf => "desc_metadata__subject_t"
254
+ :qf => solr_name,
255
+ :pf => solr_name
264
256
  }
265
257
  end
266
258
 
@@ -268,9 +260,10 @@ class CatalogController < ApplicationController
268
260
  field.solr_parameters = {
269
261
  :"spellcheck.dictionary" => "language"
270
262
  }
263
+ solr_name = solr_name("desc_metadata__language", :stored_searchable, type: :string)
271
264
  field.solr_local_parameters = {
272
- :qf => "desc_metadata__language_t",
273
- :pf => "desc_metadata__language_t"
265
+ :qf => solr_name,
266
+ :pf => solr_name
274
267
  }
275
268
  end
276
269
 
@@ -278,9 +271,10 @@ class CatalogController < ApplicationController
278
271
  field.solr_parameters = {
279
272
  :"spellcheck.dictionary" => "resource_type"
280
273
  }
274
+ solr_name = solr_name("desc_metadata__resource_type", :stored_searchable, type: :string)
281
275
  field.solr_local_parameters = {
282
- :qf => "desc_metadata__resource_type_t",
283
- :pf => "desc_metadata__resource_type_t"
276
+ :qf => solr_name,
277
+ :pf => solr_name
284
278
  }
285
279
  end
286
280
 
@@ -289,9 +283,10 @@ class CatalogController < ApplicationController
289
283
  field.solr_parameters = {
290
284
  :"spellcheck.dictionary" => "format"
291
285
  }
286
+ solr_name = solr_name("desc_metadata__format", :stored_searchable, type: :string)
292
287
  field.solr_local_parameters = {
293
- :qf => "file_format_t",
294
- :pf => "file_format_t"
288
+ :qf => solr_name,
289
+ :pf => solr_name
295
290
  }
296
291
  end
297
292
 
@@ -300,9 +295,10 @@ class CatalogController < ApplicationController
300
295
  field.solr_parameters = {
301
296
  :"spellcheck.dictionary" => "identifier"
302
297
  }
298
+ solr_name = solr_name("desc_metadata__id", :stored_searchable, type: :string)
303
299
  field.solr_local_parameters = {
304
- :qf => "id_t",
305
- :pf => "id_t"
300
+ :qf => solr_name,
301
+ :pf => solr_name
306
302
  }
307
303
  end
308
304
 
@@ -311,9 +307,10 @@ class CatalogController < ApplicationController
311
307
  field.solr_parameters = {
312
308
  :"spellcheck.dictionary" => "based_near"
313
309
  }
310
+ solr_name = solr_name("desc_metadata__based_near", :stored_searchable, type: :string)
314
311
  field.solr_local_parameters = {
315
- :qf => "desc_metadata__based_near_t",
316
- :pf => "desc_metadata__based_near_t"
312
+ :qf => solr_name,
313
+ :pf => solr_name
317
314
  }
318
315
  end
319
316
 
@@ -321,39 +318,68 @@ class CatalogController < ApplicationController
321
318
  field.solr_parameters = {
322
319
  :"spellcheck.dictionary" => "tag"
323
320
  }
321
+ solr_name = solr_name("desc_metadata__tag", :stored_searchable, type: :string)
324
322
  field.solr_local_parameters = {
325
- :qf => "desc_metadata__tag_t",
326
- :pf => "desc_metadata__tag_t"
323
+ :qf => solr_name,
324
+ :pf => solr_name
327
325
  }
328
326
  end
329
327
 
330
328
  config.add_search_field('depositor') do |field|
329
+ solr_name = solr_name("desc_metadata__depositor", :stored_searchable, type: :string)
331
330
  field.solr_local_parameters = {
332
- :qf => "depositor_t",
333
- :pf => "depositor_t"
331
+ :qf => solr_name,
332
+ :pf => solr_name
334
333
  }
335
334
  end
336
335
 
337
336
  config.add_search_field('rights') do |field|
337
+ solr_name = solr_name("desc_metadata__rights", :stored_searchable, type: :string)
338
338
  field.solr_local_parameters = {
339
- :qf => "desc_metadata__rights_t",
340
- :pf => "desc_metadata__rights_t"
339
+ :qf => solr_name,
340
+ :pf => solr_name
341
341
  }
342
342
  end
343
343
 
344
+
344
345
  # "sort results by" select (pulldown)
345
346
  # label in pulldown is followed by the name of the SOLR field to sort by and
346
347
  # whether the sort is ascending or descending (it must be asc or desc
347
348
  # except in the relevancy case).
348
349
  # label is key, solr field is value
349
- config.add_sort_field 'score desc, desc_metadata__date_uploaded_dt desc', :label => "relevance \u25BC"
350
- config.add_sort_field 'desc_metadata__date_uploaded_dt desc', :label => "date uploaded \u25BC"
351
- config.add_sort_field 'desc_metadata__date_uploaded_dt asc', :label => "date uploaded \u25B2"
352
- config.add_sort_field 'desc_metadata__date_modified_dt desc', :label => "date modified \u25BC"
353
- config.add_sort_field 'desc_metadata__date_modified_dt asc', :label => "date modified \u25B2"
350
+ config.add_sort_field "score desc, #{uploaded_field} desc", :label => "relevance \u25BC"
351
+ config.add_sort_field "#{uploaded_field} desc", :label => "date uploaded \u25BC"
352
+ config.add_sort_field "#{uploaded_field} asc", :label => "date uploaded \u25B2"
353
+ config.add_sort_field "#{modified_field} desc", :label => "date modified \u25BC"
354
+ config.add_sort_field "#{modified_field} asc", :label => "date modified \u25B2"
354
355
 
355
356
  # If there are more than this many search results, no spelling ("did you
356
357
  # mean") suggestion is offered.
357
358
  config.spell_max = 5
358
359
  end
360
+
361
+ protected
362
+
363
+ # Limits search results just to GenericFiles
364
+ # @param solr_parameters the current solr parameters
365
+ # @param user_parameters the current user-subitted parameters
366
+ def exclude_unwanted_models(solr_parameters, user_parameters)
367
+ solr_parameters[:fq] ||= []
368
+ solr_parameters[:fq] << "#{Solrizer.solr_name("has_model", :symbol)}:\"info:fedora/afmodel:GenericFile\""
369
+ end
370
+
371
+ def depositor
372
+ #Hydra.config[:permissions][:owner] maybe it should match this config variable, but it doesn't.
373
+ Solrizer.solr_name('depositor', :stored_searchable, type: :string)
374
+ end
375
+
376
+ def filter_not_mine
377
+ "{!lucene q.op=AND df=#{depositor}}-#{current_user.user_key}"
378
+ end
379
+
380
+ def sort_field
381
+ "#{Solrizer.solr_name('system_create', :sortable)} desc"
382
+ end
383
+
384
+
359
385
  end