sufia 4.0.0.rc2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +443 -621
  3. data/LICENSE.md +11 -174
  4. data/README.md +21 -7
  5. data/SUFIA_VERSION +1 -1
  6. data/app/assets/javascripts/sufia/batch.js +7 -2
  7. data/app/assets/javascripts/sufia/dashboard_actions.js +21 -10
  8. data/app/assets/javascripts/terms_of_service.js +1 -1
  9. data/app/assets/stylesheets/batch-edit.css.scss +21 -0
  10. data/app/assets/stylesheets/collections.css.scss +4 -0
  11. data/app/assets/stylesheets/home-page.css.scss +8 -1
  12. data/app/assets/stylesheets/styles.css.scss +8 -5
  13. data/app/assets/stylesheets/sufia.css.scss +1 -0
  14. data/app/builders/sufia/bootstrap_breadcrumbs_builder.rb +28 -0
  15. data/app/controllers/collections_controller.rb +2 -0
  16. data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +3 -1
  17. data/app/controllers/concerns/sufia/breadcrumbs.rb +41 -0
  18. data/app/controllers/concerns/sufia/files_controller_behavior.rb +3 -1
  19. data/app/controllers/concerns/sufia/homepage_controller.rb +1 -1
  20. data/app/helpers/sufia/blacklight_override.rb +1 -1
  21. data/app/helpers/sufia/records_helper_behavior.rb +19 -5
  22. data/app/helpers/sufia/sufia_helper_behavior.rb +13 -6
  23. data/app/models/concerns/sufia/solr_document_behavior.rb +4 -0
  24. data/app/views/_user_util_links.html.erb +4 -2
  25. data/app/views/batch/_metadata.html.erb +25 -31
  26. data/app/views/batch/_more_metadata.html.erb +6 -5
  27. data/app/views/batch/edit.html.erb +3 -3
  28. data/app/views/batch_edits/edit.html.erb +1 -1
  29. data/app/views/catalog/_search_form.html.erb +1 -3
  30. data/app/views/collections/_form_for_select_collection.html.erb +6 -3
  31. data/app/views/collections/_show_actions.html.erb +2 -2
  32. data/app/views/collections/edit.html.erb +1 -3
  33. data/app/views/collections/show.html.erb +1 -2
  34. data/app/views/generic_files/_field_form.html.erb +3 -3
  35. data/app/views/generic_files/_permission_form.html.erb +20 -3
  36. data/app/views/generic_files/edit.html.erb +1 -1
  37. data/app/views/generic_files/new.html.erb +8 -7
  38. data/app/views/generic_files/show.html.erb +1 -1
  39. data/app/views/generic_files/stats.html.erb +1 -1
  40. data/app/views/generic_files/upload/_form_fields.html.erb +4 -4
  41. data/app/views/homepage/_featured_fields.html.erb +20 -18
  42. data/app/views/homepage/_home_content.html.erb +8 -7
  43. data/app/views/homepage/_recent_document.html.erb +3 -4
  44. data/app/views/homepage/_recents.html.erb +4 -1
  45. data/app/views/homepage/_tagcloud.html.erb +5 -4
  46. data/app/views/kaminari/blacklight_compact/_paginator.html.erb +23 -0
  47. data/app/views/my/_action_menu.html.erb +15 -12
  48. data/app/views/my/_collection_action_menu.html.erb +8 -6
  49. data/app/views/my/_facets.html.erb +1 -1
  50. data/app/views/my/_index_partials/_default_group.html.erb +1 -1
  51. data/app/views/my/_index_partials/_list_collections.html.erb +12 -6
  52. data/app/views/my/_index_partials/_list_files.html.erb +14 -6
  53. data/app/views/my/index.html.erb +7 -2
  54. data/app/views/records/edit_fields/_suffix.html.erb +0 -1
  55. data/app/views/shared/_attributes.html.erb +6 -6
  56. data/app/views/users/_notify_link.html.erb +1 -0
  57. data/app/views/users/_notify_number.html.erb +3 -2
  58. data/config/locales/sufia.en.yml +24 -4
  59. data/lib/sufia.rb +2 -0
  60. data/lib/sufia/version.rb +1 -1
  61. data/spec/actors/generic_file/actor_spec.rb +21 -2
  62. data/spec/controllers/batch_controller_spec.rb +3 -3
  63. data/spec/controllers/batch_edits_controller_spec.rb +4 -0
  64. data/spec/controllers/catalog_controller_spec.rb +3 -3
  65. data/spec/controllers/collections_controller_spec.rb +5 -1
  66. data/spec/controllers/generic_files_controller_spec.rb +21 -4
  67. data/spec/controllers/homepage_controller_spec.rb +8 -1
  68. data/spec/features/browse_dashboard_files_spec.rb +1 -1
  69. data/spec/features/collection_spec.rb +3 -3
  70. data/spec/helpers/records_helper_spec.rb +53 -25
  71. data/spec/jobs/import_url_job_spec.rb +2 -1
  72. data/spec/lib/sufia/breadcrumbs_spec.rb +80 -0
  73. data/spec/lib/sufia/messages_spec.rb +8 -1
  74. data/spec/models/characterization_spec.rb +23 -0
  75. data/spec/models/fits_datastream_spec.rb +20 -23
  76. data/spec/support/features/session_helpers.rb +1 -1
  77. data/spec/views/catalog/index.html.erb_spec.rb +2 -0
  78. data/spec/views/generic_file/stats.html.erb_spec.rb +0 -6
  79. data/spec/views/users/show.html.erb_spec.rb +19 -0
  80. data/sufia-models/app/actors/sufia/generic_file/actor.rb +2 -1
  81. data/sufia-models/app/models/concerns/sufia/generic_file/characterization.rb +3 -4
  82. data/sufia-models/app/models/concerns/sufia/generic_file/full_text_indexing.rb +21 -14
  83. data/sufia-models/app/models/concerns/sufia/generic_file/mime_types.rb +4 -0
  84. data/sufia-models/app/models/file_usage.rb +6 -2
  85. data/sufia-models/lib/sufia/models/version.rb +1 -1
  86. data/sufia.gemspec +1 -0
  87. metadata +28 -9
  88. data/app/views/generic_files/_breadcrumbs.html.erb +0 -31
  89. data/spec/views/generic_file/_breadcrumbs.html.erb_spec.rb +0 -32
@@ -46,7 +46,8 @@ describe ImportUrlJob do
46
46
  it "should create a content datastream" do
47
47
  Net::HTTP.any_instance.should_receive(:request_get).with(file_path).and_yield(mock_response)
48
48
  job.run
49
- generic_file.reload.content.size.should == 4218
49
+ expect(generic_file.reload.content.size).to eq 4218
50
+ expect(generic_file.content.dsLabel).to eq file_path
50
51
  end
51
52
  end
52
53
 
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sufia::Breadcrumbs do
4
+
5
+ let(:crumbs) do
6
+ TestClass.new
7
+ end
8
+
9
+ let(:sufia) do
10
+ Sufia::Engine.routes.url_helpers
11
+ end
12
+
13
+ before do
14
+ class TestClass
15
+ attr_accessor :trail, :request
16
+ include Sufia::Breadcrumbs
17
+ def initialize
18
+ @trail = []
19
+ @request = true # avoids the allow_message_expectations_on_nil warning
20
+ end
21
+ def add_breadcrumb text, link
22
+ @trail << [text, link]
23
+ end
24
+ end
25
+ allow_any_instance_of(TestClass).to receive(:sufia).and_return(sufia)
26
+ end
27
+
28
+ describe "#default_trail" do
29
+ context "when the user is logged in" do
30
+ before do
31
+ crumbs.stub(:user_signed_in?) { true }
32
+ end
33
+ specify "the default trail is nil" do
34
+ expect(crumbs.default_trail).to eql([[I18n.t('sufia.dashboard.title'), sufia.dashboard_index_path]])
35
+ end
36
+ end
37
+ context "when there is no user" do
38
+ before do
39
+ crumbs.stub(:user_signed_in?) { false }
40
+ end
41
+ specify "the default trail is nil" do
42
+ expect(crumbs.default_trail).to be_nil
43
+ end
44
+ end
45
+ end
46
+
47
+ describe "#trail_from_referer" do
48
+ context "when coming from the catalog" do
49
+ let(:referer) { "http://...catalog/" }
50
+ before do
51
+ allow(crumbs.request).to receive(:referer).and_return(referer)
52
+ end
53
+ specify "the trail goes back to the search" do
54
+ expect(crumbs.trail_from_referer).to eql([[I18n.t('sufia.bread_crumb.search_results'), referer]])
55
+ end
56
+ end
57
+ context "when coming from the dashboard" do
58
+ before do
59
+ allow(crumbs.request).to receive(:referer).and_return("http://...dashboard/")
60
+ crumbs.stub(:user_signed_in?) { true }
61
+ end
62
+ specify "the trail goes back to the user's files" do
63
+ allow(crumbs).to receive(:controller_name).and_return("my/files")
64
+ expect(crumbs.trail_from_referer.first).to eql([I18n.t('sufia.dashboard.title'), sufia.dashboard_index_path])
65
+ expect(crumbs.trail_from_referer.last).to eql([I18n.t('sufia.dashboard.my.files'), sufia.dashboard_files_path])
66
+ end
67
+ specify "the trail goes back to the user's collections" do
68
+ allow(crumbs).to receive(:controller_name).and_return("my/collections")
69
+ expect(crumbs.trail_from_referer.first).to eql([I18n.t('sufia.dashboard.title'), sufia.dashboard_index_path])
70
+ expect(crumbs.trail_from_referer.last).to eql([I18n.t('sufia.dashboard.my.collections'), sufia.dashboard_collections_path])
71
+ end
72
+ specify "the trail goes back to the user's files when on the batch edit page" do
73
+ allow(crumbs).to receive(:controller_name).and_return("batch_edit")
74
+ expect(crumbs.trail_from_referer.first).to eql([I18n.t('sufia.dashboard.title'), sufia.dashboard_index_path])
75
+ expect(crumbs.trail_from_referer.last).to eql([I18n.t('sufia.dashboard.my.files'), sufia.dashboard_files_path])
76
+ end
77
+ end
78
+ end
79
+
80
+ end
@@ -3,10 +3,17 @@ require 'spec_helper'
3
3
  describe Sufia::Messages do
4
4
 
5
5
  let(:message) do
6
+ TestClass.new
7
+ end
8
+
9
+ before do
6
10
  class TestClass
7
11
  include Sufia::Messages
8
12
  end
9
- TestClass.new
13
+ end
14
+
15
+ after do
16
+ Object.send(:remove_const, :TestClass)
10
17
  end
11
18
 
12
19
  let(:batch_id) { "1" }
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sufia::GenericFile::Characterization do
4
+ before do
5
+ class TestClass < ActiveFedora::Base
6
+ include Sufia::GenericFile::Characterization
7
+
8
+ has_file_datastream 'content', type: FileContentDatastream
9
+ attr_accessor :title, :creator
10
+ end
11
+ end
12
+
13
+ after do
14
+ Object.send(:remove_const, :TestClass)
15
+ end
16
+
17
+ subject { TestClass.new }
18
+
19
+ it "should not depend on anything except a file datastream and some property accessors" do
20
+ expect { subject.characterize }.to_not raise_error
21
+ end
22
+
23
+ end
@@ -8,31 +8,28 @@ describe FitsDatastream, unless: $in_travis do
8
8
  @file.characterize
9
9
  end
10
10
  it "should have a format label" do
11
- @file.format_label.should == ["Portable Network Graphics"]
11
+ expect(@file.format_label).to eq ["Portable Network Graphics"]
12
12
  end
13
13
  it "should have a mime type" do
14
- @file.mime_type.should == "image/png"
14
+ expect(@file.mime_type).to eq "image/png"
15
15
  end
16
16
  it "should have a file size" do
17
- @file.file_size.should == ["4218"]
18
- end
19
- it "should have a file size" do
20
- @file.file_size.should == ["4218"]
17
+ expect(@file.file_size).to eq ["4218"]
21
18
  end
22
19
  it "should have a last modified timestamp" do
23
- @file.last_modified.should_not be_empty
20
+ expect(@file.last_modified).to_not be_empty
24
21
  end
25
22
  it "should have a filename" do
26
- @file.filename.should_not be_empty
23
+ expect(@file.filename).to_not be_empty
27
24
  end
28
25
  it "should have a checksum" do
29
- @file.original_checksum.should == ["28da6259ae5707c68708192a40b3e85c"]
26
+ expect(@file.original_checksum).to eq ["28da6259ae5707c68708192a40b3e85c"]
30
27
  end
31
28
  it "should have a height" do
32
- @file.height.should == ["50"]
29
+ expect(@file.height).to eq ["50"]
33
30
  end
34
31
  it "should have a width" do
35
- @file.width.should == ["50"]
32
+ expect(@file.width).to eq ["50"]
36
33
  end
37
34
  end
38
35
  describe "video" do
@@ -42,38 +39,38 @@ describe FitsDatastream, unless: $in_travis do
42
39
  @file.characterize
43
40
  end
44
41
  it "should have a format label" do
45
- @file.format_label.should == ["ISO Media, MPEG v4 system, version 2"]
42
+ expect(@file.format_label).to eq ["ISO Media, MPEG v4 system, version 2"]
46
43
  end
47
44
  it "should have a mime type" do
48
- @file.mime_type.should == "video/mp4"
45
+ expect(@file.mime_type).to eq "video/mp4"
49
46
  end
50
47
  it "should have a file size" do
51
- @file.file_size.should == ["245779"]
48
+ expect(@file.file_size).to eq ["245779"]
52
49
  end
53
50
  it "should have a last modified timestamp" do
54
- @file.last_modified.should_not be_empty
51
+ expect(@file.last_modified).to_not be_empty
55
52
  end
56
53
  it "should have a filename" do
57
- @file.filename.should_not be_empty
54
+ expect(@file.filename).to_not be_empty
58
55
  end
59
56
  it "should have a checksum" do
60
- @file.original_checksum.should == ["dc77a8de8c091c19d86df74280f6feb7"]
57
+ expect(@file.original_checksum).to eq ["dc77a8de8c091c19d86df74280f6feb7"]
61
58
  end
62
59
  it "should have a width" do
63
- @file.width.should == ["190"]
60
+ expect(@file.width).to eq ["190"]
64
61
  end
65
62
  it "should have a height" do
66
- @file.height.should == ["240"]
63
+ expect(@file.height).to eq ["240"]
67
64
  end
68
65
  it "should have a sample_rate" do
69
- @file.sample_rate.should == ["32000"]
66
+ expect(@file.sample_rate).to eq ["32000"]
70
67
  end
71
68
  it "should have a duration" do
72
- @file.duration.should == ["4.97 s"]
69
+ expect(@file.duration).to eq ["4.97 s"]
73
70
  end
74
71
  it "should have a frame_rate" do
75
- @file.frame_rate.count.should == 1
76
- @file.frame_rate[0].to_f.should == 30.0
72
+ expect(@file.frame_rate.count).to eq 1
73
+ expect(@file.frame_rate[0].to_f).to eq 30.0
77
74
  end
78
75
  end
79
76
  end
@@ -21,7 +21,7 @@ module Features
21
21
  visit new_user_session_path
22
22
  fill_in 'Email', with: user.email
23
23
  fill_in 'Password', with: user.password
24
- click_button 'Sign in'
24
+ click_button 'Log in'
25
25
  expect(page).to_not have_text 'Invalid email or password.'
26
26
  end
27
27
  end
@@ -29,6 +29,8 @@ describe 'catalog/index.html.erb' do
29
29
  it 'appears on page without error' do
30
30
  render
31
31
  expect(rendered).to include(@collection.title)
32
+ page = Capybara::Node::Simple.new(rendered)
33
+ expect(page).to have_selector("span.glyphicon.glyphicon-th.collection-icon-search")
32
34
  end
33
35
 
34
36
  end
@@ -33,12 +33,6 @@ describe 'generic_files/stats.html.erb' do
33
33
  assign(:stats, no_stats)
34
34
  end
35
35
 
36
- it 'shows breadcrumbs' do
37
- render
38
- page = Capybara::Node::Simple.new(rendered)
39
- expect(page).to have_selector('span.active', text: 'file1.txt')
40
- end
41
-
42
36
  context 'when no analytics results returned' do
43
37
  before do
44
38
  assign(:pageviews, 0)
@@ -28,4 +28,23 @@ describe 'users/show.html.erb' do
28
28
  render
29
29
  rendered.should match /Joined on #{join_date.strftime("%b %d, %Y")}/
30
30
  end
31
+
32
+ context "with trophy" do
33
+
34
+ let(:generic_file) { GenericFile.new(title: ["Fake object"], pid:"sufia:abc123") }
35
+ before do
36
+ allow(view).to receive(:search_session).and_return({})
37
+ allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
38
+ allow(view).to receive(:current_search_session).and_return(nil)
39
+ assign(:trophies, [generic_file])
40
+ end
41
+
42
+ it "should have trophy" do
43
+ render
44
+ page = Capybara::Node::Simple.new(rendered)
45
+ expect(page).to have_selector(".tab-content > div#contributions.tab-pane")
46
+ expect(page).to have_selector("#trophyrow_#{generic_file.noid}")
47
+
48
+ end
49
+ end
31
50
  end
@@ -28,7 +28,8 @@ module Sufia::GenericFile
28
28
  end
29
29
 
30
30
  def create_content(file, file_name, dsid)
31
- generic_file.add_file(file, dsid, file_name)
31
+ fname = generic_file.label.blank? ? file_name.truncate(255) : generic_file.label
32
+ generic_file.add_file(file, dsid, fname)
32
33
  save_characterize_and_record_committer do
33
34
  if Sufia.config.respond_to?(:after_create_content)
34
35
  Sufia.config.after_create_content.call(generic_file, user)
@@ -42,11 +42,10 @@ module Sufia
42
42
 
43
43
  ## Extract the metadata from the content datastream and record it in the characterization datastream
44
44
  def characterize
45
- metadata = self.content.extract_metadata
46
- self.characterization.ng_xml = metadata if metadata.present?
47
- self.append_metadata
45
+ metadata = content.extract_metadata
46
+ characterization.ng_xml = metadata if metadata.present?
47
+ append_metadata
48
48
  self.filename = [self.label]
49
- extract_content
50
49
  save
51
50
  end
52
51
 
@@ -7,21 +7,28 @@ module Sufia
7
7
  has_file_datastream 'full_text', versionable: false
8
8
  end
9
9
 
10
- def extract_content
11
- url = Blacklight.solr_config[:url] ? Blacklight.solr_config[:url] : Blacklight.solr_config["url"] ? Blacklight.solr_config["url"] : Blacklight.solr_config[:fulltext] ? Blacklight.solr_config[:fulltext]["url"] : Blacklight.solr_config[:default]["url"]
12
- uri = URI("#{url}/update/extract?extractOnly=true&wt=json&extractFormat=text")
13
- req = Net::HTTP.new(uri.host, uri.port)
14
- resp = req.post(uri.to_s, self.content.content, {
15
- 'Content-type' => "#{self.mime_type};charset=utf-8",
16
- 'Content-Length' => self.content.content.size.to_s
17
- })
18
- raise "URL '#{uri}' returned code #{resp.code}" unless resp.code == "200"
19
- self.content.content.rewind if self.content.content.respond_to?(:rewind)
20
- extracted_text = JSON.parse(resp.body)[''].rstrip
21
- full_text.content = extracted_text if extracted_text.present?
22
- rescue => e
23
- logger.error("Error extracting content from #{self.pid}: #{e.inspect}")
10
+ def append_metadata
11
+ super
12
+ extract_content
24
13
  end
14
+
15
+ private
16
+
17
+ def extract_content
18
+ url = Blacklight.solr_config[:url] ? Blacklight.solr_config[:url] : Blacklight.solr_config["url"] ? Blacklight.solr_config["url"] : Blacklight.solr_config[:fulltext] ? Blacklight.solr_config[:fulltext]["url"] : Blacklight.solr_config[:default]["url"]
19
+ uri = URI("#{url}/update/extract?extractOnly=true&wt=json&extractFormat=text")
20
+ req = Net::HTTP.new(uri.host, uri.port)
21
+ resp = req.post(uri.to_s, self.content.content, {
22
+ 'Content-type' => "#{self.mime_type};charset=utf-8",
23
+ 'Content-Length' => self.content.content.size.to_s
24
+ })
25
+ raise "URL '#{uri}' returned code #{resp.code}" unless resp.code == "200"
26
+ self.content.content.rewind if self.content.content.respond_to?(:rewind)
27
+ extracted_text = JSON.parse(resp.body)[''].rstrip
28
+ full_text.content = extracted_text if extracted_text.present?
29
+ rescue => e
30
+ logger.error("Error extracting content from #{self.pid}: #{e.inspect}")
31
+ end
25
32
  end
26
33
  end
27
34
  end
@@ -23,6 +23,10 @@ module Sufia
23
23
  self.class.office_document_mime_types.include? self.mime_type
24
24
  end
25
25
 
26
+ def collection?
27
+ false
28
+ end
29
+
26
30
  def file_format
27
31
  return nil if self.mime_type.blank? and self.format_label.blank?
28
32
  return self.mime_type.split('/')[1]+ " ("+self.format_label.join(", ")+")" unless self.mime_type.blank? or self.format_label.blank?
@@ -28,12 +28,16 @@ class FileUsage
28
28
 
29
29
  private
30
30
 
31
+ # Sufia::Download is sent to Sufia::Analytics.profile as #sufia__download
32
+ # see Legato::ProfileMethods.method_name_from_klass
31
33
  def download_statistics
32
- Sufia::Analytics.profile.download(sort: 'date').for_file(self.id)
34
+ Sufia::Analytics.profile.sufia__download(sort: 'date').for_file(self.id)
33
35
  end
34
36
 
37
+ # Sufia::Pageview is sent to Sufia::Analytics.profile as #sufia__pageview
38
+ # see Legato::ProfileMethods.method_name_from_klass
35
39
  def pageview_statistics
36
- Sufia::Analytics.profile.pageview(sort: 'date').for_path(self.path)
40
+ Sufia::Analytics.profile.sufia__pageview(sort: 'date').for_path(self.path)
37
41
  end
38
42
 
39
43
  def pageviews_to_flot values = Array.new
@@ -1,5 +1,5 @@
1
1
  module Sufia
2
2
  module Models
3
- VERSION = "4.0.0.rc2"
3
+ VERSION = "4.0.0"
4
4
  end
5
5
  end
@@ -41,6 +41,7 @@ Gem::Specification.new do |gem|
41
41
  gem.add_dependency 'bootstrap_form', '~> 2.1'
42
42
  gem.add_dependency 'bootstrap-sass', '< 3.2'
43
43
  gem.add_dependency 'blacklight-gallery'
44
+ gem.add_dependency 'breadcrumbs_on_rails', '~>2.3.0'
44
45
 
45
46
  gem.add_development_dependency 'engine_cart'
46
47
  gem.add_development_dependency 'mida'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sufia
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.rc2
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-05 00:00:00.000000000 Z
12
+ date: 2014-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sufia-models
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 4.0.0.rc2
20
+ version: 4.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 4.0.0.rc2
27
+ version: 4.0.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: blacklight_advanced_search
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -269,6 +269,20 @@ dependencies:
269
269
  - - ">="
270
270
  - !ruby/object:Gem::Version
271
271
  version: '0'
272
+ - !ruby/object:Gem::Dependency
273
+ name: breadcrumbs_on_rails
274
+ requirement: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - "~>"
277
+ - !ruby/object:Gem::Version
278
+ version: 2.3.0
279
+ type: :runtime
280
+ prerelease: false
281
+ version_requirements: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - "~>"
284
+ - !ruby/object:Gem::Version
285
+ version: 2.3.0
272
286
  - !ruby/object:Gem::Dependency
273
287
  name: engine_cart
274
288
  requirement: !ruby/object:Gem::Requirement
@@ -481,6 +495,7 @@ files:
481
495
  - app/assets/javascripts/sufia/trophy.js
482
496
  - app/assets/javascripts/sufia/uploader.js
483
497
  - app/assets/javascripts/terms_of_service.js
498
+ - app/assets/stylesheets/batch-edit.css.scss
484
499
  - app/assets/stylesheets/catalog.css.scss
485
500
  - app/assets/stylesheets/collections.css.scss
486
501
  - app/assets/stylesheets/featured.css.scss
@@ -501,11 +516,13 @@ files:
501
516
  - app/assets/stylesheets/sufia.css.scss
502
517
  - app/assets/stylesheets/tagcloud.css
503
518
  - app/assets/stylesheets/usage-stats.css
519
+ - app/builders/sufia/bootstrap_breadcrumbs_builder.rb
504
520
  - app/controllers/authorities_controller.rb
505
521
  - app/controllers/batch_controller.rb
506
522
  - app/controllers/batch_edits_controller.rb
507
523
  - app/controllers/collections_controller.rb
508
524
  - app/controllers/concerns/sufia/batch_edits_controller_behavior.rb
525
+ - app/controllers/concerns/sufia/breadcrumbs.rb
509
526
  - app/controllers/concerns/sufia/catalog.rb
510
527
  - app/controllers/concerns/sufia/contact_form_controller_behavior.rb
511
528
  - app/controllers/concerns/sufia/controller.rb
@@ -642,7 +659,6 @@ files:
642
659
  - app/views/generic_files/_asset_permissions_denial_flash.html.erb
643
660
  - app/views/generic_files/_asset_saved_flash.html.erb
644
661
  - app/views/generic_files/_asset_updated_flash.html.erb
645
- - app/views/generic_files/_breadcrumbs.html.erb
646
662
  - app/views/generic_files/_browse_everything.html.erb
647
663
  - app/views/generic_files/_descriptions.html.erb
648
664
  - app/views/generic_files/_edit.js.erb
@@ -696,6 +712,7 @@ files:
696
712
  - app/views/kaminari/blacklight/_page.html.erb
697
713
  - app/views/kaminari/blacklight/_paginator.html.erb
698
714
  - app/views/kaminari/blacklight/_prev_page.html.erb
715
+ - app/views/kaminari/blacklight_compact/_paginator.html.erb
699
716
  - app/views/layouts/_head_tag_content.html.erb
700
717
  - app/views/layouts/error.html.erb
701
718
  - app/views/layouts/homepage.html.erb
@@ -891,6 +908,7 @@ files:
891
908
  - spec/jobs/import_url_job_spec.rb
892
909
  - spec/jobs/ingest_local_file_job_spec.rb
893
910
  - spec/lib/sufia/analytics_spec.rb
911
+ - spec/lib/sufia/breadcrumbs_spec.rb
894
912
  - spec/lib/sufia/id_service_spec.rb
895
913
  - spec/lib/sufia/messages_spec.rb
896
914
  - spec/lib/sufia/readable_permissions_spec.rb
@@ -898,6 +916,7 @@ files:
898
916
  - spec/lib/sufia/writable_permissions_spec.rb
899
917
  - spec/models/ability_spec.rb
900
918
  - spec/models/batch_spec.rb
919
+ - spec/models/characterization_spec.rb
901
920
  - spec/models/checksum_audit_log_spec.rb
902
921
  - spec/models/collection_spec.rb
903
922
  - spec/models/download_spec.rb
@@ -936,7 +955,6 @@ files:
936
955
  - spec/views/collections/_form.html.erb_spec.rb
937
956
  - spec/views/collections/_show_descriptions.html.erb_spec.rb
938
957
  - spec/views/dashboard/index_spec.rb
939
- - spec/views/generic_file/_breadcrumbs.html.erb_spec.rb
940
958
  - spec/views/generic_file/edit.html.erb_spec.rb
941
959
  - spec/views/generic_file/show.html.erb_spec.rb
942
960
  - spec/views/generic_file/stats.html.erb_spec.rb
@@ -1116,9 +1134,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1116
1134
  version: '0'
1117
1135
  required_rubygems_version: !ruby/object:Gem::Requirement
1118
1136
  requirements:
1119
- - - ">"
1137
+ - - ">="
1120
1138
  - !ruby/object:Gem::Version
1121
- version: 1.3.1
1139
+ version: '0'
1122
1140
  requirements: []
1123
1141
  rubyforge_project:
1124
1142
  rubygems_version: 2.2.2
@@ -1215,6 +1233,7 @@ test_files:
1215
1233
  - spec/jobs/import_url_job_spec.rb
1216
1234
  - spec/jobs/ingest_local_file_job_spec.rb
1217
1235
  - spec/lib/sufia/analytics_spec.rb
1236
+ - spec/lib/sufia/breadcrumbs_spec.rb
1218
1237
  - spec/lib/sufia/id_service_spec.rb
1219
1238
  - spec/lib/sufia/messages_spec.rb
1220
1239
  - spec/lib/sufia/readable_permissions_spec.rb
@@ -1222,6 +1241,7 @@ test_files:
1222
1241
  - spec/lib/sufia/writable_permissions_spec.rb
1223
1242
  - spec/models/ability_spec.rb
1224
1243
  - spec/models/batch_spec.rb
1244
+ - spec/models/characterization_spec.rb
1225
1245
  - spec/models/checksum_audit_log_spec.rb
1226
1246
  - spec/models/collection_spec.rb
1227
1247
  - spec/models/download_spec.rb
@@ -1260,7 +1280,6 @@ test_files:
1260
1280
  - spec/views/collections/_form.html.erb_spec.rb
1261
1281
  - spec/views/collections/_show_descriptions.html.erb_spec.rb
1262
1282
  - spec/views/dashboard/index_spec.rb
1263
- - spec/views/generic_file/_breadcrumbs.html.erb_spec.rb
1264
1283
  - spec/views/generic_file/edit.html.erb_spec.rb
1265
1284
  - spec/views/generic_file/show.html.erb_spec.rb
1266
1285
  - spec/views/generic_file/stats.html.erb_spec.rb