sufia 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,180 +0,0 @@
1
- <h2>Individual Titles <small>(applied to individual files uploaded)</small><small class="pull-right"><span class="error">*</span> indicates required fields</small> </h2>
2
- <div id="" class="well">
3
- <p>
4
- <i class="icon-info-sign"></i> Filename will be the default title. Please provide a more meaningful title, and filenames will still be preserved by the system.
5
- </p>
6
- <div class="row">
7
- <div class="span60">
8
- <% @batch.generic_files.sort! { |a,b| a.label.downcase <=> b.label.downcase }.each_with_index do |gen_f, index| %>
9
- <div class="control-group">
10
- <%= f.label :title, "<span class='error'>*</span> Title #{index+1}".html_safe, :class=>"control-label" %>
11
- <div class="controls" id="additional_title_clone">
12
- <%= f.text_field :title, :name=>"title[#{gen_f.id}][]", :value=>gen_f.label, :required=> true %>
13
- <%= help_icon(:title) %>
14
- </div>
15
- </div>
16
- <% end %>
17
- </div>
18
-
19
- <div class="span40">
20
- <!-- put metadata about file being edited here -->
21
- </div>
22
- </div>
23
- </div>
24
-
25
- <%= hidden_field_tag(:extra_description_count, "1") %>
26
- <div id="descriptions_display">
27
- <h2 class="non lower">Bulk Descriptions <small>(applied to all files just uploaded)</small> <small class="pull-right"><span class="error">*</span> indicates required fields</small></h2>
28
- <div class="well">
29
- <div class="control-group" id="resources">
30
- <%# See if this works: render_edit_field_partial(:type, f:f) %>
31
- <%= f.label :resource_type, "Resource Types", :class=>"control-label", :for=>"resource_type" %>
32
- <div class="controls">
33
- <p class="help-block">You may select multiple types to apply to all files<p>
34
- <%= f.select "resource_type", Sufia::Engine::config.resource_types, {}, {:multiple=>true, :size=>7} %>
35
- <%= help_icon(:resource_type) %>
36
- </div>
37
- </div>
38
-
39
- <div class="control-group">
40
- <%= f.label :tag, "<span class='error'>*</span> Keyword".html_safe, :class=>"control-label" %>
41
- <div class="controls" id="additional_tag_clone">
42
- <%= f.text_field :tag, :name=>"generic_file[tag][]", :value=>"", :required=> true %>
43
- <button class="adder btn" name="additional_tag" id="additional_tag_submit">+<span class="accessible-hidden">add another Tag</span></button>
44
- &nbsp;
45
- <%= help_icon(:tag) %>
46
- </div>
47
- <div id="additional_tag_elements"></div>
48
- </div>
49
-
50
- <div class="control-group">
51
- <%= f.label :creator, "<span class='error'>*</span> Creator".html_safe, :class=>"control-label" %>
52
- <div class="controls" id="additional_creator_clone">
53
- <%= f.text_field :creator, :name=>"generic_file[creator][]", :value=>"", :required=> true %>
54
- <button class="adder btn" name="additional_creator" id="additional_creator_submit">+<span class="accessible-hidden">add another Creator</span></button>
55
- &nbsp;
56
- <%= help_icon(:creator) %>
57
- </div>
58
- <div id="additional_creator_elements"></div>
59
- </div>
60
-
61
- <div class="control-group">
62
- <%= f.label :rights, '<span class="error">*</span> Rights'.html_safe, :class=>"control-label" %>
63
- <div class="controls" id="additional_rights_clone">
64
- <%= f.select "rights", options_for_select(Sufia::Engine::config.cc_licenses, 'http://creativecommons.org/licenses/by-nc-nd/3.0/us/'), :required => true %>
65
- <button class="adder btn" name="additional_rights" id="additional_rights_submit">+<span class="accessible-hidden">add another Rights</span></button>
66
- &nbsp;
67
- <%= help_icon(:rights) %>
68
- <%= render :partial => "generic_files/rights_modal" %>
69
-
70
- </div>
71
- <div id="additional_rights_elements"></div>
72
- </div>
73
-
74
- <div class="row" id="add_descriptions">
75
- <a href="#" id="add_descriptions" >Add More Description Types</a>
76
- </div>
77
- <!-- hidden on initial load -->
78
-
79
- <div class="hide" id="more_descriptions">
80
- <div class="control-group">
81
- <%= f.label :related_url, "Related URL", :class=>"control-label" %>
82
- <div class="controls" id="additional_related_url_clone">
83
- <%= f.text_field :related_url, :name=>"generic_file[related_url][]", :value=>"" %>
84
- <button class="adder btn" name="additional_related_url" id="additional_related_url_submit">+<span class="accessible-hidden">add another Related URL</span></button>
85
- &nbsp;
86
- <%= help_icon(:related_url) %>
87
- </div>
88
- <div id="additional_related_url_elements"></div>
89
- </div>
90
-
91
- <div class="control-group">
92
- <%= f.label :based_near, 'Location', :class=>"control-label" %>
93
- <div class="controls" id="additional_based_near_clone">
94
- <%= f.text_field :based_near, :name=>"generic_file[based_near][]", :value=>"" %>
95
- <button class="adder btn" name="additional_based_near" id="additional_based_near_submit">+<span class="accessible-hidden">add another Location</span></button>
96
- &nbsp;
97
- <%= help_icon(:based_near) %>
98
- </div>
99
- <div id="additional_based_near_elements"></div>
100
- </div>
101
-
102
- <div class="control-group">
103
- <%= f.label :contributor, :class=>"control-label" %>
104
- <div class="controls" id="additional_contributor_clone">
105
- <%= f.text_field :contributor, :name=>"generic_file[contributor][]", :value=>gf.contributor[0] %>
106
- <button class="adder btn" name="additional_contributor" id="additional_contributor_submit">+<span class="accessible-hidden">add another Contributor</span></button>
107
- &nbsp;
108
- <%= help_icon(:contributor) %>
109
- </div>
110
- <div id="additional_contributor_elements"></div>
111
- </div>
112
-
113
- <div class="control-group">
114
- <%= f.label :date_created, "Date Created", :class=>"control-label" %>
115
- <div class="controls" id="additional_date_created_clone">
116
- <%= f.text_field :date_created, :name=>"generic_file[date_created][]", :value=>"" %>
117
- <button class="adder btn" name="additional_date_created" id="additional_date_created_submit">+<span class="accessible-hidden">add another Date Created</span></button>
118
- &nbsp;
119
- <%= help_icon(:date_created) %>
120
- </div>
121
- <div id="additional_date_created_elements"></div>
122
- </div>
123
-
124
- <div class="control-group">
125
- <%= f.label :description, "Abstract or Summary", :class=>"control-label" %>
126
- <div class="controls" id="additional_description_clone">
127
- <%= f.text_area :description, :name=>"generic_file[description][]", :value=>"" %>
128
- <button class="adder btn" name="additional_description" id="additional_description_submit">+<span class="accessible-hidden">add another Abstract or Summary</span></button>
129
- &nbsp;
130
- <%= help_icon(:description) %>
131
- </div>
132
- <div id="additional_description_elements"></div>
133
- </div>
134
-
135
- <div class="control-group">
136
- <%= f.label :identifier, :class=>"control-label" %>
137
- <div class="controls" id="additional_identifier_clone">
138
- <%= f.text_field :identifier, :name=>"generic_file[identifier][]", :value=>"" %>
139
- <button class="adder btn" name="additional_identifier" id="additional_identifier_submit">+<span class="accessible-hidden">add another Identifier</span></button>
140
- &nbsp;
141
- <%= help_icon(:identifier) %>
142
- </div>
143
- <div id="additional_identifier_elements"></div>
144
- </div>
145
-
146
- <div class="control-group">
147
- <%= f.label :language, :class=>"control-label" %>
148
- <div class="controls" id="additional_language_clone">
149
- <%= f.text_field :language, :name=>"generic_file[language][]", :value=>"" %>
150
- <button class="adder btn" name="additional_language" id="additional_language_submit">+<span class="accessible-hidden">add another Language</span></button>
151
- &nbsp;
152
- <%= help_icon(:language) %>
153
- </div>
154
- <div id="additional_language_elements"></div>
155
- </div>
156
-
157
- <div class="control-group">
158
- <%= f.label :publisher, :class=>"control-label" %>
159
- <div class="controls" id="additional_publisher_clone">
160
- <%= f.text_field :publisher, :name=>"generic_file[publisher][]", :value=>"" %>
161
- <button class="adder btn" name="additional_publisher" id="additional_publisher_submit">+<span class="accessible-hidden">add another Publisher</span></button>
162
- &nbsp;
163
- <%= help_icon(:publisher) %>
164
- </div>
165
- <div id="additional_publisher_elements"></div>
166
- </div>
167
-
168
- <div class="control-group">
169
- <%= f.label :subject, :class=>"control-label" %>
170
- <div class="controls" id="additional_subject_clone">
171
- <%= f.text_field :subject, :name=>"generic_file[subject][]", :value=>"" %>
172
- <button class="adder btn" name="additional_subject" id="additional_subject_submit">+<span class="accessible-hidden">add another Subject</span></button>
173
- &nbsp;
174
- <%= help_icon(:subject) %>
175
- </div>
176
- <div id="additional_subject_elements"></div>
177
- </div>
178
- </div> <!-- /more_descriptions -->
179
- </div><!-- /well -->
180
- </div> <!-- /row /span6 -->
@@ -1,32 +0,0 @@
1
- # Copyright © 2012 The Pennsylvania State University
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- require "hydra"
16
-
17
- if Hydra.respond_to?(:configure)
18
- Hydra.configure(:shared) do |config|
19
-
20
- # This specifies the solr field names of permissions-related fields.
21
- # You only need to change these values if you've indexed permissions by some means other than the Hydra's built-in tooling.
22
- # If you change these, you must also update the permissions request handler in your solrconfig.xml to return those values
23
- config[:permissions] = {
24
- :catchall => "access_t",
25
- :discover => {:group =>"discover_access_group_t", :individual=>"discover_access_person_t"},
26
- :read => {:group =>"read_access_group_t", :individual=>"read_access_person_t"},
27
- :edit => {:group =>"edit_access_group_t", :individual=>"edit_access_person_t"},
28
- :owner => "depositor_t",
29
- :embargo_release_date => "embargo_release_date_dt"
30
- }
31
- end
32
- end
@@ -1,11 +0,0 @@
1
- # Monkey patch so that it uses the engine routes. See https://github.com/amatsuda/kaminari/issues/323
2
- module Kaminari
3
- module Helpers
4
- class Tag
5
- def page_url_for(page)
6
- #@template.url_for @params.merge(@param_name => (page <= 1 ? nil : page)).symbolize_keys
7
- Sufia::Engine.routes.url_helpers.url_for @params.merge(@param_name => (page <= 1 ? nil : page), :only_path=>true).symbolize_keys
8
- end
9
- end
10
- end
11
- end