sufia 3.6.1 → 3.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -4
- data/Gemfile +0 -3
- data/History.md +29 -0
- data/README.md +2 -4
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia.js +2 -20
- data/app/assets/javascripts/sufia/audio.js +28 -0
- data/app/assets/javascripts/sufia/single_use_link.js +35 -0
- data/app/assets/stylesheets/sufia-audio-overrides.css +9 -0
- data/app/assets/stylesheets/sufia.css.scss +1 -1
- data/app/assets/stylesheets/video-js.css +700 -433
- data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +0 -12
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +12 -18
- data/app/controllers/dashboard_controller.rb +1 -2
- data/app/helpers/sufia_helper.rb +6 -5
- data/app/helpers/trophy_helper.rb +1 -1
- data/app/views/catalog/_index_partials/_default_group.html.erb +1 -2
- data/app/views/catalog/_results_pagination.html.erb +3 -3
- data/app/views/catalog/index.html.erb +0 -3
- data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +2 -2
- data/app/views/dashboard/_results_pagination.html.erb +5 -21
- data/app/views/dashboard/facet.html.erb +1 -1
- data/app/views/dashboard/index.html.erb +5 -35
- data/app/views/generic_files/_media_display.html.erb +4 -4
- data/app/views/layouts/sufia-two-column.html.erb +0 -16
- data/app/views/users/_contributions.html.erb +20 -28
- data/app/views/users/_profile_actions.html.erb +8 -9
- data/config/routes.rb +7 -8
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/users_controller_spec.rb +51 -13
- data/spec/features/browse_files_spec.rb +14 -12
- data/spec/helpers/sufia_helper_spec.rb +21 -0
- data/spec/models/generic_file_spec.rb +24 -66
- data/spec/models/user_spec.rb +16 -4
- data/sufia-models/app/models/checksum_audit_log.rb +0 -1
- data/sufia-models/app/models/concerns/sufia/user.rb +6 -13
- data/sufia-models/app/models/domain_term.rb +1 -6
- data/sufia-models/app/models/local_authority.rb +2 -10
- data/sufia-models/app/models/local_authority_entry.rb +0 -1
- data/sufia-models/app/models/single_use_link.rb +1 -3
- data/sufia-models/app/models/trophy.rb +0 -2
- data/sufia-models/app/models/version_committer.rb +0 -1
- data/sufia-models/lib/sufia/models/engine.rb +0 -2
- data/sufia-models/lib/sufia/models/generic_file.rb +7 -0
- data/sufia-models/sufia-models.gemspec +3 -1
- data/sufia.gemspec +1 -1
- data/tasks/sufia-dev.rake +0 -1
- data/vendor/assets/javascripts/video.js +129 -4569
- metadata +22 -23
- data/sufia-models/lib/sufia/models/active_record/deprecated_attr_accessible.rb +0 -16
- data/sufia-models/lib/sufia/models/active_support/core_ext/marshal.rb +0 -22
- data/tasks/sufia.rake +0 -173
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sufia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sufia-models
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.
|
19
|
+
version: 3.7.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.
|
26
|
+
version: 3.7.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: blacklight_advanced_search
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: blacklight
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.5'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.5'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: hydra-batch-edit
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,20 +128,6 @@ dependencies:
|
|
114
128
|
- - '='
|
115
129
|
- !ruby/object:Gem::Version
|
116
130
|
version: 0.2.3
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: rainbow
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - '='
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: 1.1.4
|
124
|
-
type: :runtime
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - '='
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: 1.1.4
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: font-awesome-sass-rails
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -222,11 +222,13 @@ files:
|
|
222
222
|
- app/assets/images/ui-icons_ffffff_256x240.png
|
223
223
|
- app/assets/javascripts/contact_form.js
|
224
224
|
- app/assets/javascripts/sufia.js
|
225
|
+
- app/assets/javascripts/sufia/audio.js
|
225
226
|
- app/assets/javascripts/sufia/batch_select_all.js
|
226
227
|
- app/assets/javascripts/sufia/edit_metadata.js
|
227
228
|
- app/assets/javascripts/sufia/fileupload.js
|
228
229
|
- app/assets/javascripts/sufia/multiForm.js
|
229
230
|
- app/assets/javascripts/sufia/permissions.js
|
231
|
+
- app/assets/javascripts/sufia/single_use_link.js
|
230
232
|
- app/assets/javascripts/sufia/trophy.js
|
231
233
|
- app/assets/javascripts/sufia/uploader.js
|
232
234
|
- app/assets/javascripts/terms_of_service.js
|
@@ -244,6 +246,7 @@ files:
|
|
244
246
|
- app/assets/stylesheets/generic_files.css
|
245
247
|
- app/assets/stylesheets/jquery-ui.css
|
246
248
|
- app/assets/stylesheets/reset_body.css
|
249
|
+
- app/assets/stylesheets/sufia-audio-overrides.css
|
247
250
|
- app/assets/stylesheets/sufia.css.scss
|
248
251
|
- app/assets/stylesheets/trophy.css
|
249
252
|
- app/assets/stylesheets/video-js.css
|
@@ -640,9 +643,7 @@ files:
|
|
640
643
|
- sufia-models/lib/generators/sufia/models/templates/migrations/create_version_committers.rb
|
641
644
|
- sufia-models/lib/sufia/models.rb
|
642
645
|
- sufia-models/lib/sufia/models/active_fedora/redis.rb
|
643
|
-
- sufia-models/lib/sufia/models/active_record/deprecated_attr_accessible.rb
|
644
646
|
- sufia-models/lib/sufia/models/active_record/redis.rb
|
645
|
-
- sufia-models/lib/sufia/models/active_support/core_ext/marshal.rb
|
646
647
|
- sufia-models/lib/sufia/models/engine.rb
|
647
648
|
- sufia-models/lib/sufia/models/file_content.rb
|
648
649
|
- sufia-models/lib/sufia/models/file_content/versions.rb
|
@@ -685,7 +686,6 @@ files:
|
|
685
686
|
- tasks/release.rake
|
686
687
|
- tasks/sufia-db.rake
|
687
688
|
- tasks/sufia-dev.rake
|
688
|
-
- tasks/sufia.rake
|
689
689
|
- vendor/assets/fonts/Lato-Light.eot
|
690
690
|
- vendor/assets/fonts/Lato-Light.ttf
|
691
691
|
- vendor/assets/fonts/fontawesome-webfont.svg
|
@@ -734,7 +734,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
734
734
|
version: '0'
|
735
735
|
requirements: []
|
736
736
|
rubyforge_project:
|
737
|
-
rubygems_version: 2.1
|
737
|
+
rubygems_version: 2.2.1
|
738
738
|
signing_key:
|
739
739
|
specification_version: 4
|
740
740
|
summary: Sufia was extracted from ScholarSphere developed by Penn State University
|
@@ -832,4 +832,3 @@ test_files:
|
|
832
832
|
- spec/views/dashboard/index_partials/_thumbnail_display.html.erb_spec.rb
|
833
833
|
- spec/views/generic_file/edit.html.erb_spec.rb
|
834
834
|
- spec/views/users/show.html.erb_spec.rb
|
835
|
-
has_rdoc:
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module ActiveRecord
|
2
|
-
module DeprecatedAttrAccessible
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
module ClassMethods
|
5
|
-
def deprecated_attr_accessible(*args)
|
6
|
-
if Rails::VERSION::MAJOR < 4 || defined?(ProtectedAttributes)
|
7
|
-
ActiveSupport::Deprecation.warn("deprecated_attr_accessible is, wait for it, deprecated. It will be removed when Sufia stops support Rails 3.")
|
8
|
-
attr_accessible(*args)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
ActiveRecord::Base.class_eval do
|
15
|
-
include ActiveRecord::DeprecatedAttrAccessible
|
16
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
### This patch is going into active-support (rails 4). https://github.com/rails/rails/pull/8246
|
2
|
-
module Marshal
|
3
|
-
class << self
|
4
|
-
def load_with_autoloading(source)
|
5
|
-
begin
|
6
|
-
load_without_autoloading(source)
|
7
|
-
rescue ArgumentError, NameError => exc
|
8
|
-
if exc.message.match(%r|undefined class/module (.+)|)
|
9
|
-
# try loading the class/module
|
10
|
-
$1.constantize
|
11
|
-
# if it is a IO we need to go back to read the object
|
12
|
-
source.rewind if source.respond_to?(:rewind)
|
13
|
-
retry
|
14
|
-
else
|
15
|
-
raise exc
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
alias_method_chain :load, :autoloading
|
21
|
-
end
|
22
|
-
end
|
data/tasks/sufia.rake
DELETED
@@ -1,173 +0,0 @@
|
|
1
|
-
require 'rdf'
|
2
|
-
require 'rdf/rdfxml'
|
3
|
-
require 'rubygems'
|
4
|
-
require 'action_view'
|
5
|
-
require 'rainbow'
|
6
|
-
include ActionView::Helpers::NumberHelper
|
7
|
-
|
8
|
-
namespace :sufia do
|
9
|
-
desc "Restore missing user accounts"
|
10
|
-
task :restore_users => :environment do
|
11
|
-
# Query Solr for unique depositors
|
12
|
-
terms_url = "#{ActiveFedora.solr_config[:url]}/terms?terms.fl=depositor_t&terms.sort=index&terms.limit=5000&wt=json&omitHeader=true"
|
13
|
-
# Parse JSON response (looks like {"terms":{"depositor_t":["mjg36",3]}})
|
14
|
-
terms_json = open(terms_url).read
|
15
|
-
depositor_logins = JSON.parse(terms_json)['terms']['depositor_t'] rescue []
|
16
|
-
# Filter out doc counts, and leave logins
|
17
|
-
depositor_logins.select! { |item| item.is_a? String }
|
18
|
-
# Check for depositor User accounts & restore/populate if missing
|
19
|
-
depositor_logins.each { |l| User.create(login: l).populate_attributes if User.find_by_login(l).nil? }
|
20
|
-
# Then iterate over other User accounts and populate their attributes just in case
|
21
|
-
User.all.each do |u|
|
22
|
-
# Skip user if already populated earlier
|
23
|
-
next if depositor_logins.include? u.login
|
24
|
-
u.populate_attributes
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
desc "Report users quota in SS"
|
29
|
-
task :quota_report => :environment do
|
30
|
-
caution_sz = 3000000000 # 3GB
|
31
|
-
warning_sz = 5000000000 # 5GB
|
32
|
-
problem_sz = 10000000000 # 10GB
|
33
|
-
# loop over users in active record
|
34
|
-
users = {}
|
35
|
-
User.all.each do |u|
|
36
|
-
# for each user query get list of documents
|
37
|
-
user_files = GenericFile.find( :depositor_t => u.login )
|
38
|
-
# sum the size of the users docs
|
39
|
-
sz = 0
|
40
|
-
user_files.each do |f|
|
41
|
-
#puts number_to_human_size(f.file_size.first.to_i)
|
42
|
-
sz += f.file_size.first.to_i
|
43
|
-
#puts "#{sz}:#{f.file_size.first}"
|
44
|
-
end
|
45
|
-
uname = "#{u.login} #{u.name}"
|
46
|
-
users = users.merge(uname => sz)
|
47
|
-
end
|
48
|
-
longest_key = users.keys.max { |a,b| a.length <=> b.length }
|
49
|
-
printf "%-#{longest_key.length}s %s".background(:white).foreground(:black), "User", "Space Used"
|
50
|
-
puts ""
|
51
|
-
users.each_pair do |k,v|
|
52
|
-
if v >= problem_sz
|
53
|
-
printf "%-#{longest_key.length}s %s".background(:red).foreground(:white).blink, k, number_to_human_size(v)
|
54
|
-
elsif v >= warning_sz
|
55
|
-
printf "%-#{longest_key.length}s %s".background(:red).foreground(:white), k, number_to_human_size(v)
|
56
|
-
elsif v >= caution_sz
|
57
|
-
printf "%-#{longest_key.length}s %s".background(:yellow).foreground(:black), k, number_to_human_size(v)
|
58
|
-
else
|
59
|
-
printf "%-#{longest_key.length}s %s".background(:black).foreground(:white), k, number_to_human_size(v)
|
60
|
-
end
|
61
|
-
puts ""
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
desc "(Re-)Generate the secret token"
|
67
|
-
task :generate_secret => :environment do
|
68
|
-
include ActiveSupport
|
69
|
-
File.open("#{Rails.root}/config/initializers/secret_token.rb", 'w') do |f|
|
70
|
-
f.puts "#{Rails.application.class.parent_name}::Application.config.secret_token = '#{SecureRandom.hex(64)}'"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
desc "Characterize uncharacterized files"
|
75
|
-
task :characterize => :environment do
|
76
|
-
GenericFile.find(:all, :rows => GenericFile.count).each do |gf|
|
77
|
-
if gf.characterization.content.nil?
|
78
|
-
Resque.enqueue(CharacterizeJob, gf.pid)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
desc "Characterize uncharacterized files"
|
84
|
-
task :characterize! => :environment do
|
85
|
-
GenericFile.find(:all, :rows => GenericFile.count).each do |gf|
|
86
|
-
Resque.enqueue(CharacterizeJob, gf.pid)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
desc "Re-solrize all objects"
|
91
|
-
task :resolrize => ['solr:reindex']
|
92
|
-
|
93
|
-
namespace :export do
|
94
|
-
desc "Dump metadata as RDF/XML for e.g. Summon integration"
|
95
|
-
task :rdfxml => :environment do
|
96
|
-
raise "rake sufia:export:rdfxml output=FILE" unless ENV['output']
|
97
|
-
export_file = ENV['output']
|
98
|
-
triples = RDF::Repository.new
|
99
|
-
rows = GenericFile.count
|
100
|
-
GenericFile.find(:all, :rows => rows).each do |gf|
|
101
|
-
next unless gf.rightsMetadata.groups["public"] == "read" && gf.descMetadata.content
|
102
|
-
RDF::Reader.for(:ntriples).new(gf.descMetadata.content) do |reader|
|
103
|
-
reader.each_statement do |statement|
|
104
|
-
triples << statement
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
unless triples.empty?
|
109
|
-
RDF::Writer.for(:rdfxml).open(export_file) do |writer|
|
110
|
-
writer << triples
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
namespace :harvest do
|
117
|
-
desc "Harvest LC subjects"
|
118
|
-
task :lc_subjects => :environment do |cmd, args|
|
119
|
-
vocabs = ["/tmp/subjects-skos.nt"]
|
120
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs)
|
121
|
-
end
|
122
|
-
|
123
|
-
desc "Harvest DBpedia titles"
|
124
|
-
task :dbpedia_titles => :environment do |cmd, args|
|
125
|
-
vocabs = ["/tmp/labels_en.nt"]
|
126
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs, :predicate => RDF::RDFS.label)
|
127
|
-
end
|
128
|
-
|
129
|
-
desc "Harvest DBpedia categories"
|
130
|
-
task :dbpedia_categories => :environment do |cmd, args|
|
131
|
-
vocabs = ["/tmp/category_labels_en.nt"]
|
132
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs, :predicate => RDF::RDFS.label)
|
133
|
-
end
|
134
|
-
|
135
|
-
desc "Harvest LC MARC geographic areas"
|
136
|
-
task :lc_geographic => :environment do |cmd, args|
|
137
|
-
vocabs = ["/tmp/vocabularygeographicAreas.nt"]
|
138
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs)
|
139
|
-
end
|
140
|
-
|
141
|
-
desc "Harvest Geonames cities"
|
142
|
-
task :geonames_cities => :environment do |cmd, args|
|
143
|
-
vocabs = ["/tmp/cities1000.txt"]
|
144
|
-
LocalAuthority.harvest_tsv(cmd.to_s.split(":").last, vocabs, :prefix => 'http://sws.geonames.org/')
|
145
|
-
end
|
146
|
-
|
147
|
-
desc "Harvest Lexvo languages"
|
148
|
-
task :lexvo_languages => :environment do |cmd, args|
|
149
|
-
vocabs = ["/tmp/lexvo_2012-03-04.rdf"]
|
150
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs,
|
151
|
-
:format => 'rdfxml',
|
152
|
-
:predicate => RDF::URI("http://www.w3.org/2008/05/skos#prefLabel"))
|
153
|
-
end
|
154
|
-
|
155
|
-
desc "Harvest LC genres"
|
156
|
-
task :lc_genres => :environment do |cmd, args|
|
157
|
-
vocabs = ["/tmp/authoritiesgenreForms.nt"]
|
158
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs)
|
159
|
-
end
|
160
|
-
|
161
|
-
desc "Harvest LC name authorities"
|
162
|
-
task :lc_names => :environment do |cmd, args|
|
163
|
-
vocabs = ["/tmp/authoritiesnames.nt.skos"]
|
164
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs)
|
165
|
-
end
|
166
|
-
|
167
|
-
desc "Harvest LC thesaurus of graphic materials"
|
168
|
-
task :lc_graphics => :environment do |cmd, args|
|
169
|
-
vocabs = ["/tmp/vocabularygraphicMaterials.nt"]
|
170
|
-
LocalAuthority.harvest_rdf(cmd.to_s.split(":").last, vocabs)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|