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
data/LICENSE.md CHANGED
@@ -1,177 +1,14 @@
1
+ Copyright 2012 Penn State University
2
+ Additional copyright may be held by others, as reflected in the commit history.
1
3
 
2
- Apache License
3
- Version 2.0, January 2004
4
- http://www.apache.org/licenses/
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
5
7
 
6
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
8
+ http://www.apache.org/licenses/LICENSE-2.0
7
9
 
8
- 1. Definitions.
9
-
10
- "License" shall mean the terms and conditions for use, reproduction,
11
- and distribution as defined by Sections 1 through 9 of this document.
12
-
13
- "Licensor" shall mean the copyright owner or entity authorized by
14
- the copyright owner that is granting the License.
15
-
16
- "Legal Entity" shall mean the union of the acting entity and all
17
- other entities that control, are controlled by, or are under common
18
- control with that entity. For the purposes of this definition,
19
- "control" means (i) the power, direct or indirect, to cause the
20
- direction or management of such entity, whether by contract or
21
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
- outstanding shares, or (iii) beneficial ownership of such entity.
23
-
24
- "You" (or "Your") shall mean an individual or Legal Entity
25
- exercising permissions granted by this License.
26
-
27
- "Source" form shall mean the preferred form for making modifications,
28
- including but not limited to software source code, documentation
29
- source, and configuration files.
30
-
31
- "Object" form shall mean any form resulting from mechanical
32
- transformation or translation of a Source form, including but
33
- not limited to compiled object code, generated documentation,
34
- and conversions to other media types.
35
-
36
- "Work" shall mean the work of authorship, whether in Source or
37
- Object form, made available under the License, as indicated by a
38
- copyright notice that is included in or attached to the work
39
- (an example is provided in the Appendix below).
40
-
41
- "Derivative Works" shall mean any work, whether in Source or Object
42
- form, that is based on (or derived from) the Work and for which the
43
- editorial revisions, annotations, elaborations, or other modifications
44
- represent, as a whole, an original work of authorship. For the purposes
45
- of this License, Derivative Works shall not include works that remain
46
- separable from, or merely link (or bind by name) to the interfaces of,
47
- the Work and Derivative Works thereof.
48
-
49
- "Contribution" shall mean any work of authorship, including
50
- the original version of the Work and any modifications or additions
51
- to that Work or Derivative Works thereof, that is intentionally
52
- submitted to Licensor for inclusion in the Work by the copyright owner
53
- or by an individual or Legal Entity authorized to submit on behalf of
54
- the copyright owner. For the purposes of this definition, "submitted"
55
- means any form of electronic, verbal, or written communication sent
56
- to the Licensor or its representatives, including but not limited to
57
- communication on electronic mailing lists, source code control systems,
58
- and issue tracking systems that are managed by, or on behalf of, the
59
- Licensor for the purpose of discussing and improving the Work, but
60
- excluding communication that is conspicuously marked or otherwise
61
- designated in writing by the copyright owner as "Not a Contribution."
62
-
63
- "Contributor" shall mean Licensor and any individual or Legal Entity
64
- on behalf of whom a Contribution has been received by Licensor and
65
- subsequently incorporated within the Work.
66
-
67
- 2. Grant of Copyright License. Subject to the terms and conditions of
68
- this License, each Contributor hereby grants to You a perpetual,
69
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
- copyright license to reproduce, prepare Derivative Works of,
71
- publicly display, publicly perform, sublicense, and distribute the
72
- Work and such Derivative Works in Source or Object form.
73
-
74
- 3. Grant of Patent License. Subject to the terms and conditions of
75
- this License, each Contributor hereby grants to You a perpetual,
76
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
- (except as stated in this section) patent license to make, have made,
78
- use, offer to sell, sell, import, and otherwise transfer the Work,
79
- where such license applies only to those patent claims licensable
80
- by such Contributor that are necessarily infringed by their
81
- Contribution(s) alone or by combination of their Contribution(s)
82
- with the Work to which such Contribution(s) was submitted. If You
83
- institute patent litigation against any entity (including a
84
- cross-claim or counterclaim in a lawsuit) alleging that the Work
85
- or a Contribution incorporated within the Work constitutes direct
86
- or contributory patent infringement, then any patent licenses
87
- granted to You under this License for that Work shall terminate
88
- as of the date such litigation is filed.
89
-
90
- 4. Redistribution. You may reproduce and distribute copies of the
91
- Work or Derivative Works thereof in any medium, with or without
92
- modifications, and in Source or Object form, provided that You
93
- meet the following conditions:
94
-
95
- (a) You must give any other recipients of the Work or
96
- Derivative Works a copy of this License; and
97
-
98
- (b) You must cause any modified files to carry prominent notices
99
- stating that You changed the files; and
100
-
101
- (c) You must retain, in the Source form of any Derivative Works
102
- that You distribute, all copyright, patent, trademark, and
103
- attribution notices from the Source form of the Work,
104
- excluding those notices that do not pertain to any part of
105
- the Derivative Works; and
106
-
107
- (d) If the Work includes a "NOTICE" text file as part of its
108
- distribution, then any Derivative Works that You distribute must
109
- include a readable copy of the attribution notices contained
110
- within such NOTICE file, excluding those notices that do not
111
- pertain to any part of the Derivative Works, in at least one
112
- of the following places: within a NOTICE text file distributed
113
- as part of the Derivative Works; within the Source form or
114
- documentation, if provided along with the Derivative Works; or,
115
- within a display generated by the Derivative Works, if and
116
- wherever such third-party notices normally appear. The contents
117
- of the NOTICE file are for informational purposes only and
118
- do not modify the License. You may add Your own attribution
119
- notices within Derivative Works that You distribute, alongside
120
- or as an addendum to the NOTICE text from the Work, provided
121
- that such additional attribution notices cannot be construed
122
- as modifying the License.
123
-
124
- You may add Your own copyright statement to Your modifications and
125
- may provide additional or different license terms and conditions
126
- for use, reproduction, or distribution of Your modifications, or
127
- for any such Derivative Works as a whole, provided Your use,
128
- reproduction, and distribution of the Work otherwise complies with
129
- the conditions stated in this License.
130
-
131
- 5. Submission of Contributions. Unless You explicitly state otherwise,
132
- any Contribution intentionally submitted for inclusion in the Work
133
- by You to the Licensor shall be under the terms and conditions of
134
- this License, without any additional terms or conditions.
135
- Notwithstanding the above, nothing herein shall supersede or modify
136
- the terms of any separate license agreement you may have executed
137
- with Licensor regarding such Contributions.
138
-
139
- 6. Trademarks. This License does not grant permission to use the trade
140
- names, trademarks, service marks, or product names of the Licensor,
141
- except as required for reasonable and customary use in describing the
142
- origin of the Work and reproducing the content of the NOTICE file.
143
-
144
- 7. Disclaimer of Warranty. Unless required by applicable law or
145
- agreed to in writing, Licensor provides the Work (and each
146
- Contributor provides its Contributions) on an "AS IS" BASIS,
147
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
- implied, including, without limitation, any warranties or conditions
149
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
- PARTICULAR PURPOSE. You are solely responsible for determining the
151
- appropriateness of using or redistributing the Work and assume any
152
- risks associated with Your exercise of permissions under this License.
153
-
154
- 8. Limitation of Liability. In no event and under no legal theory,
155
- whether in tort (including negligence), contract, or otherwise,
156
- unless required by applicable law (such as deliberate and grossly
157
- negligent acts) or agreed to in writing, shall any Contributor be
158
- liable to You for damages, including any direct, indirect, special,
159
- incidental, or consequential damages of any character arising as a
160
- result of this License or out of the use or inability to use the
161
- Work (including but not limited to damages for loss of goodwill,
162
- work stoppage, computer failure or malfunction, or any and all
163
- other commercial damages or losses), even if such Contributor
164
- has been advised of the possibility of such damages.
165
-
166
- 9. Accepting Warranty or Additional Liability. While redistributing
167
- the Work or Derivative Works thereof, You may choose to offer,
168
- and charge a fee for, acceptance of support, warranty, indemnity,
169
- or other liability obligations and/or rights consistent with this
170
- License. However, in accepting such obligations, You may act only
171
- on Your own behalf and on Your sole responsibility, not on behalf
172
- of any other Contributor, and only if You agree to indemnify,
173
- defend, and hold each Contributor harmless for any liability
174
- incurred by, or claims asserted against, such Contributor by reason
175
- of your accepting any such warranty or additional liability.
176
-
177
- END OF TERMS AND CONDITIONS
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
data/README.md CHANGED
@@ -1,12 +1,5 @@
1
1
  # Sufia [![Version](https://badge.fury.io/rb/sufia.png)](http://badge.fury.io/rb/sufia) [![Build Status](https://travis-ci.org/projecthydra/sufia.png?branch=master)](https://travis-ci.org/projecthydra/sufia) [![Dependency Status](https://gemnasium.com/projecthydra/sufia.png)](https://gemnasium.com/projecthydra/sufia)
2
2
 
3
- # Please Note!
4
- Sufia is currently in transition to a new 4.0 release scheduled for late summer 2014. If wish to use Sufia now,
5
- please ensure you using version 3.7.2, available from RubyGems.org. For documentation specific to this version,
6
- please consult the [Sufia 3.7.2 documentation](http://rubydoc.info/gems/sufia/3.7.2/frames).
7
-
8
- If you have questions or need help, please email `hydra-tech@googlegroups.com`
9
-
10
3
  ## What is Sufia?
11
4
  Sufia is a component that adds self-deposit institutional repository features to a Rails app.
12
5
  Sufia is created with Ruby on Rails and builds on the Hydra Framework.
@@ -41,6 +34,14 @@ Sufia has the following features:
41
34
  * Dynamically configurable featured works and researchers on homepage
42
35
  * Proxy deposit and transfers of ownership (coming soon!)
43
36
 
37
+ ## License
38
+
39
+ Sufia is available under [the Apache 2.0 license](LICENSE.md).
40
+
41
+ ## Contributing
42
+
43
+ We'd love to accept your contributions. Please see our guide to [contributing to Sufia](CONTRIBUTING.md).
44
+
44
45
  ## Sufia needs the following software to work:
45
46
  1. Solr
46
47
  1. [Fedora Commons](http://www.fedora-commons.org/) digital repository
@@ -51,6 +52,10 @@ Sufia has the following features:
51
52
 
52
53
  #### !! Ensure that you have all of the above components installed before you continue. !!
53
54
 
55
+ ## Need Help?
56
+
57
+ If you have questions or need help, please email [the Hydra community development list](mailto:hydra-tech@googlegroups.com).
58
+
54
59
  ## Creating an application
55
60
  ### Generate base Rails install
56
61
  ```rails new my_app```
@@ -227,6 +232,8 @@ See https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
227
232
  This information is for people who want to modify the engine itself, not an application that uses the engine:
228
233
 
229
234
  ### run the tests
235
+
236
+ ```
230
237
  rake clean spec
231
238
  ```
232
239
 
@@ -243,3 +250,10 @@ To change what happens to files that fail validation add an after_validation hoo
243
250
  end
244
251
  end
245
252
  ```
253
+
254
+ ## Acknowledgments
255
+
256
+ This software has been developed by and is brought to you by the Hydra community. Learn more at the
257
+ [Project Hydra website](http://projecthydra.org)
258
+
259
+ ![Project Hydra Logo](https://github.com/uvalib/libra-oa/blob/a6564a9e5c13b7873dc883367f5e307bf715d6cf/public/images/powered_by_hydra.png?raw=true)
@@ -1 +1 @@
1
- 4.0.0.rc2
1
+ 4.0.0
@@ -1,7 +1,12 @@
1
1
  Blacklight.onLoad(function() {
2
- $('#add_descriptions').click(function() {
2
+ $('#show_addl_descriptions').click(function() {
3
3
  $('#more_descriptions').show();
4
- $('#add_descriptions').hide();
4
+ $('#show_addl_descriptions').hide();
5
+ return false;
6
+ });
7
+ $('#hide_addl_descriptions').click(function() {
8
+ $('#more_descriptions').hide();
9
+ $('#show_addl_descriptions').show();
5
10
  return false;
6
11
  });
7
12
  $('#more_descriptions').hide();
@@ -9,18 +9,29 @@ Blacklight.onLoad(function() {
9
9
  }
10
10
  });
11
11
 
12
- // show/hide more information on the dashboard when clicking
12
+ function show_details(item) {
13
+ var button = $(this);
14
+ //button.id format: "expand_NNNNNNNNNN"
15
+ var array = item.id.split("expand_");
16
+ if (array.length > 1) {
17
+ var docId = array[1];
18
+ $("#detail_" + docId + " .expanded-details").slideToggle();
19
+ button.toggleClass('glyphicon-chevron-right glyphicon-chevron-down');
20
+ }
21
+ }
22
+
23
+ // show/hide more information on the dashboard when clicking
13
24
  // plus/minus
14
25
  $('.glyphicon-chevron-right').on('click', function() {
15
- var button = $(this);
16
- //this.id format: "expand_NNNNNNNNNN"
17
- var array = this.id.split("expand_");
18
- if (array.length > 1) {
19
- var docId = array[1];
20
- $("#detail_" + docId + " .expanded-details").slideToggle();
21
- button.toggleClass('glyphicon-chevron-right glyphicon-chevron-down');
22
- }
23
- return false;
26
+ show_details(this);
27
+ return false;
28
+ });
29
+
30
+ $('a').filter( function() {
31
+ return $(this).find('.glyphicon-chevron-right').length === 1;
32
+ }).on('click', function() {
33
+ show_details($(this).find(".glyphicon-chevron-right")[0]);
34
+ return false;
24
35
  });
25
36
 
26
37
  });
@@ -20,7 +20,7 @@ Blacklight.onLoad(function () {
20
20
  // if box is checked - enable submit, otherwise disable
21
21
  var disable = (bool) ? false : true;
22
22
  $('input[data-activate]').attr('checked', bool);
23
- $('.activate-submit').attr('disabled', disable);
23
+ $('.activate-submit').attr('disabled', disable).attr('aria-disabled', disable);
24
24
  })
25
25
 
26
26
  // show/hide the tooltip depending if the agreement is already checked
@@ -0,0 +1,21 @@
1
+ .help-icon {
2
+ @extend .glyphicon;
3
+ @extend .glyphicon-question-sign;
4
+ @extend .large-icon;
5
+ top: 5px;
6
+ }
7
+
8
+ .form-horizontal .batch-group {
9
+ @extend .form-group;
10
+ margin-left: 0px;
11
+ margin-right: 0px;
12
+ }
13
+
14
+ #hide_addl_descriptions {
15
+ margin-bottom: 10px;
16
+ }
17
+
18
+ #additional_title_clone {
19
+ padding-top: 5px;
20
+ }
21
+
@@ -22,6 +22,10 @@
22
22
  font-size: 10vw;
23
23
  }
24
24
 
25
+ .thumbnail {
26
+ text-align: center;
27
+ }
28
+
25
29
  .collection-icon-small {
26
30
  font-size: 2vw;
27
31
  }
@@ -47,4 +47,11 @@
47
47
 
48
48
  #home_content {
49
49
  padding: 2em 0;
50
- }
50
+ }
51
+
52
+ // When we put a hidden label before the main search field, bootstrap stops
53
+ // displaying rounded corners. This puts them back in.
54
+ #search-field-header {
55
+ border-top-left-radius: 4px;
56
+ border-bottom-left-radius: 4px;
57
+ }
@@ -18,9 +18,10 @@ body {
18
18
  background-image: linear-gradient(to bottom, #E1E1E1 0%, #FFFFFF 100%);
19
19
  }
20
20
 
21
- #page-positioner h1, #page-positioner h2, #page-positioner h3,
22
- #page-positioner h4, #page-positioner h5, #page-positioner h6 {
23
- font-family: 'Lato', Verdana, Arail, Helvetica, sans-serif;
21
+ #page-positioner {
22
+ h1, h2, h3, h4, h5, h6, .attribute-label {
23
+ font-family: 'Lato', Verdana, Arail, Helvetica, sans-serif;
24
+ }
24
25
  }
25
26
 
26
27
  #page-positioner {
@@ -31,8 +32,10 @@ body {
31
32
  font-weight: 300;
32
33
  }
33
34
 
34
- #page-positioner h3, #page-positioner h4 {
35
- font-weight: 400;
35
+ #page-positioner {
36
+ h3, h4, .attribute-label {
37
+ font-weight: 400;
38
+ }
36
39
  }
37
40
 
38
41
  .input-group {
@@ -23,6 +23,7 @@
23
23
  @import 'styles';
24
24
  @import 'file-listing';
25
25
  @import 'collections';
26
+ @import 'batch-edit';
26
27
 
27
28
  #browse-everything {
28
29
  top:10%;
@@ -0,0 +1,28 @@
1
+ # The BootstrapBreadcrumbsBuilder is a Bootstrap compatible breadcrumb builder.
2
+ # It provides basic functionalities to render a breadcrumb navigation according to Bootstrap's conventions.
3
+ #
4
+ # BootstrapBreadcrumbsBuilder accepts a limited set of options:
5
+ #
6
+ # You can use it with the :builder option on render_breadcrumbs:
7
+ # <%= render_breadcrumbs builder: Sufia::BootstrapBreadcrumbsBuilder %>
8
+ #
9
+ class Sufia::BootstrapBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
10
+ include ActionView::Helpers::OutputSafetyHelper
11
+ def render
12
+ if @elements.blank?
13
+ return ""
14
+ end
15
+
16
+ @context.content_tag(:ul, class: 'breadcrumb') do
17
+ safe_join(@elements.uniq.collect {|e| render_element(e)})
18
+ end
19
+ end
20
+
21
+ def render_element(element)
22
+ html_class = 'active' if @context.current_page?(compute_path(element))
23
+
24
+ @context.content_tag(:li, class: html_class) do
25
+ @context.link_to_unless_current(@context.truncate(compute_name(element), length: 30, separator: ' '), compute_path(element), element.options)
26
+ end
27
+ end
28
+ end
@@ -4,10 +4,12 @@ class CollectionsController < ApplicationController
4
4
  include Blacklight::Catalog::SearchContext
5
5
  include BlacklightAdvancedSearch::ParseBasicQ
6
6
  include BlacklightAdvancedSearch::Controller
7
+ include Sufia::Breadcrumbs
7
8
  prepend_before_filter :normalize_identifier, except: [:index, :create, :new]
8
9
  before_filter :filter_docs_with_read_access!, except: :show
9
10
  before_filter :has_access?, except: :show
10
11
  before_filter :initialize_fields_for_edit, only: [:edit, :new]
12
+ before_filter :build_breadcrumbs, only: [:edit, :show]
11
13
  CollectionsController.solr_search_params_logic += [:add_access_controls_to_solr_params]
12
14
 
13
15
  layout "sufia-one-column"
@@ -1,9 +1,11 @@
1
1
  module Sufia
2
2
  module BatchEditsControllerBehavior
3
3
  extend ActiveSupport::Concern
4
-
4
+ include Sufia::Breadcrumbs
5
+
5
6
  included do
6
7
  layout "sufia-one-column"
8
+ before_filter :build_breadcrumbs, only: :edit
7
9
  end
8
10
 
9
11
  def edit