sufia 7.0.0 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +8 -7
- data/app/assets/javascripts/sufia.js +3 -4
- data/app/assets/javascripts/sufia/app.js +8 -0
- data/app/assets/javascripts/sufia/relationships.js +2 -0
- data/app/assets/javascripts/sufia/relationships/table.es6 +206 -0
- data/app/assets/javascripts/sufia/relationships/table_row.es6 +79 -0
- data/app/assets/javascripts/sufia/save_work/save_work_control.es6 +3 -0
- data/app/assets/javascripts/sufia/save_work/uploaded_files.es6 +5 -0
- data/app/forms/sufia/forms/batch_edit_form.rb +2 -2
- data/app/forms/sufia/forms/work_form.rb +13 -1
- data/app/presenters/sufia/work_show_presenter.rb +11 -0
- data/app/views/curation_concerns/base/_form_child_work_relationships.html.erb +65 -0
- data/app/views/curation_concerns/base/_form_progress.html.erb +3 -1
- data/app/views/curation_concerns/base/_form_relationships.html.erb +11 -2
- data/app/views/curation_concerns/base/_metadata.html.erb +2 -2
- data/app/views/curation_concerns/base/_relationships.html.erb +7 -22
- data/app/views/curation_concerns/base/_relationships_member_rows.html.erb +24 -0
- data/app/views/curation_concerns/base/_relationships_parent_row.html.erb +16 -0
- data/app/views/curation_concerns/base/_relationships_parent_row_empty.html.erb +6 -0
- data/app/views/curation_concerns/base/_relationships_parent_rows.html.erb +23 -0
- data/app/views/curation_concerns/file_sets/_actions.html.erb +1 -1
- data/app/views/curation_concerns/file_sets/_show_actions.html.erb +8 -9
- data/app/views/curation_concerns/file_sets/_single_use_link_rows.html.erb +19 -0
- data/app/views/curation_concerns/file_sets/_single_use_links.html.erb +10 -0
- data/app/views/curation_concerns/file_sets/show.html.erb +1 -0
- data/app/views/records/edit_fields/_in_works_ids.html.erb +59 -0
- data/config/locales/sufia.en.yml +22 -3
- data/lib/generators/sufia/templates/config/sufia.rb +5 -0
- data/lib/sufia/configuration.rb +6 -0
- data/lib/sufia/engine.rb +0 -2
- data/lib/sufia/version.rb +1 -1
- data/spec/features/search_spec.rb +7 -2
- data/spec/forms/sufia/forms/work_form_spec.rb +20 -0
- data/spec/javascripts/helpers/test_fixtures.js.coffee +9 -0
- data/spec/javascripts/helpers/test_responses.js +10 -5
- data/spec/javascripts/relationships_table_spec.js.coffee +83 -0
- data/spec/javascripts/save_work_spec.js +4 -2
- data/spec/javascripts/support/jasmine.yml +1 -1
- data/spec/javascripts/uploaded_files_spec.js +23 -0
- data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -1
- data/spec/views/catalog/index.html.erb_spec.rb +0 -4
- data/spec/views/curation_concerns/base/_form_child_work_relationships.html.erb_spec.rb +113 -0
- data/spec/views/curation_concerns/base/_relationships.html.erb_spec.rb +89 -3
- data/spec/views/curation_concerns/file_sets/_single_use_links.html.erb_spec.rb +32 -0
- data/spec/views/curation_concerns/file_sets/show.html.erb_spec.rb +4 -0
- data/spec/views/records/edit_fields/_in_works_ids.html.erb_spec.rb +113 -0
- data/sufia.gemspec +1 -2
- metadata +35 -21
- data/app/assets/javascripts/sufia/single_use_link.js +0 -30
- data/spec/javascripts/single_use_link_spec.js.coffee +0 -21
@@ -26,9 +26,9 @@ module Sufia
|
|
26
26
|
def initialize_combined_fields(batch)
|
27
27
|
combined_attributes = {}
|
28
28
|
permissions = []
|
29
|
-
# For each of the files in the batch, set the attributes to be the
|
29
|
+
# For each of the files in the batch, set the attributes to be the concatenation of all the attributes
|
30
30
|
batch.each do |doc_id|
|
31
|
-
work = model_class.
|
31
|
+
work = model_class.find(doc_id)
|
32
32
|
terms.each do |key|
|
33
33
|
combined_attributes[key] ||= []
|
34
34
|
combined_attributes[key] = (combined_attributes[key] + work[key]).uniq
|
@@ -34,7 +34,19 @@ module Sufia::Forms
|
|
34
34
|
:visibility_after_embargo, :visibility_during_lease,
|
35
35
|
:lease_expiration_date, :visibility_after_lease, :visibility,
|
36
36
|
:thumbnail_id, :representative_id, :ordered_member_ids,
|
37
|
-
:collection_ids]
|
37
|
+
:collection_ids, :in_works_ids]
|
38
|
+
end
|
39
|
+
|
40
|
+
# The ordered_members which are FileSet types
|
41
|
+
# @return [Array] All of the file sets in the ordered_members
|
42
|
+
def ordered_fileset_members
|
43
|
+
model.ordered_members.to_a.select { |m| m.model_name.singular.to_sym == :file_set }
|
44
|
+
end
|
45
|
+
|
46
|
+
# The ordered_members which are not FileSet types
|
47
|
+
# @return [Array] All of the non file sets in the ordered_members
|
48
|
+
def ordered_work_members
|
49
|
+
model.ordered_members.to_a.select { |m| m.model_name.singular.to_sym != :file_set }
|
38
50
|
end
|
39
51
|
|
40
52
|
def self.multiple?(term)
|
@@ -17,6 +17,17 @@ module Sufia
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
def presenter_types
|
21
|
+
CurationConcerns.config.registered_curation_concern_types.map(&:underscore) + ["collection"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def grouped_presenters(filtered_by: nil, except: nil)
|
25
|
+
grouped = collection_presenters.group_by(&:model_name).transform_keys { |key| key.to_s.underscore }
|
26
|
+
grouped.select! { |obj| obj.downcase == filtered_by } unless filtered_by.nil?
|
27
|
+
grouped.except!(*except) unless except.nil?
|
28
|
+
grouped
|
29
|
+
end
|
30
|
+
|
20
31
|
def display_feature_link?
|
21
32
|
user_can_feature_works? && solr_document.public? && FeaturedWork.can_create_another? && !featured?
|
22
33
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<%# Form UI behavior code and details;
|
2
|
+
Code:
|
3
|
+
app/assets/javascripts/sufia/relationships
|
4
|
+
CSS:
|
5
|
+
table.relationships-ajax-enabled : Used by sufia JS app as selector to wire up the UI functionality
|
6
|
+
tr.new-row : The basic template row for cloning when user clicks "Add"
|
7
|
+
.btn-remove-row : Button to remove its parent TR from the table
|
8
|
+
.btn-add-row : Button to clone its parent TR and inject a new row into the table
|
9
|
+
input.new-form-control : Input field for client client side validation and additional features
|
10
|
+
.message.has-warning : Used to display UI errors related to input values and server errors
|
11
|
+
HTML Properties:
|
12
|
+
table:
|
13
|
+
data-query-url : URL base to append newly added work ID to for querying details (title, href)
|
14
|
+
%>
|
15
|
+
<div class="form-group multi_value optional managed">
|
16
|
+
<%= link_to "Attach New Work", polymorphic_path([main_app, :new, :curation_concerns, :parent, curation_concern.model_name.singular], parent_id: params[:id]), target: "_blank", class: 'btn btn-primary' %>
|
17
|
+
|
18
|
+
<table class="table table-striped related-files relationships-ajax-enabled"
|
19
|
+
data-query-url="<%= polymorphic_path([main_app, :curation_concerns, curation_concern.model_name.singular], id: '$id') %>">
|
20
|
+
<thead>
|
21
|
+
<tr>
|
22
|
+
<th>Child Work</th>
|
23
|
+
<th>Actions</th>
|
24
|
+
</tr>
|
25
|
+
</thead>
|
26
|
+
<tbody>
|
27
|
+
<tr class="hidden">
|
28
|
+
<td>
|
29
|
+
<% f.object.ordered_fileset_members.each do |fileset| %>
|
30
|
+
<input class="related_works_ids work_filesets_ids" name="<%= f.object.model_name.param_key %>[ordered_member_ids][]" type="hidden" value="<%= fileset.id %>">
|
31
|
+
<% end %>
|
32
|
+
</td>
|
33
|
+
<td></td>
|
34
|
+
</tr>
|
35
|
+
<% f.object.ordered_work_members.each do |member| %>
|
36
|
+
<tr>
|
37
|
+
<td>
|
38
|
+
<%= link_to member.title.first, [main_app, member] %>
|
39
|
+
<input class="string multi_value optional form-control related_works_ids work_child_members_ids form-control multi-text-field hidden" value="<%= member.id %>" id="work_child_members_ids" aria-labelledby="work_child_members_ids_label" name="<%= f.object.model_name.param_key %>[ordered_member_ids][]" type="text">
|
40
|
+
</td>
|
41
|
+
<td>
|
42
|
+
<div class="child-actions">
|
43
|
+
<%= link_to "Edit", [main_app, :edit, member], target: "_blank", class: 'btn btn-default' %>
|
44
|
+
<a class="btn btn-danger btn-remove-row">Remove</a>
|
45
|
+
</div>
|
46
|
+
</td>
|
47
|
+
</tr>
|
48
|
+
<% end %>
|
49
|
+
<tr class="new-row">
|
50
|
+
<td>
|
51
|
+
<a href="" class="title hidden"></a>
|
52
|
+
<input class="new-form-control string multi_value optional related_works_ids work_child_members_ids form-control multi-text-field" value="" id="work_child_members_ids" aria-labelledby="work_child_members_ids_label" name="<%= f.object.model_name.param_key %>[ordered_member_ids][]" type="text">
|
53
|
+
<div class="message has-warning hidden"></div>
|
54
|
+
</td>
|
55
|
+
<td>
|
56
|
+
<div class="child-actions">
|
57
|
+
<a href="" class="edit hidden btn btn-default" target="_blank">Edit</a>
|
58
|
+
<a class="btn btn-danger btn-remove-row hidden">Remove</a>
|
59
|
+
<a class="btn btn-primary btn-add-row">Add</a>
|
60
|
+
</div>
|
61
|
+
</td>
|
62
|
+
</tr>
|
63
|
+
</tbody>
|
64
|
+
</table>
|
65
|
+
</div>
|
@@ -8,7 +8,9 @@
|
|
8
8
|
<legend class="legend-save-work">Requirements</legend>
|
9
9
|
<ul class="requirements">
|
10
10
|
<li class="incomplete" id="required-metadata">Enter required metadata</li>
|
11
|
-
|
11
|
+
<% if Sufia.config.work_requires_files %>
|
12
|
+
<li class="incomplete" id="required-files">Add files</li>
|
13
|
+
<% end %>
|
12
14
|
</ul>
|
13
15
|
</fieldset>
|
14
16
|
</div>
|
@@ -1,6 +1,15 @@
|
|
1
|
+
<%= render 'form_in_works', f: f %>
|
1
2
|
<h2><%= t("sufia.works.#{action_name}.in_collections") %></h2>
|
2
3
|
<div id="collection-widget">
|
3
4
|
<%= f.input :collection_ids, as: :select,
|
4
|
-
|
5
|
-
|
5
|
+
collection: available_collections(nil),
|
6
|
+
input_html: { class: 'form-control', multiple: true } %>
|
6
7
|
</div>
|
8
|
+
|
9
|
+
<% if params[:id] %>
|
10
|
+
<h3><%= t("sufia.works.#{action_name}.in_this_work") %></h3>
|
11
|
+
<%= render 'form_child_work_relationships', f: f %>
|
12
|
+
|
13
|
+
<h3><%= t("sufia.works.#{action_name}.in_other_works") %></h3>
|
14
|
+
<%= render_edit_field_partial(:in_works_ids, f: f) %>
|
15
|
+
<% end %>
|
@@ -5,8 +5,8 @@
|
|
5
5
|
</thead>
|
6
6
|
<tbody>
|
7
7
|
<%= render 'attribute_rows', presenter: presenter %>
|
8
|
-
<%= presenter.attribute_to_html(:embargo_release_date) %>
|
9
|
-
<%= presenter.attribute_to_html(:lease_expiration_date) %>
|
8
|
+
<%= presenter.attribute_to_html(:embargo_release_date, render_as: :date) %>
|
9
|
+
<%= presenter.attribute_to_html(:lease_expiration_date, render_as: :date) %>
|
10
10
|
<%= presenter.attribute_to_html(:rights, render_as: :rights) %>
|
11
11
|
</tbody>
|
12
12
|
</table>
|
@@ -1,22 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
<tr>
|
9
|
-
<th><%= t('.collections', type: presenter.human_readable_type) %></th>
|
10
|
-
<td>
|
11
|
-
<% collection_presenters.each do |collection| %>
|
12
|
-
<ul class="tabular">
|
13
|
-
<li class='attribute title'>
|
14
|
-
<%= link_to collection.to_s, main_app.collection_path(collection) %>
|
15
|
-
</li>
|
16
|
-
</ul>
|
17
|
-
<% end %>
|
18
|
-
</td>
|
19
|
-
</tr>
|
20
|
-
</tbody>
|
21
|
-
</table>
|
22
|
-
<% end %>
|
1
|
+
<h2><%= t('.header') %></h2>
|
2
|
+
<table class="table table-striped relationships">
|
3
|
+
<tbody>
|
4
|
+
<%= render 'relationships_parent_rows', presenter: presenter %>
|
5
|
+
<%= render 'relationships_member_rows', presenter: presenter %>
|
6
|
+
</tbody>
|
7
|
+
</table>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<% member_presenters = presenter.member_presenters.group_by(&:model_name).transform_keys{|key| key.to_s.singularize.underscore}.select{ |k,v| k.to_sym != :file_set } %>
|
2
|
+
<% if member_presenters.blank? %>
|
3
|
+
<tr>
|
4
|
+
<th><%= t(".label", type: presenter.human_readable_type) %></th>
|
5
|
+
<td>
|
6
|
+
<p><%= t('.empty', type: presenter.human_readable_type) %></p>
|
7
|
+
</td>
|
8
|
+
</tr>
|
9
|
+
<% else %>
|
10
|
+
<% member_presenters.each_pair do |model_name, members| %>
|
11
|
+
<tr>
|
12
|
+
<th><%= t(".label", type: presenter.human_readable_type) %></th>
|
13
|
+
<td>
|
14
|
+
<ul class="tabular">
|
15
|
+
<% members.each do |member| %>
|
16
|
+
<li class='attribute title'>
|
17
|
+
<%= link_to member.title.first, [main_app, member] %>
|
18
|
+
</li>
|
19
|
+
<% end %>
|
20
|
+
</ul>
|
21
|
+
</td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<tr>
|
2
|
+
<th><%= t(".label", type: type.humanize) %></th>
|
3
|
+
<td>
|
4
|
+
<% if items.blank? %>
|
5
|
+
<p><%= t('.empty', type: type.humanize) %></p>
|
6
|
+
<% else %>
|
7
|
+
<ul class="tabular">
|
8
|
+
<% items.each do |item| %>
|
9
|
+
<li class='attribute title'>
|
10
|
+
<%= link_to item.title.first, [main_app, item] %>
|
11
|
+
</li>
|
12
|
+
<% end %>
|
13
|
+
</ul>
|
14
|
+
<% end %>
|
15
|
+
</td>
|
16
|
+
</tr>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% presenters = presenter.collection_presenters %>
|
2
|
+
<% if presenters.blank? %>
|
3
|
+
<% presenter.presenter_types.each do |type| %>
|
4
|
+
<%= render 'relationships_parent_row_empty', type: type, presenter: presenter %>
|
5
|
+
<% end %>
|
6
|
+
<% else %>
|
7
|
+
|
8
|
+
<%# Render presenters which aren't specified in the 'presenter_types' %>
|
9
|
+
<% presenter.grouped_presenters(except: presenter.presenter_types).each_pair do |model_name, items| %>
|
10
|
+
<%= render 'relationships_parent_row', type: model_name, items: items, presenter: presenter %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<%# Render grouped presenters showing rows or an 'empty' row if there are none for that type %>
|
14
|
+
<% presenter.presenter_types.each do |type| %>
|
15
|
+
<% if presenter.grouped_presenters(filtered_by: type).blank? %>
|
16
|
+
<%= render 'relationships_parent_row_empty', type: type, presenter: presenter %>
|
17
|
+
<% else %>
|
18
|
+
<% presenter.grouped_presenters(filtered_by: type).each_pair do |model_name, items| %>
|
19
|
+
<%= render 'relationships_parent_row', type: type, items: items, presenter: presenter %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
@@ -20,7 +20,7 @@
|
|
20
20
|
</li>
|
21
21
|
|
22
22
|
<li role="menuitem" tabindex="-1">
|
23
|
-
<%= link_to t('sufia.
|
23
|
+
<%= link_to t('sufia.single_use_links.button'), '#',
|
24
24
|
class: "copypaste",
|
25
25
|
title: "Single-Use Link to File",
|
26
26
|
data: { generate_single_use_link_url: curation_concerns.generate_show_single_use_link_url(file_set.id) },
|
@@ -6,17 +6,16 @@
|
|
6
6
|
<%= link_to "Citations", sufia.citations_work_path(@presenter), id: 'citations', class: 'btn btn-default' %>
|
7
7
|
<% end %>
|
8
8
|
<% if @presenter.editor? %>
|
9
|
-
<%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]),
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
<%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]),
|
10
|
+
class: 'btn btn-default' %>
|
11
|
+
<%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter],
|
12
|
+
class: 'btn btn-danger', data: { confirm: "Delete this #{@presenter.human_readable_type}?" },
|
13
|
+
method: :delete %>
|
14
|
+
<%= link_to t('sufia.single_use_links.button'),
|
15
|
+
curation_concerns.generate_download_single_use_link_path(@presenter),
|
16
|
+
class: 'btn btn-default generate-single-use-link' %>
|
17
17
|
<% end %>
|
18
18
|
|
19
|
-
|
20
19
|
<%= render 'social_media' %>
|
21
20
|
</div>
|
22
21
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% single_use_links.each do |presenter| %>
|
2
|
+
<tr>
|
3
|
+
<td>
|
4
|
+
<%= t('sufia.single_use_links.expiration_message', link: presenter.short_key,
|
5
|
+
time: presenter.human_readable_expiration) %>
|
6
|
+
</td>
|
7
|
+
<td>
|
8
|
+
<button class="btn btn-xs btn-default copy-single-use-link"
|
9
|
+
data-clipboard-text="<%= curation_concerns.send(presenter.url_helper, presenter.downloadKey) %>"
|
10
|
+
data-toggle="tooltip" data-placement="bottom"
|
11
|
+
title="<%= t('curation_concerns.single_use_links.copy.tooltip') %>">
|
12
|
+
<%= t('curation_concerns.single_use_links.copy.button') %>
|
13
|
+
</button>
|
14
|
+
<%= link_to t('curation_concerns.single_use_links.delete'),
|
15
|
+
curation_concerns.delete_single_use_link_path(params[:id], presenter),
|
16
|
+
class: 'btn btn-xs btn-danger delete-single-use-link' %>
|
17
|
+
</td>
|
18
|
+
</tr>
|
19
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h3><%= t('curation_concerns.single_use_links.title') %></h3>
|
2
|
+
<table class="table table-striped table-condensed <%= dom_class(presenter) %> single-use-links">
|
3
|
+
<tbody data-url="<%= curation_concerns.generated_single_use_links_path(presenter) %>">
|
4
|
+
<% if presenter.single_use_links.empty? %>
|
5
|
+
<tr><td><%= t('curation_concerns.single_use_links.table.no_links') %></td></tr>
|
6
|
+
<% else %>
|
7
|
+
<%= render 'single_use_link_rows', single_use_links: presenter.single_use_links %>
|
8
|
+
<% end %>
|
9
|
+
</tbody>
|
10
|
+
</table>
|
@@ -5,6 +5,7 @@
|
|
5
5
|
<div class="col-xs-12 col-sm-4">
|
6
6
|
<%= media_display @presenter %>
|
7
7
|
<%= render 'show_actions', presenter: @presenter %>
|
8
|
+
<%= render 'single_use_links', presenter: @presenter if @presenter.editor? %>
|
8
9
|
</div>
|
9
10
|
<div itemscope itemtype="<%= @presenter.itemtype %>" class="col-xs-12 col-sm-8">
|
10
11
|
<header>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<%# Form UI behavior code and details;
|
2
|
+
Code:
|
3
|
+
app/assets/javascripts/sufia/relationships
|
4
|
+
CSS:
|
5
|
+
table.relationships-ajax-enabled : Used by sufia JS app as selector to wire up the UI functionality
|
6
|
+
tr.new-row : The basic template row for cloning when user clicks "Add"
|
7
|
+
.btn-remove-row : Button to remove its parent TR from the table
|
8
|
+
.btn-add-row : Button to clone its parent TR and inject a new row into the table
|
9
|
+
input.new-form-control : Input field for client client side validation and additional features
|
10
|
+
.message.has-warning : Used to display UI errors related to input values and server errors
|
11
|
+
HTML Properties:
|
12
|
+
table:
|
13
|
+
data-query-url : URL base to append newly added work ID to for querying details (title, href)
|
14
|
+
%>
|
15
|
+
<% if f.object.class.multiple? key %>
|
16
|
+
<div class="form-group multi_value optional work_in_works_ids managed">
|
17
|
+
<table class="table table-striped related-files relationships-ajax-enabled"
|
18
|
+
data-query-url="<%=polymorphic_path([main_app, :curation_concerns, curation_concern.model_name.singular], id: '$id') %>">
|
19
|
+
<thead>
|
20
|
+
<tr>
|
21
|
+
<th>Parent Work</th>
|
22
|
+
<th>Actions</th>
|
23
|
+
</tr>
|
24
|
+
</thead>
|
25
|
+
<tbody>
|
26
|
+
<% curation_concern.in_works.each do |parent| %>
|
27
|
+
<tr>
|
28
|
+
<td>
|
29
|
+
<%= link_to "#{parent.title.first}", polymorphic_path([main_app, :curation_concerns, curation_concern.model_name.singular], id: parent.id) %>
|
30
|
+
<input class="string multi_value optional form-control related_works_ids form-control multi-text-field hidden" name="<%= curation_concern.model_name.param_key %>[in_works_ids][]" value="<%= parent.id %>" id="work_in_works_ids" aria-labelledby="work_in_works_ids_label" type="text">
|
31
|
+
</td>
|
32
|
+
<td>
|
33
|
+
<div class="child-actions">
|
34
|
+
<%= link_to "Edit", edit_polymorphic_path([main_app, :curation_concerns, curation_concern.model_name.singular], id: parent.id), target: "_blank", class: 'btn btn-default' %>
|
35
|
+
<a class="btn btn-danger btn-remove-row">Remove</a>
|
36
|
+
</div>
|
37
|
+
</td>
|
38
|
+
</tr>
|
39
|
+
<% end %>
|
40
|
+
<tr class="new-row">
|
41
|
+
<td>
|
42
|
+
<a href="" class="title hidden"></a>
|
43
|
+
<input class="new-form-control string multi_value optional related_works_ids form-control multi-text-field" name="<%= curation_concern.model_name.param_key %>[in_works_ids][]" value="" aria-labelledby="work_in_works_ids_label" type="text">
|
44
|
+
<div class="message has-warning hidden"></div>
|
45
|
+
</td>
|
46
|
+
<td>
|
47
|
+
<div class="child-actions">
|
48
|
+
<a href="" class="edit hidden btn btn-default" target="_blank">Edit</a>
|
49
|
+
<a class="btn btn-danger btn-remove-row hidden">Remove</a>
|
50
|
+
<a class="btn btn-primary btn-add-row">Add</a>
|
51
|
+
</div>
|
52
|
+
</td>
|
53
|
+
</tr>
|
54
|
+
</tbody>
|
55
|
+
</table>
|
56
|
+
</div>
|
57
|
+
<% else %>
|
58
|
+
<%= f.input key, required: f.object.required?(key) %>
|
59
|
+
<% end %>
|
data/config/locales/sufia.en.yml
CHANGED
@@ -14,7 +14,9 @@ en:
|
|
14
14
|
share_button: "Share Your Work"
|
15
15
|
view_profile: "View Profile"
|
16
16
|
edit_profile: "Edit Profile"
|
17
|
-
|
17
|
+
single_use_links:
|
18
|
+
button: "Single-Use Link to File"
|
19
|
+
expiration_message: "Link %{link} expires %{time}"
|
18
20
|
directory:
|
19
21
|
suffix: "@example.org"
|
20
22
|
search:
|
@@ -210,10 +212,14 @@ en:
|
|
210
212
|
new:
|
211
213
|
header: Add New Work
|
212
214
|
in_collections: This Work in Collections
|
215
|
+
in_this_work: Other Works in this Work
|
216
|
+
in_other_works: This Work in Other Works
|
213
217
|
after_create_html: "Your files are being processed by %{application_name} in the background. The metadata and access controls you specified are being applied. Files will be marked <span class=\"label label-danger\" title=\"Private\">Private</span> until this process is complete (shouldn't take too long, hang in there!). You may need to refresh this page to see these updates."
|
214
218
|
edit:
|
215
219
|
header: Edit Work
|
216
220
|
in_collections: This Work in Collections
|
221
|
+
in_this_work: Other Works in this Work
|
222
|
+
in_other_works: This Work in Other Works
|
217
223
|
additional_fields: "Additional fields"
|
218
224
|
tab:
|
219
225
|
metadata: "Descriptions"
|
@@ -228,6 +234,8 @@ en:
|
|
228
234
|
new:
|
229
235
|
header: Batch Create New Works
|
230
236
|
in_collections: These Works in Collections
|
237
|
+
in_this_work: Other Works in this Work
|
238
|
+
in_other_works: This Work in Other Works
|
231
239
|
progress:
|
232
240
|
header: Save Works
|
233
241
|
files:
|
@@ -340,8 +348,15 @@ en:
|
|
340
348
|
base:
|
341
349
|
relationships:
|
342
350
|
header: Relationships
|
343
|
-
empty:
|
344
|
-
|
351
|
+
empty: "This %{type} is not currently in any collections."
|
352
|
+
relationships_parent_row:
|
353
|
+
label: "In %{type}:"
|
354
|
+
relationships_parent_row_empty:
|
355
|
+
label: "In %{type}:"
|
356
|
+
empty: "There are no %{type} relationships."
|
357
|
+
relationships_member_rows:
|
358
|
+
label: "Has related %{type}:"
|
359
|
+
empty: "This %{type} does not have any related works."
|
345
360
|
metadata:
|
346
361
|
header: Descriptions
|
347
362
|
attribute_name_label: Attribute Name
|
@@ -362,12 +377,16 @@ en:
|
|
362
377
|
label_html: Lease
|
363
378
|
private:
|
364
379
|
label_html: Private
|
380
|
+
single_use_links:
|
381
|
+
copy:
|
382
|
+
button: Copy
|
365
383
|
blacklight:
|
366
384
|
search:
|
367
385
|
fields:
|
368
386
|
show:
|
369
387
|
keyword: Keyword
|
370
388
|
|
389
|
+
|
371
390
|
helpers:
|
372
391
|
action:
|
373
392
|
cancel: "Cancel"
|