sufia 6.6.1 → 6.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.hound.yml +2 -0
- data/.rubocop.yml +1 -0
- data/History.md +15 -2
- data/README.md +2 -2
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia/permissions.js +43 -15
- data/app/controllers/concerns/sufia/collections_controller_behavior.rb +41 -5
- data/app/controllers/my/shared_collections_controller.rb +19 -0
- data/app/forms/sufia/forms/collection_edit_form.rb +8 -1
- data/app/helpers/batch_edits_helper.rb +1 -1
- data/app/helpers/collection_helper.rb +15 -0
- data/app/helpers/sufia/dashboard_helper_behavior.rb +4 -0
- data/app/helpers/sufia/permissions_helper.rb +2 -2
- data/app/helpers/sufia/sufia_helper_behavior.rb +2 -0
- data/app/presenters/sufia/collection_presenter.rb +1 -1
- data/app/search_builders/sufia/search_builder.rb +7 -0
- data/app/views/catalog/_search_form.html.erb +4 -0
- data/app/views/collections/_form.html.erb +5 -1
- data/app/views/collections/_permission_form.html.erb +111 -0
- data/app/views/collections/_show_document_list_row.html.erb +1 -1
- data/app/views/collections/show.html.erb +1 -1
- data/app/views/my/_sort_and_per_page.html.erb +1 -1
- data/app/views/my/index.html.erb +3 -0
- data/config/locales/sufia.en.yml +15 -10
- data/config/routes.rb +5 -1
- data/db/migrate/20160706132422_create_sufia_migration_survey_items.rb +12 -0
- data/{bin → exe}/audit_repository +0 -0
- data/exe/sufia_export +66 -0
- data/exe/sufia_survey +87 -0
- data/lib/generators/sufia/install_generator.rb +5 -0
- data/lib/sufia.rb +2 -0
- data/lib/sufia/export.rb +13 -0
- data/lib/sufia/export/actor.rb +98 -0
- data/lib/sufia/export/collection_converter.rb +20 -0
- data/lib/sufia/export/converter.rb +23 -0
- data/lib/sufia/export/generic_file_converter.rb +49 -0
- data/lib/sufia/export/permission_converter.rb +19 -0
- data/lib/sufia/export/version_converter.rb +30 -0
- data/lib/sufia/export/version_graph_converter.rb +35 -0
- data/lib/sufia/migration.rb +7 -0
- data/lib/sufia/migration/survey.rb +15 -0
- data/lib/sufia/migration/survey/fedora_id_service.rb +63 -0
- data/lib/sufia/migration/survey/item.rb +19 -0
- data/lib/sufia/migration/survey/surveyor.rb +21 -0
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/collections_controller_spec.rb +133 -17
- data/spec/factories/collection_factory.rb +28 -0
- data/spec/factories/generic_files.rb +34 -0
- data/spec/forms/collection_edit_form_spec.rb +1 -1
- data/spec/helpers/dashboard_helper_spec.rb +2 -0
- data/spec/helpers/sufia_helper_spec.rb +10 -1
- data/spec/lib/sufia/export/actor_spec.rb +118 -0
- data/spec/lib/sufia/export/collection_converter_spec.rb +40 -0
- data/spec/lib/sufia/export/generic_file_converter_spec.rb +47 -0
- data/spec/lib/sufia/export/permission_converter_spec.rb +19 -0
- data/spec/lib/sufia/export/version_converter_spec.rb +15 -0
- data/spec/lib/sufia/export/version_graph_converter_spec.rb +24 -0
- data/spec/lib/sufia/migration/survey_fedora_id_service_spec.rb +67 -0
- data/spec/lib/sufia/migration/survey_item_spec.rb +19 -0
- data/spec/lib/sufia/migration/surveyor_spec.rb +77 -0
- data/spec/models/collection_spec.rb +139 -14
- data/spec/routing/route_spec.rb +4 -0
- data/spec/views/collections/_form.html.erb_spec.rb +6 -5
- data/spec/views/collections/_permission_form.html.erb_spec.rb +45 -0
- data/sufia.gemspec +3 -2
- metadata +53 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f55c1c825e448527062e1b637aa4e0db095b8d49
|
4
|
+
data.tar.gz: 5eb9af1ef450202b09bb95a9c5057b5b5a9766c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d733e7eb0f715bd7a630bd025667072ade7dda69603ad2ee619c78987230c35319ccce80776326bef2d2d1aa952cd1e0ed7e2ac8790110eb79ced13b28aff0e
|
7
|
+
data.tar.gz: d138503996cb6e03019bf20d988bba1ae0f13464d9255567bd99141c12041ba36ac229cb949c00d201a4d1f22b775051adc841bcaf2e85a1e231d7b87450c61a
|
data/.hound.yml
ADDED
data/.rubocop.yml
CHANGED
@@ -51,6 +51,7 @@ Metrics/ModuleLength:
|
|
51
51
|
Exclude:
|
52
52
|
- 'app/controllers/concerns/sufia/users_controller_behavior.rb'
|
53
53
|
- 'app/controllers/concerns/sufia/files_controller_behavior.rb'
|
54
|
+
- 'app/controllers/concerns/sufia/collections_controller_behavior.rb'
|
54
55
|
- 'app/helpers/sufia/sufia_helper_behavior.rb'
|
55
56
|
|
56
57
|
Style/BlockDelimiters:
|
data/History.md
CHANGED
@@ -1,12 +1,25 @@
|
|
1
1
|
# History of Sufia releases
|
2
|
-
|
2
|
+
|
3
|
+
## 6.7.0
|
4
|
+
* Allow users and groups to share collections [E. Lynette Rayle]
|
5
|
+
* Don’t run hound on ruby code [E. Lynette Rayle]
|
6
|
+
* Add ability to set visibility for collections [E. Lynette Rayle]
|
7
|
+
* Adding executable to run surveyor from the command line. Changing surveyor to not recreate survey items for existing items when you run the executable multiple times. [Carolyn Cole]
|
8
|
+
* Adding a surveyor to create survey items for an id list And adding enumerator for migration status [Carolyn Cole]
|
9
|
+
* Adding FedoraIdService to create a list of all the ids (of classes we care about) in fedora [Carolyn Cole]
|
10
|
+
* Adding ActiveRecord class for Sufia::Migration::Survey::item [Carolyn Cole]
|
11
|
+
* Moving bin directory to exe to follow new standards [Carolyn Cole]
|
12
|
+
* Adding executable to run export actor from the command line [Carolyn Cole]
|
13
|
+
* Export Actor which will export ActiveFedora classes to json files [Carolyn Cole]
|
14
|
+
* Exporting a Collection's metadata, permissions, and members [Carolyn Cole]*
|
15
|
+
|
16
|
+
## 6.6.1* Export GenericFile metdata, versions, and permissions [Carolyn Cole]
|
3
17
|
* Upping the versions for 6.6.1 release [Carolyn Cole]
|
4
18
|
* Removing group and login from profile update [Carolyn Cole]
|
5
19
|
* Test with Rails 4.2.6 [Justin Coyne]
|
6
20
|
* Add auto-fix + exclusions for new Rubocop violations [Michael J. Giarlo]
|
7
21
|
* Temporarily pin Rubocop to get past broken 0.38.0 error [Michael J. Giarlo]
|
8
22
|
* Hydra-Jetty should be the default service container in 6.x. [Michael J. Giarlo]
|
9
|
-
* Escape property values before presenting them with auto_link. [Olli Lyytinen]
|
10
23
|
|
11
24
|
## 6.6.0
|
12
25
|
* Update background workers doc [E. Lynette Rayle]
|
data/README.md
CHANGED
@@ -95,7 +95,7 @@ If you have questions or need help, please email [the Hydra community tech list]
|
|
95
95
|
# Creating a Sufia-based app
|
96
96
|
|
97
97
|
This document contains instructions specific to setting up an app with __Sufia
|
98
|
-
v6.
|
98
|
+
v6.7.0__. If you are looking for instructions on installing a different
|
99
99
|
version, be sure to select the appropriate branch or tag from the drop-down
|
100
100
|
menu above.
|
101
101
|
|
@@ -147,7 +147,7 @@ rails new my_app
|
|
147
147
|
Add the following lines to your application's Gemfile.
|
148
148
|
|
149
149
|
```
|
150
|
-
gem 'sufia', '6.
|
150
|
+
gem 'sufia', '6.7.0'
|
151
151
|
gem 'kaminari', github: 'jcoyne/kaminari', branch: 'sufia' # required to handle pagination properly in dashboard. See https://github.com/amatsuda/kaminari/pull/322
|
152
152
|
```
|
153
153
|
|
data/SUFIA_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
6.
|
1
|
+
6.7.0
|
@@ -77,15 +77,27 @@ Blacklight.onLoad(function() {
|
|
77
77
|
// when user clicks on visibility, update potential access levels
|
78
78
|
$("input[name='visibility']").on("change", set_access_levels);
|
79
79
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
80
|
+
if (($("[id=new_collection]").length) || ($("[id^=edit_collection]")).length) {
|
81
|
+
$('#collection_permissions_new_group_name').change(function (){
|
82
|
+
var edit_option = $("#collection_permissions_new_group_permission option[value='edit']")[0];
|
83
|
+
if (this.value.toUpperCase() == 'PUBLIC') {
|
84
|
+
edit_option.disabled =true;
|
85
|
+
} else {
|
86
|
+
edit_option.disabled =false;
|
87
|
+
}
|
88
|
+
});
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
$('#generic_file_permissions_new_group_name').change(function () {
|
92
|
+
var edit_option = $("#generic_file_permissions_new_group_permission option[value='edit']")[0];
|
93
|
+
if (this.value.toUpperCase() == 'PUBLIC') {
|
94
|
+
edit_option.disabled = true;
|
95
|
+
} else {
|
96
|
+
edit_option.disabled = false;
|
97
|
+
}
|
98
|
+
|
99
|
+
});
|
100
|
+
}
|
89
101
|
|
90
102
|
function addPerm(agent_name, access, access_label, agent_type)
|
91
103
|
{
|
@@ -114,7 +126,11 @@ Blacklight.onLoad(function() {
|
|
114
126
|
}
|
115
127
|
|
116
128
|
function addHiddenPermField(element, type, name, access) {
|
117
|
-
var prefix = 'generic_file
|
129
|
+
var prefix = 'generic_file';
|
130
|
+
if (($("[id=new_collection]").length) || ($("[id^=edit_collection]").length)) {
|
131
|
+
prefix = 'collection';
|
132
|
+
}
|
133
|
+
prefix += '[permissions_attributes][' + nextIndex() + ']';
|
118
134
|
$('<input>').attr({
|
119
135
|
type: 'hidden',
|
120
136
|
name: prefix + '[type]',
|
@@ -145,13 +161,17 @@ Blacklight.onLoad(function() {
|
|
145
161
|
});
|
146
162
|
|
147
163
|
function showPermissionNote() {
|
148
|
-
|
164
|
+
$('#save_perm_note').removeClass('hidden');
|
149
165
|
}
|
150
166
|
|
151
167
|
function addDestroyField(element, index) {
|
168
|
+
var prefix = 'generic_file';
|
169
|
+
if (($("[id=new_collection]").length) || ($("[id^=edit_collection]").length)) {
|
170
|
+
prefix = 'collection';
|
171
|
+
}
|
152
172
|
$('<input>').attr({
|
153
173
|
type: 'hidden',
|
154
|
-
name: '
|
174
|
+
name: prefix + '[permissions_attributes][' + index + '][_destroy]',
|
155
175
|
value: 'true'
|
156
176
|
}).appendTo(element);
|
157
177
|
}
|
@@ -169,6 +189,10 @@ function get_visibility() {
|
|
169
189
|
* visibility of Open or Institution) so disable the Read option
|
170
190
|
*/
|
171
191
|
function set_access_levels() {
|
192
|
+
var permissions_fld = 'generic_file[permissions]';
|
193
|
+
if (($("[id=new_collection]").length) || ($("[id^=edit_collection]").length)) {
|
194
|
+
permissions_fld = 'collection[permissions]';
|
195
|
+
}
|
172
196
|
var vis = get_visibility();
|
173
197
|
var enabled_disabled = false;
|
174
198
|
if (vis == "open" || vis == "psu") {
|
@@ -176,7 +200,7 @@ function set_access_levels() {
|
|
176
200
|
}
|
177
201
|
$('#new_group_permission_skel option[value=read]').attr("disabled", enabled_disabled);
|
178
202
|
$('#new_user_permission_skel option[value=read]').attr("disabled", enabled_disabled);
|
179
|
-
var perms_sel = $("select[name^=
|
203
|
+
var perms_sel = $("select[name^=permissions_fld]");
|
180
204
|
$.each(perms_sel, function(index, sel_obj) {
|
181
205
|
$.each(sel_obj, function(j, opt) {
|
182
206
|
if( opt.value == "read") {
|
@@ -192,10 +216,14 @@ function set_access_levels() {
|
|
192
216
|
*/
|
193
217
|
function is_permission_duplicate(user_or_group_name)
|
194
218
|
{
|
219
|
+
var permissions_fld = 'generic_file[permissions]';
|
220
|
+
if (($("[id=new_collection]").length) || ($("[id^=edit_collection]").length)) {
|
221
|
+
permissions_fld = 'collection[permissions]';
|
222
|
+
}
|
195
223
|
s = "[" + user_or_group_name + "]";
|
196
224
|
var patt = new RegExp(preg_quote(s), 'gi');
|
197
|
-
var perms_input = $("input[name^=
|
198
|
-
var perms_sel = $("select[name^=
|
225
|
+
var perms_input = $("input[name^=permissions_fld]");
|
226
|
+
var perms_sel = $("select[name^=permissions_fld]");
|
199
227
|
var flag = 1;
|
200
228
|
perms_input.each(function(index, form_input) {
|
201
229
|
// if the name is already being used - return false (not valid)
|
@@ -6,6 +6,18 @@ module Sufia
|
|
6
6
|
included do
|
7
7
|
include Sufia::Breadcrumbs
|
8
8
|
|
9
|
+
# Catch permission errors
|
10
|
+
rescue_from Hydra::AccessDenied, CanCan::AccessDenied do |exception|
|
11
|
+
if exception.action == :edit
|
12
|
+
redirect_to(sufia.url_for(action: 'show'), alert: "You do not have sufficient privileges to edit this document")
|
13
|
+
elsif current_user && current_user.persisted?
|
14
|
+
redirect_to root_url, alert: exception.message
|
15
|
+
else
|
16
|
+
session["user_return_to"] = request.url
|
17
|
+
redirect_to new_user_session_url, alert: exception.message
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
9
21
|
before_action :filter_docs_with_read_access!, except: :show
|
10
22
|
before_action :has_access?, except: :show
|
11
23
|
before_action :build_breadcrumbs, only: [:edit, :show]
|
@@ -17,6 +29,7 @@ module Sufia
|
|
17
29
|
|
18
30
|
def new
|
19
31
|
super
|
32
|
+
@collection.visibility = 'open' # default to open access
|
20
33
|
form
|
21
34
|
end
|
22
35
|
|
@@ -56,11 +69,25 @@ module Sufia
|
|
56
69
|
|
57
70
|
def collection_params
|
58
71
|
form_class.model_attributes(
|
59
|
-
params.require(:collection).permit(
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
72
|
+
params.require(:collection).permit(
|
73
|
+
:title,
|
74
|
+
:description,
|
75
|
+
:members,
|
76
|
+
part_of: [],
|
77
|
+
contributor: [],
|
78
|
+
creator: [],
|
79
|
+
publisher: [],
|
80
|
+
date_created: [],
|
81
|
+
subject: [],
|
82
|
+
language: [],
|
83
|
+
rights: [],
|
84
|
+
resource_type: [],
|
85
|
+
identifier: [],
|
86
|
+
based_near: [],
|
87
|
+
tag: [],
|
88
|
+
related_url: []).merge(params.permit(:visibility)).tap do |whitelisted|
|
89
|
+
whitelisted[:permissions_attributes] = params[:collection][:permissions_attributes]
|
90
|
+
end)
|
64
91
|
end
|
65
92
|
|
66
93
|
def query_collection_members
|
@@ -94,5 +121,14 @@ module Sufia
|
|
94
121
|
Sufia.queue.push(ResolrizeGenericFileJob.new(gf))
|
95
122
|
end
|
96
123
|
end
|
124
|
+
|
125
|
+
def permissions_attributes
|
126
|
+
begin
|
127
|
+
perm_attrs = ActionController::Parameters.new(permissions_attributes: params.require(:collection).require(:permissions_attributes))
|
128
|
+
rescue
|
129
|
+
perm_attrs = ActionController::Parameters.new
|
130
|
+
end
|
131
|
+
perm_attrs
|
132
|
+
end
|
97
133
|
end
|
98
134
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module My
|
2
|
+
class SharedCollectionsController < MyController
|
3
|
+
self.search_params_logic += [
|
4
|
+
:show_only_shared_collections,
|
5
|
+
:show_only_collections
|
6
|
+
]
|
7
|
+
|
8
|
+
def index
|
9
|
+
super
|
10
|
+
@selected_tab = :shared_collections
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def search_action_url(*args)
|
16
|
+
sufia.dashboard_shared_collections_url(*args)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -2,9 +2,16 @@ module Sufia
|
|
2
2
|
module Forms
|
3
3
|
class CollectionEditForm
|
4
4
|
include HydraEditor::Form
|
5
|
+
include HydraEditor::Form::Permissions
|
6
|
+
|
5
7
|
self.model_class = ::Collection
|
6
8
|
self.terms = [:resource_type, :title, :creator, :contributor, :description, :tag, :rights,
|
7
|
-
:publisher, :date_created, :subject, :language, :identifier, :based_near, :related_url]
|
9
|
+
:publisher, :date_created, :subject, :language, :identifier, :based_near, :related_url, :visibility]
|
10
|
+
|
11
|
+
# Remove visibility from the set of rendered terms
|
12
|
+
def rendered_terms
|
13
|
+
terms - [:visibility]
|
14
|
+
end
|
8
15
|
|
9
16
|
# Test to see if the given field is required
|
10
17
|
# @param [Symbol] key a field
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module CollectionHelper
|
3
|
+
def render_collection_visibility_badge
|
4
|
+
if can? :edit, @collection
|
5
|
+
render_collection_visibility_link(@collection)
|
6
|
+
else
|
7
|
+
render_visibility_label(@collection)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def render_collection_visibility_link(collection)
|
12
|
+
link_to render_visibility_label(collection), collections.edit_collection_path(collection, anchor: "permissions_display"),
|
13
|
+
id: "permission_" + collection.id, class: "visibility-link"
|
14
|
+
end
|
15
|
+
end
|
@@ -40,6 +40,10 @@ module Sufia
|
|
40
40
|
params[:controller].match(/^my\/files/)
|
41
41
|
end
|
42
42
|
|
43
|
+
def on_my_shared_files?
|
44
|
+
params[:controller].match(/^my\/shares/)
|
45
|
+
end
|
46
|
+
|
43
47
|
def number_of_files(user = current_user)
|
44
48
|
::GenericFile.where(Solrizer.solr_name('depositor', :symbol) => user.user_key).count
|
45
49
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Sufia
|
2
2
|
module PermissionsHelper
|
3
3
|
def visibility_help
|
4
|
-
help_link('generic_files/visibility', 'Visibility', '
|
4
|
+
help_link('generic_files/visibility', 'Visibility', 'Usage information for visibility')
|
5
5
|
end
|
6
6
|
|
7
7
|
def share_with_help
|
8
|
-
help_link('generic_files/share_with', 'Share With', '
|
8
|
+
help_link('generic_files/share_with', 'Share With', 'Usage information for sharing')
|
9
9
|
end
|
10
10
|
|
11
11
|
private
|
@@ -11,7 +11,7 @@ module Sufia
|
|
11
11
|
|
12
12
|
# Depositor and permissions are not displayed in app/views/collections/_show_descriptions.html.erb
|
13
13
|
# so don't include them in `terms'.
|
14
|
-
|
14
|
+
delegate :depositor, :permissions, to: :model
|
15
15
|
|
16
16
|
def terms_with_values
|
17
17
|
terms.select { |t| self[t].present? }
|
@@ -9,6 +9,13 @@ module Sufia::SearchBuilder
|
|
9
9
|
]
|
10
10
|
end
|
11
11
|
|
12
|
+
def show_only_shared_collections(solr_parameters)
|
13
|
+
solr_parameters[:fq] ||= []
|
14
|
+
solr_parameters[:fq] += [
|
15
|
+
"-" + ActiveFedora::SolrQueryBuilder.construct_query_for_rel(depositor: scope.current_user.user_key)
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
12
19
|
def show_only_resources_deposited_by_current_user(solr_parameters)
|
13
20
|
solr_parameters[:fq] ||= []
|
14
21
|
solr_parameters[:fq] += [
|
@@ -40,6 +40,10 @@
|
|
40
40
|
<%= link_to t("sufia.search.form.option.my_shares.label_long"), "#",
|
41
41
|
data: { "search-option" => sufia.dashboard_shares_path, "search-label" => t("sufia.search.form.option.my_shares.label_short") } %>
|
42
42
|
</li>
|
43
|
+
<li>
|
44
|
+
<%= link_to t("sufia.search.form.option.my_shared_collections.label_long"), "#",
|
45
|
+
data: { "search-option" => sufia.dashboard_shared_collections_path, "search-label" => t("sufia.search.form.option.my_shared_collections.label_short") } %>
|
46
|
+
</li>
|
43
47
|
<% end %>
|
44
48
|
|
45
49
|
</ul>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div id="descriptions_display">
|
3
3
|
<h2 class="non lower">Descriptions <small class="pull-right"><span class="error">*</span> indicates required fields</small> </h2>
|
4
4
|
<div class="well">
|
5
|
-
<% f.object.
|
5
|
+
<% f.object.rendered_terms.each do |term| %>
|
6
6
|
<%= render_edit_field_partial term, f: f %>
|
7
7
|
<% end %>
|
8
8
|
</div><!-- /well -->
|
@@ -14,6 +14,10 @@
|
|
14
14
|
<% end %>
|
15
15
|
<% end %>
|
16
16
|
|
17
|
+
<div class="collection_form_visibility">
|
18
|
+
<%= render 'permission_form', f: f.object %>
|
19
|
+
</div>
|
20
|
+
|
17
21
|
<div class="primary-actions">
|
18
22
|
<% if params[:action] == "new" %>
|
19
23
|
<%= f.submit 'Create Collection', class: 'btn btn-primary', onclick: "confirmation_needed = false;", id: "create_submit", name: "create_collection" %>
|
@@ -0,0 +1,111 @@
|
|
1
|
+
<% depositor = f.model.depositor || current_user %>
|
2
|
+
|
3
|
+
<div class="alert alert-info hidden" id="save_perm_note">Permissions are <strong>not</strong> saved until the "Save" button is pressed at the bottom of the page.</div>
|
4
|
+
<div class="alert alert-warning hidden" id="permissions_error">
|
5
|
+
<a class="close" data-dismiss="alert" href="#">
|
6
|
+
<span class="sr-only">Close this alert</span>
|
7
|
+
<span aria-hidden="true">×</span>
|
8
|
+
</a>
|
9
|
+
<span id="permissions_error_text"></span></div>
|
10
|
+
|
11
|
+
<div class="well">
|
12
|
+
|
13
|
+
<h3>Visibility - <small>who should have the ability to read and download</small>
|
14
|
+
<span id="visibility_tooltip" class="h5"><%= visibility_help %></span>
|
15
|
+
</h3>
|
16
|
+
<div class="radio">
|
17
|
+
<label>
|
18
|
+
<input type="radio" id="visibility_open" name="visibility" value="<%=Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC %>" <% if f.model.public? %> checked="true"<% end %>/> <span class="label label-success">Open Access</span> Visible to the world.
|
19
|
+
</label>
|
20
|
+
<label>
|
21
|
+
<input type="radio" id="visibility_psu" name="visibility" value="<%=Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED %>" <% if f.model.registered? %> checked="true"<% end %> /><span class="label label-info"><%=t('sufia.institution_name') %></span> Visible to all <%=t('sufia.institution_name') %> users.
|
22
|
+
</label>
|
23
|
+
<label>
|
24
|
+
<input type="radio" id="visibility_restricted" name="visibility" value="<%=Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE %>"<% if f.model.private? %> checked="true"<% end %> /> <span class="label label-danger">Private</span> Visible to users/groups specified below, if any.
|
25
|
+
</label>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<!-- Share With -->
|
29
|
+
<div class="row">
|
30
|
+
<h3 class="col-sm-12">Share With <small>(optional)</small>
|
31
|
+
<span id="share_with_tooltip" class="h5"><%= share_with_help %></span>
|
32
|
+
</h3>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="form-group row">
|
36
|
+
<div id="new-user">
|
37
|
+
<p class="col-sm-12">Enter <%=t('sufia.account_label') %> (one at a time)</p>
|
38
|
+
<p class="sr-only">Use the add button to give access to one <%=t('sufia.account_label') %> at a time (it will be added to the list below). Select the user, by name or <%=t('sufia.account_label') %>. Then select the access level you wish to grant and click on Add this <%= t('sufia.account_label') %> to complete adding the permission.</p>
|
39
|
+
<div class="col-sm-5">
|
40
|
+
<label for="new_user_name_skel" class="sr-only"><%= t('sufia.account_label') %> (without the <%= t('sufia.directory.suffix') %> part)</label>
|
41
|
+
<%= text_field_tag 'new_user_name_skel', nil %>
|
42
|
+
</div>
|
43
|
+
<div class="col-sm-4">
|
44
|
+
<label for="new_user_permission_skel" class="sr-only">Access type to grant</label>
|
45
|
+
<%= select_tag 'new_user_permission_skel', options_for_select(Sufia.config.permission_levels), class: 'form-control' %>
|
46
|
+
</div>
|
47
|
+
<div class="col-sm-3">
|
48
|
+
<button class="btn btn-mini btn-inverse" id="add_new_user_skel">
|
49
|
+
<span class="sr-only">Add this <%= t('sufia.account_label') %></span>
|
50
|
+
<span aria-hidden="true"><i class="glyphicon glyphicon-plus"></i></span>
|
51
|
+
</button>
|
52
|
+
<br /> <span id="directory_user_result"></span>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
<div class="form-group row">
|
58
|
+
<div id="new-group" >
|
59
|
+
<p class="sr-only">Use the add button to give access to one group at a time (it will be added to the list below).</p>
|
60
|
+
<div class="col-sm-5">
|
61
|
+
<label for="new_group_name_skel" class="sr-only">Group</label>
|
62
|
+
<%= select_tag 'new_group_name_skel', options_for_select(["Select a group"] + current_user.groups), class: 'form-control' %>
|
63
|
+
</div>
|
64
|
+
<div class="col-sm-4">
|
65
|
+
<label for="new_group_permission_skel" class="sr-only">Access type to grant</label>
|
66
|
+
<%= select_tag 'new_group_permission_skel', options_for_select(Sufia.config.permission_levels), class: 'form-control' %>
|
67
|
+
</div>
|
68
|
+
<div class="col-sm-3">
|
69
|
+
<span class="sr-only">Add this group</span>
|
70
|
+
<button class="btn btn-mini btn-inverse" id="add_new_group_skel"><i class="glyphicon glyphicon-plus"></i></button>
|
71
|
+
<br /><span id="directory_group_result"></span>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
|
76
|
+
</div><!-- /.well -->
|
77
|
+
|
78
|
+
<table class="table table-bordered">
|
79
|
+
<tr>
|
80
|
+
<th width="60%">Person/Group</th>
|
81
|
+
<th width="40%">Access Level</th>
|
82
|
+
</tr>
|
83
|
+
<tr id="file_permissions">
|
84
|
+
<td>
|
85
|
+
<%= label_tag :owner_access, class: "control-label" do %>
|
86
|
+
Depositor (<span id="file_owner" data-depositor="<%= depositor %>"><%= link_to_profile depositor %></span>)
|
87
|
+
<% end %>
|
88
|
+
</td>
|
89
|
+
<td>
|
90
|
+
<%= Sufia.config.owner_permission_levels.keys[0] %>
|
91
|
+
</td>
|
92
|
+
</tr>
|
93
|
+
<% x=1 %>
|
94
|
+
<% f.model.permissions.each do |permission_fields| %>
|
95
|
+
<%# skip the public, penn state (aka registered), and depositor perms as they are displayed first at the top %>
|
96
|
+
<% next if ['public', 'registered', depositor].include? permission_fields.agent_name.downcase %>
|
97
|
+
<tr>
|
98
|
+
<td><%= label_tag :owner_access, class: "control-label" do %>
|
99
|
+
<%= user_display_name_and_key(permission_fields.agent_name) %>
|
100
|
+
<% end %></td>
|
101
|
+
<td>
|
102
|
+
<div class="col-sm-8">
|
103
|
+
<%= select_tag "collection[permissions_attributes][#{x}][access]", options_for_select(Sufia.config.permission_levels, permission_fields.access), class: 'form-control select_perm', id: "collection_permission_attributes_#{x}_access" %>
|
104
|
+
</div>
|
105
|
+
<button class="btn close remove_perm" data-index="<%= x %>">X</button>
|
106
|
+
</td>
|
107
|
+
</tr>
|
108
|
+
<%= hidden_field_tag "collection[permissions_attributes][#{x}][id]", permission_fields.id, id: "collection_permission_attributes_#{x}_id" %>
|
109
|
+
<% x+=1 %>
|
110
|
+
<% end %>
|
111
|
+
</table>
|