sufia 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -1
- data/README.md +6 -2
- data/app/assets/javascripts/sufia.js +1 -0
- data/app/assets/javascripts/sufia/trophy.js +26 -0
- data/app/assets/stylesheets/sufia.css.scss +1 -0
- data/app/assets/stylesheets/trophy.css +7 -0
- data/app/controllers/batch_controller.rb +1 -1
- data/app/controllers/batch_edits_controller.rb +3 -3
- data/app/controllers/single_use_link_controller.rb +9 -17
- data/app/controllers/users_controller.rb +33 -4
- data/app/helpers/generic_file_helper.rb +57 -5
- data/{lib/devise/models/http_header_authenticatable.rb → app/helpers/trophy_helper.rb} +11 -13
- data/app/models/datastreams/batch_rdf_datastream.rb +0 -1
- data/app/models/datastreams/generic_file_rdf_datastream.rb +0 -1
- data/app/models/trophy.rb +12 -0
- data/app/views/_user_util_links.html.erb +1 -1
- data/app/views/batch/edit.html.erb +2 -2
- data/app/views/batch_edits/{_delete_selected → _delete_selected.html.erb} +1 -1
- data/app/views/batch_edits/_metadata.html.erb +16 -15
- data/app/views/batch_edits/edit.html.erb +15 -23
- data/app/views/catalog/_recent_document.html.erb +2 -5
- data/app/views/dashboard/_index_partials/_default_group.html.erb +1 -1
- data/app/views/dashboard/_index_partials/_list_files.html.erb +7 -3
- data/app/views/dashboard/index.html.erb +7 -7
- data/app/views/error/404.html.erb +1 -1
- data/app/views/error/500.html.erb +1 -1
- data/app/views/generic_files/_descriptions.html.erb +3 -18
- data/app/views/generic_files/_field_form.html.erb +17 -0
- data/app/views/generic_files/_rights_modal.html.erb +1 -1
- data/app/views/generic_files/edit_fields/_default.html.erb +7 -0
- data/app/views/generic_files/edit_fields/_description.html.erb +6 -0
- data/app/views/generic_files/edit_fields/_rights.html.erb +8 -0
- data/app/views/generic_files/edit_fields/_suffix.html.erb +9 -0
- data/app/views/generic_files/edit_fields/_type.html.erb +9 -0
- data/app/views/single_use_link/show.html.erb +5 -11
- data/app/views/static/versions.html.erb +14 -0
- data/app/views/users/_trophy_edit.html.erb +21 -0
- data/app/views/users/edit.html.erb +3 -0
- data/app/views/users/index.html.erb +1 -1
- data/app/views/users/show.html.erb +9 -2
- data/config/locales/sufia.en.yml +24 -0
- data/config/routes.rb +8 -6
- data/features/support/cleanup.rb +2 -2
- data/lib/generators/sufia/sufia_generator.rb +1 -1
- data/lib/generators/sufia/templates/config/sufia.rb +0 -37
- data/lib/generators/sufia/templates/migrations/create_trophies.rb +10 -0
- data/lib/sufia/downloads_controller_behavior.rb +7 -9
- data/lib/sufia/files_controller_behavior.rb +4 -4
- data/lib/sufia/generic_file.rb +21 -27
- data/lib/sufia/jobs/batch_update_job.rb +1 -1
- data/lib/sufia/user.rb +23 -1
- data/lib/sufia/version.rb +1 -1
- data/lib/tasks/fixtures.rake +2 -3
- data/spec/controllers/generic_files_controller_spec.rb +7 -0
- data/spec/controllers/single_use_link_controller_spec.rb +0 -2
- data/spec/controllers/users_controller_spec.rb +28 -2
- data/spec/helpers/generic_file_helper_spec.rb +21 -0
- data/spec/models/generic_file_spec.rb +21 -5
- data/spec/models/trophy_spec.rb +26 -0
- data/spec/models/user_spec.rb +2 -2
- data/spec/routing/route_spec.rb +11 -11
- data/spec/support/Gemfile +2 -4
- data/sufia.gemspec +1 -0
- metadata +35 -15
- data/app/controllers/sessions_controller.rb +0 -30
- data/app/views/batch/_metadata.html.erb +0 -195
- data/app/views/generic_files/_field_form +0 -46
- data/lib/devise/strategies/http_header_authenticatable.rb +0 -43
- data/lib/generators/sufia/templates/config/devise.rb +0 -222
- data/lib/redirect_to_web_access_failure.rb +0 -27
- data/lib/sufia/http_header_auth.rb +0 -60
- data/spec/config/host_to_vhost_spec.rb +0 -38
- data/spec/controllers/sessions_controller_spec.rb +0 -44
data/Gemfile
CHANGED
@@ -16,7 +16,8 @@ group :development, :test do
|
|
16
16
|
gem 'ruby-prof'
|
17
17
|
gem 'cucumber-rails', '~> 1.0', :require => false
|
18
18
|
gem 'database_cleaner'
|
19
|
-
gem '
|
19
|
+
gem 'devise'
|
20
|
+
gem 'capybara', '~>1.1.3'
|
20
21
|
gem 'bcrypt-ruby'
|
21
22
|
gem "jettywrapper"
|
22
23
|
gem "factory_girl_rails", "~> 4.1.0"
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ gem 'blacklight'
|
|
8
8
|
gem 'hydra-head'
|
9
9
|
gem 'sufia'
|
10
10
|
gem 'jettywrapper'
|
11
|
+
gem 'font-awesome-sass-rails'
|
11
12
|
```
|
12
13
|
Then `bundle install`
|
13
14
|
|
@@ -46,13 +47,16 @@ COUNT=4 QUEUE=* rake environment resque:work
|
|
46
47
|
```
|
47
48
|
See https://github.com/defunkt/resque for more options
|
48
49
|
|
49
|
-
### If you want to enable transcoding of video
|
50
|
-
####
|
50
|
+
### If you want to enable transcoding of video, instal ffmpeg version 1.0+
|
51
|
+
#### On a mac
|
51
52
|
Use homebrew:
|
52
53
|
```
|
53
54
|
brew install ffmpeg --with-libvpx --with-libvorbis
|
54
55
|
```
|
55
56
|
|
57
|
+
#### On Ubuntu Linux
|
58
|
+
See https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
|
59
|
+
|
56
60
|
## Developers:
|
57
61
|
This information is for people who want to modify the engine itself, not an application that uses the engine:
|
58
62
|
### Create fixtures
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// short hand for $(document).ready();
|
2
|
+
$(function() {
|
3
|
+
|
4
|
+
$('.trophy-class').click(function(){
|
5
|
+
var uid=$("#current_user").html();
|
6
|
+
$.ajax({
|
7
|
+
url:"/users/"+uid+"/trophy",
|
8
|
+
type:"post",
|
9
|
+
data: "file_id="+this.id,
|
10
|
+
success:function(data) {
|
11
|
+
var oldclass = $('#'+data.trophy.generic_file_id).find('i').attr("class");
|
12
|
+
if (oldclass.indexOf("trophy-on") != -1){
|
13
|
+
$('#'+data.trophy.generic_file_id).find('i').attr("title", "Highlight work");
|
14
|
+
} else {
|
15
|
+
$('#'+data.trophy.generic_file_id).find('i').attr("title", "Unhighlight work");
|
16
|
+
}
|
17
|
+
|
18
|
+
$('#'+data.trophy.generic_file_id).find('i').toggleClass("trophy-on");
|
19
|
+
$('#'+data.trophy.generic_file_id).find('i').toggleClass("trophy-off");
|
20
|
+
}
|
21
|
+
})
|
22
|
+
});
|
23
|
+
|
24
|
+
}); //closing function at the top of the page
|
25
|
+
|
26
|
+
|
@@ -38,7 +38,7 @@ class BatchController < ApplicationController
|
|
38
38
|
@batch.status="processing"
|
39
39
|
@batch.save
|
40
40
|
Sufia.queue.push(BatchUpdateJob.new(current_user.user_key, params))
|
41
|
-
flash[:notice] = 'Your files are being processed by
|
41
|
+
flash[:notice] = 'Your files are being processed by ' + t('sufia.product_name') + ' in the background. The metadata and access controls you specified are being applied. Files will be marked <span class="label label-important" title="Private">Private</span> until this process is complete (shouldn\'t take too long, hang in there!). You may need to refresh your dashboard to see these updates.'
|
42
42
|
redirect_to sufia.dashboard_index_path
|
43
43
|
end
|
44
44
|
end
|
@@ -5,13 +5,13 @@ class BatchEditsController < ApplicationController
|
|
5
5
|
def edit
|
6
6
|
super
|
7
7
|
@generic_file = GenericFile.new
|
8
|
-
@generic_file.depositor = current_user.
|
8
|
+
@generic_file.depositor = current_user.user_key
|
9
9
|
@groups = current_user.groups
|
10
|
-
@terms = @generic_file.
|
10
|
+
@terms = @generic_file.editable_terms - [:title] # +:format, :resource_type
|
11
11
|
|
12
12
|
# do we want to show the original values for anything...
|
13
13
|
@show_file = GenericFile.new
|
14
|
-
@show_file.depositor = current_user.
|
14
|
+
@show_file.depositor = current_user.user_key
|
15
15
|
h = {}
|
16
16
|
@names = []
|
17
17
|
permissions = []
|
@@ -4,10 +4,10 @@ class SingleUseLinkController < DownloadsController
|
|
4
4
|
prepend_before_filter :normalize_identifier, :except => [:download, :show]
|
5
5
|
|
6
6
|
def generate_download
|
7
|
-
|
8
|
-
@
|
7
|
+
@generic_file = GenericFile.find(params[:id])
|
8
|
+
authorize! :read, @generic_file
|
9
|
+
@su = SingleUseLink.create_download(params[:id])
|
9
10
|
@link = sufia.download_single_use_link_path(@su.downloadKey)
|
10
|
-
@generic_file = GenericFile.find(id)
|
11
11
|
respond_to do |format|
|
12
12
|
format.html
|
13
13
|
format.js {render :js => @link}
|
@@ -16,10 +16,10 @@ class SingleUseLinkController < DownloadsController
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def generate_show
|
19
|
-
|
20
|
-
|
19
|
+
@generic_file = GenericFile.find(params[:id])
|
20
|
+
authorize! :read, @generic_file
|
21
|
+
@su = SingleUseLink.create_show(params[:id])
|
21
22
|
@link = sufia.show_single_use_link_path(@su.downloadKey)
|
22
|
-
@generic_file = GenericFile.find(id)
|
23
23
|
respond_to do |format|
|
24
24
|
format.html
|
25
25
|
format.js {render :js => @link}
|
@@ -38,7 +38,8 @@ class SingleUseLinkController < DownloadsController
|
|
38
38
|
not_found if link.path != sufia.download_path(id)
|
39
39
|
|
40
40
|
# send the data content
|
41
|
-
|
41
|
+
asset = ActiveFedora::Base.find(id, :cast=>true)
|
42
|
+
send_content(asset)
|
42
43
|
end
|
43
44
|
|
44
45
|
def show
|
@@ -52,8 +53,7 @@ class SingleUseLinkController < DownloadsController
|
|
52
53
|
|
53
54
|
#show the file
|
54
55
|
@generic_file = GenericFile.find(id)
|
55
|
-
@terms = @generic_file.
|
56
|
-
#render 'generic_files/show'
|
56
|
+
@terms = @generic_file.terms_for_display
|
57
57
|
|
58
58
|
# create a dowload link that is single use for the user since we do not just want to show metadata we want to access it too
|
59
59
|
@su = SingleUseLink.create_download(id)
|
@@ -62,14 +62,6 @@ class SingleUseLinkController < DownloadsController
|
|
62
62
|
|
63
63
|
protected
|
64
64
|
|
65
|
-
def check_single_use_link
|
66
|
-
id = params[:id]
|
67
|
-
# make sure the user is allowed to read the document before they generate the link
|
68
|
-
perms = permissions_solr_doc_for_id(id)
|
69
|
-
@can_read = can? :read, perms
|
70
|
-
return id
|
71
|
-
end
|
72
|
-
|
73
65
|
def lookup_hash
|
74
66
|
id = params[:id]
|
75
67
|
# invalid hash send not found
|
@@ -14,8 +14,9 @@
|
|
14
14
|
|
15
15
|
class UsersController < ApplicationController
|
16
16
|
prepend_before_filter :find_user, :except => [:index, :search, :notifications_number]
|
17
|
-
before_filter :authenticate_user!, only: [:edit, :update, :follow, :unfollow]
|
18
|
-
before_filter :user_is_current_user, only: [:edit, :update]
|
17
|
+
before_filter :authenticate_user!, only: [:edit, :update, :follow, :unfollow, :toggle_trophy]
|
18
|
+
before_filter :user_is_current_user, only: [:edit, :update, :toggle_trophy]
|
19
|
+
|
19
20
|
before_filter :user_not_current_user, only: [:follow, :unfollow]
|
20
21
|
|
21
22
|
def index
|
@@ -35,6 +36,7 @@ class UsersController < ApplicationController
|
|
35
36
|
else
|
36
37
|
@events = []
|
37
38
|
end
|
39
|
+
@trophies = @user.trophy_ids
|
38
40
|
@followers = @user.followers
|
39
41
|
@following = @user.all_following
|
40
42
|
end
|
@@ -43,6 +45,7 @@ class UsersController < ApplicationController
|
|
43
45
|
def edit
|
44
46
|
@user = current_user
|
45
47
|
@groups = @user.groups
|
48
|
+
@trophies = @user.trophy_ids
|
46
49
|
end
|
47
50
|
|
48
51
|
# Process changes from profile form
|
@@ -57,7 +60,33 @@ class UsersController < ApplicationController
|
|
57
60
|
end
|
58
61
|
Sufia.queue.push(UserEditProfileEventJob.new(@user.user_key))
|
59
62
|
redirect_to sufia.profile_path(URI.escape(@user.to_s,'@.')), notice: "Your profile has been updated"
|
63
|
+
delete_trophy = params.keys.reject{|k,v|k.slice(0,'remove_trophy'.length)!='remove_trophy'}
|
64
|
+
delete_trophy = delete_trophy.map{|v| v.slice('remove_trophy_'.length..-1)}
|
65
|
+
delete_trophy.each do | smash_trophy |
|
66
|
+
Trophy.where(user_id: current_user.id, generic_file_id: smash_trophy.slice("#{Sufia::Engine.config.id_namespace}:".length..-1)).each.map(&:delete)
|
67
|
+
#Trophy.where(user_id: current_user.id, generic_file_id: smash_trophy.slice("#{Sufia::Engine.config.id_namespace}:".length..-1)).each.map(&:delete)
|
68
|
+
end
|
60
69
|
end
|
70
|
+
def toggle_trophy
|
71
|
+
id = params[:file_id]
|
72
|
+
id = "#{Sufia::Engine.config.id_namespace}:#{id}" unless id.include?(":")
|
73
|
+
unless current_user.can? :edit, permissions_solr_doc_for_id(id)
|
74
|
+
redirect_to root_path, alert: "You do not have permissions to the file"
|
75
|
+
return false
|
76
|
+
end
|
77
|
+
# TO DO make sure current user has access to file
|
78
|
+
t = Trophy.where(:generic_file_id => params[:file_id], :user_id => current_user.id).first
|
79
|
+
if t.blank?
|
80
|
+
t = Trophy.create(:generic_file_id => params[:file_id], :user_id => current_user.id)
|
81
|
+
return false unless t.persisted?
|
82
|
+
else
|
83
|
+
t.delete
|
84
|
+
#TODO do this better says Mike
|
85
|
+
return false if t.persisted?
|
86
|
+
end
|
87
|
+
render :json => t
|
88
|
+
end
|
89
|
+
|
61
90
|
|
62
91
|
# Follow a user
|
63
92
|
def follow
|
@@ -79,12 +108,12 @@ class UsersController < ApplicationController
|
|
79
108
|
|
80
109
|
private
|
81
110
|
def find_user
|
82
|
-
@user = User.
|
111
|
+
@user = User.from_url_component(params[:uid])
|
83
112
|
redirect_to root_path, alert: "User '#{params[:uid]}' does not exist" if @user.nil?
|
84
113
|
end
|
85
114
|
|
86
115
|
def user_is_current_user
|
87
|
-
redirect_to sufia.profile_path(URI.escape(@user.to_s,'@.')), alert: "
|
116
|
+
redirect_to sufia.profile_path(URI.escape(@user.to_s,'@.')), alert: "Permission denied: cannot access this page." unless @user == current_user
|
88
117
|
end
|
89
118
|
|
90
119
|
def user_not_current_user
|
@@ -14,10 +14,62 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
|
16
16
|
module GenericFileHelper
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
def display_title(gf)
|
18
|
+
title = gf.title.join(' | ')
|
19
|
+
title = gf.label if title.blank?
|
20
|
+
title = 'No Title' if title.blank?
|
21
|
+
title
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_field (key)
|
25
|
+
more_or_less_button(key, 'adder', '+')
|
26
|
+
end
|
27
|
+
|
28
|
+
def subtract_field (key)
|
29
|
+
more_or_less_button(key, 'remover', '-')
|
30
|
+
end
|
31
|
+
|
32
|
+
def help_icon(key)
|
33
|
+
link_to '#', id: "generic_file_#{key.to_s}_help", rel: 'popover',
|
34
|
+
'data-content' => metadata_help(key),
|
35
|
+
'data-original-title' => get_label(key) do
|
36
|
+
content_tag 'i', '', class: "icon-question-sign icon-large"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def metadata_help(key)
|
41
|
+
I18n.t("sufia.metadata_help.#{key}", default: key.to_s.humanize)
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_label(key)
|
45
|
+
I18n.t("sufia.field_label.#{key}", default: key.to_s.humanize)
|
46
|
+
end
|
47
|
+
|
48
|
+
def required?(key)
|
49
|
+
[:title, :creator, :tag, :rights].include?(key)
|
50
|
+
end
|
51
|
+
|
52
|
+
def render_edit_field_partial(key, locals)
|
53
|
+
["generic_files/edit_fields/#{key}", "generic_files/edit_fields/default"].each do |str|
|
54
|
+
# XXX rather than handling this logic through exceptions, maybe there's a Rails internals method
|
55
|
+
# for determining if a partial template exists..
|
56
|
+
begin
|
57
|
+
return render :partial => str, :locals=>locals.merge({key: key})
|
58
|
+
rescue ActionView::MissingTemplate
|
59
|
+
nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def more_or_less_button(key, html_class, symbol)
|
67
|
+
# TODO, there could be more than one element with this id on the page, but the fuctionality doesn't work without it.
|
68
|
+
content_tag('button', class: "#{html_class} btn", id: "additional_#{key}_submit", name: "additional_#{key}") do
|
69
|
+
(symbol +
|
70
|
+
content_tag('span', class: 'accessible-hidden') do
|
71
|
+
"add another #{key.to_s}"
|
72
|
+
end).html_safe
|
73
|
+
end
|
22
74
|
end
|
23
75
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
# Copyright © 2012 The Pennsylvania State University
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -12,18 +13,15 @@
|
|
12
13
|
# See the License for the specific language governing permissions and
|
13
14
|
# limitations under the License.
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
module TrophyHelper
|
17
|
+
def display_trophy_link(user, noid)
|
18
|
+
trophyclass = "trophy-off"
|
19
|
+
trophytitle= "Highlight work "
|
20
|
+
if user.trophies.map(&:generic_file_id).include? noid
|
21
|
+
trophyclass = "trophy-on"
|
22
|
+
trophytitle= "Unhighlight work"
|
23
|
+
end
|
20
24
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
protected
|
25
|
-
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
25
|
+
return link_to raw("<i class='#{trophyclass} icon-trophy icon-large'></i>"),"", :class=> 'trophy-class', :title => trophytitle, :id => noid, :remote=>true # link to trophy
|
26
|
+
end
|
29
27
|
end
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
class GenericFileRdfDatastream < ActiveFedora::NtriplesRDFDatastream
|
16
|
-
register_vocabularies RDF::DC, RDF::FOAF, RDF::RDFS
|
17
16
|
map_predicates do |map|
|
18
17
|
map.part_of(:to => "isPartOf", :in => RDF::DC)
|
19
18
|
map.contributor(:in => RDF::DC) do |index|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Trophy < ActiveRecord::Base
|
2
|
+
attr_accessible :generic_file_id, :user_id
|
3
|
+
|
4
|
+
validate :count_within_limit, :on => :create
|
5
|
+
|
6
|
+
def count_within_limit
|
7
|
+
if Trophy.where(user_id:self.user_id).count >= 5
|
8
|
+
errors.add(:base, "Exceeded trophy limit")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
@@ -15,7 +15,7 @@ limitations under the License.
|
|
15
15
|
%>
|
16
16
|
<% if current_user %>
|
17
17
|
<%= render :partial => 'users/notify_link' %>
|
18
|
-
<a href="<%= sufia.profile_path(
|
18
|
+
<a href="<%= sufia.profile_path(current_user) %>" class="btn btn-small " title="click for User Profile"><i class="icon-user"> </i><%= current_user.name %></a>
|
19
19
|
<a class="btn btn-small dropdown-toggle" data-toggle="dropdown" href="#"><span class="icon-caret-down" title="click for additional menu options"></span></a>
|
20
20
|
<ul class="dropdown-menu">
|
21
21
|
<li><%= link_to raw('<i class="icon-dashboard"></i> my dashboard'), sufia.dashboard_index_path, :id => 'dashboard_nav_link' %></li>
|
@@ -46,13 +46,13 @@ function confirmExit(){
|
|
46
46
|
<h1>Apply Metadata</h1>
|
47
47
|
<br />
|
48
48
|
<div class="alert">The information you provide for Title will be applied to the corresponding file only; however all other
|
49
|
-
information you provide will be applied <em>to the entire batch of files</em> you have just deposited into
|
49
|
+
information you provide will be applied <em>to the entire batch of files</em> you have just deposited into <%= t('sufia.product_name') %>.
|
50
50
|
You may edit individual files from <%= link_to '<i class="icon-dashboard"></i> my dashboard'.html_safe, sufia.dashboard_index_path %> once
|
51
51
|
this step is finished.
|
52
52
|
</div>
|
53
53
|
<%= form_for([@batch, @generic_file], :url => sufia.batch_generic_files_path, :html => {:multipart => true, :class => 'form-horizontal'}) do |f| %>
|
54
54
|
|
55
|
-
<%= render :partial => 'metadata', :formats => [:html], :locals => {:f => f, :gf => @generic_file} %>
|
55
|
+
<%= render :partial => 'batch_edits/metadata', :formats => [:html], :locals => {:f => f, :gf => @generic_file} %>
|
56
56
|
|
57
57
|
<%= render :partial => 'generic_files/permission', :formats => [:html], :locals => { :gf => @generic_file, :batch => @batch } %>
|
58
58
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%= form_tag(batch_edits_path, :method => :put, :class=> "batch-select-all hidden", "data-behavior" => 'batch-select-all') do -%>
|
2
2
|
<%= hidden_field_tag('update_type', 'delete_all') %>
|
3
|
-
<%= submit_tag("Delete Selected", :class=>'batch-all-button btn btn-primary', :data => { :confirm =>
|
3
|
+
<%= submit_tag("Delete Selected", :class=>'batch-all-button btn btn-primary', :data => { :confirm => "Deleting a file from #{t('sufia.product_name')} is permanent. Click OK to delete this file from #{t('sufia.product_name')}, or Cancel to cancel this operation"}) %>
|
4
4
|
<% end %>
|
5
5
|
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<%= f.label :title, "<span class='error'>*</span> Title #{index+1}".html_safe, :class=>"control-label" %>
|
11
11
|
<div class="controls" id="additional_title_clone">
|
12
12
|
<%= f.text_field :title, :name=>"title[#{gen_f.id}][]", :value=>gen_f.label, :required=> true %>
|
13
|
-
|
13
|
+
<%= help_icon(:title) %>
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
<% end %>
|
@@ -27,11 +27,12 @@
|
|
27
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
28
|
<div class="well">
|
29
29
|
<div class="control-group" id="resources">
|
30
|
-
|
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" %>
|
31
32
|
<div class="controls">
|
32
33
|
<p class="help-block">You may select multiple types to apply to all files<p>
|
33
34
|
<%= f.select "resource_type", Sufia::Engine::config.resource_types, {}, {:multiple=>true, :size=>7} %>
|
34
|
-
|
35
|
+
<%= help_icon(:resource_type) %>
|
35
36
|
</div>
|
36
37
|
</div>
|
37
38
|
|
@@ -41,7 +42,7 @@
|
|
41
42
|
<%= f.text_field :tag, :name=>"generic_file[tag][]", :value=>"", :required=> true %>
|
42
43
|
<button class="adder btn" name="additional_tag" id="additional_tag_submit">+<span class="accessible-hidden">add another Tag</span></button>
|
43
44
|
|
44
|
-
|
45
|
+
<%= help_icon(:tag) %>
|
45
46
|
</div>
|
46
47
|
<div id="additional_tag_elements"></div>
|
47
48
|
</div>
|
@@ -52,7 +53,7 @@
|
|
52
53
|
<%= f.text_field :creator, :name=>"generic_file[creator][]", :value=>"", :required=> true %>
|
53
54
|
<button class="adder btn" name="additional_creator" id="additional_creator_submit">+<span class="accessible-hidden">add another Creator</span></button>
|
54
55
|
|
55
|
-
|
56
|
+
<%= help_icon(:creator) %>
|
56
57
|
</div>
|
57
58
|
<div id="additional_creator_elements"></div>
|
58
59
|
</div>
|
@@ -63,7 +64,7 @@
|
|
63
64
|
<%= f.select "rights", options_for_select(Sufia::Engine::config.cc_licenses, 'http://creativecommons.org/licenses/by-nc-nd/3.0/us/'), :required => true %>
|
64
65
|
<button class="adder btn" name="additional_rights" id="additional_rights_submit">+<span class="accessible-hidden">add another Rights</span></button>
|
65
66
|
|
66
|
-
|
67
|
+
<%= help_icon(:rights) %>
|
67
68
|
<%= render :partial => "generic_files/rights_modal" %>
|
68
69
|
|
69
70
|
</div>
|
@@ -82,7 +83,7 @@
|
|
82
83
|
<%= f.text_field :related_url, :name=>"generic_file[related_url][]", :value=>"" %>
|
83
84
|
<button class="adder btn" name="additional_related_url" id="additional_related_url_submit">+<span class="accessible-hidden">add another Related URL</span></button>
|
84
85
|
|
85
|
-
|
86
|
+
<%= help_icon(:related_url) %>
|
86
87
|
</div>
|
87
88
|
<div id="additional_related_url_elements"></div>
|
88
89
|
</div>
|
@@ -93,7 +94,7 @@
|
|
93
94
|
<%= f.text_field :based_near, :name=>"generic_file[based_near][]", :value=>"" %>
|
94
95
|
<button class="adder btn" name="additional_based_near" id="additional_based_near_submit">+<span class="accessible-hidden">add another Location</span></button>
|
95
96
|
|
96
|
-
|
97
|
+
<%= help_icon(:based_near) %>
|
97
98
|
</div>
|
98
99
|
<div id="additional_based_near_elements"></div>
|
99
100
|
</div>
|
@@ -104,7 +105,7 @@
|
|
104
105
|
<%= f.text_field :contributor, :name=>"generic_file[contributor][]", :value=>gf.contributor[0] %>
|
105
106
|
<button class="adder btn" name="additional_contributor" id="additional_contributor_submit">+<span class="accessible-hidden">add another Contributor</span></button>
|
106
107
|
|
107
|
-
|
108
|
+
<%= help_icon(:contributor) %>
|
108
109
|
</div>
|
109
110
|
<div id="additional_contributor_elements"></div>
|
110
111
|
</div>
|
@@ -115,7 +116,7 @@
|
|
115
116
|
<%= f.text_field :date_created, :name=>"generic_file[date_created][]", :value=>"" %>
|
116
117
|
<button class="adder btn" name="additional_date_created" id="additional_date_created_submit">+<span class="accessible-hidden">add another Date Created</span></button>
|
117
118
|
|
118
|
-
|
119
|
+
<%= help_icon(:date_created) %>
|
119
120
|
</div>
|
120
121
|
<div id="additional_date_created_elements"></div>
|
121
122
|
</div>
|
@@ -126,7 +127,7 @@
|
|
126
127
|
<%= f.text_area :description, :name=>"generic_file[description][]", :value=>"" %>
|
127
128
|
<button class="adder btn" name="additional_description" id="additional_description_submit">+<span class="accessible-hidden">add another Abstract or Summary</span></button>
|
128
129
|
|
129
|
-
|
130
|
+
<%= help_icon(:description) %>
|
130
131
|
</div>
|
131
132
|
<div id="additional_description_elements"></div>
|
132
133
|
</div>
|
@@ -137,7 +138,7 @@
|
|
137
138
|
<%= f.text_field :identifier, :name=>"generic_file[identifier][]", :value=>"" %>
|
138
139
|
<button class="adder btn" name="additional_identifier" id="additional_identifier_submit">+<span class="accessible-hidden">add another Identifier</span></button>
|
139
140
|
|
140
|
-
|
141
|
+
<%= help_icon(:identifier) %>
|
141
142
|
</div>
|
142
143
|
<div id="additional_identifier_elements"></div>
|
143
144
|
</div>
|
@@ -148,7 +149,7 @@
|
|
148
149
|
<%= f.text_field :language, :name=>"generic_file[language][]", :value=>"" %>
|
149
150
|
<button class="adder btn" name="additional_language" id="additional_language_submit">+<span class="accessible-hidden">add another Language</span></button>
|
150
151
|
|
151
|
-
|
152
|
+
<%= help_icon(:language) %>
|
152
153
|
</div>
|
153
154
|
<div id="additional_language_elements"></div>
|
154
155
|
</div>
|
@@ -159,7 +160,7 @@
|
|
159
160
|
<%= f.text_field :publisher, :name=>"generic_file[publisher][]", :value=>"" %>
|
160
161
|
<button class="adder btn" name="additional_publisher" id="additional_publisher_submit">+<span class="accessible-hidden">add another Publisher</span></button>
|
161
162
|
|
162
|
-
|
163
|
+
<%= help_icon(:publisher) %>
|
163
164
|
</div>
|
164
165
|
<div id="additional_publisher_elements"></div>
|
165
166
|
</div>
|
@@ -170,7 +171,7 @@
|
|
170
171
|
<%= f.text_field :subject, :name=>"generic_file[subject][]", :value=>"" %>
|
171
172
|
<button class="adder btn" name="additional_subject" id="additional_subject_submit">+<span class="accessible-hidden">add another Subject</span></button>
|
172
173
|
|
173
|
-
|
174
|
+
<%= help_icon(:subject) %>
|
174
175
|
</div>
|
175
176
|
<div id="additional_subject_elements"></div>
|
176
177
|
</div>
|