fcrepo_admin 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/README.rdoc +9 -29
- data/app/controllers/fcrepo_admin/datastreams_controller.rb +34 -11
- data/app/controllers/fcrepo_admin/objects_controller.rb +51 -10
- data/app/helpers/fcrepo_admin/objects_helper.rb +9 -0
- data/app/views/fcrepo_admin/datastreams/_content.html.erb +4 -5
- data/app/views/fcrepo_admin/datastreams/_datastream_nav.html.erb +18 -0
- data/app/views/fcrepo_admin/datastreams/_datastreams.html +2 -0
- data/app/views/fcrepo_admin/datastreams/edit.html.erb +0 -4
- data/app/views/fcrepo_admin/datastreams/show.html.erb +0 -13
- data/app/views/fcrepo_admin/objects/_object_nav.html.erb +5 -0
- data/app/views/fcrepo_admin/objects/_object_nav_items.html.erb +9 -0
- data/app/views/fcrepo_admin/{audit_trail/index.html.erb → objects/audit_trail.html.erb} +1 -3
- data/app/views/fcrepo_admin/objects/show.html.erb +7 -11
- data/app/views/layouts/fcrepo_admin/datastreams.html.erb +9 -0
- data/app/views/layouts/fcrepo_admin/default.html.erb +63 -0
- data/app/views/layouts/fcrepo_admin/objects.html.erb +8 -0
- data/config/locales/fcrepo_admin.en.yml +16 -3
- data/config/routes.rb +2 -6
- data/lib/fcrepo_admin.rb +1 -0
- data/lib/fcrepo_admin/blacklight_helper_behavior.rb +11 -0
- data/lib/fcrepo_admin/controller_behavior.rb +5 -5
- data/lib/fcrepo_admin/version.rb +1 -1
- data/spec/controllers/objects_controller_spec.rb +12 -0
- data/spec/features/datastreams/show.html.erb_spec.rb +1 -1
- data/spec/features/{audit_trail/index.html.erb_spec.rb → objects/audit_trail.html.erb_spec.rb} +3 -3
- data/spec/features/objects/show.html.erb_spec.rb +1 -1
- data/spec/internal/app/helpers/blacklight_helper.rb +4 -0
- data/spec/internal/public/403.html +26 -0
- metadata +18 -16
- data/app/controllers/fcrepo_admin/audit_trail_controller.rb +0 -17
- data/app/views/fcrepo_admin/catalog/_datastreams.html.erb +0 -19
- data/app/views/fcrepo_admin/catalog/_show.html.erb +0 -2
- data/lib/assets/stylesheets/fcrepo_admin/fcrepo_admin.css +0 -4
- data/spec/controllers/audit_trail_controller_spec.rb +0 -20
- data/spec/features/catalog/show.html.erb_spec.rb +0 -21
- data/spec/internal/app/views/catalog/_show_default.html.erb +0 -12
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -4,7 +4,8 @@ A Rails engine providing an administrative interface to a Fedora Commons reposit
|
|
4
4
|
|
5
5
|
=== Status
|
6
6
|
|
7
|
-
This project
|
7
|
+
This project should be considered *experimental* and not ready for production deployment.
|
8
|
+
Versions earlier than 1.0 may change API and/or UI without notice or regard for backward compatibility.
|
8
9
|
|
9
10
|
=== Requirements
|
10
11
|
|
@@ -37,42 +38,21 @@ See https://github.com/projecthydra/hydra-head/wiki/Installation-Prerequisites.
|
|
37
38
|
You may replace <code>'/admin'</code> with any mount point (except perhaps <code>'/catalog'</code>),
|
38
39
|
including <code>'/'</code>. All routes include <code>objects</code> as a subpath.
|
39
40
|
|
40
|
-
* Add abilities to your Ability class
|
41
|
-
|
42
|
-
In app/models/ability.rb add this line after the Hydra abilities:
|
43
|
-
|
44
|
-
include FcrepoAdmin::DatastreamAbility
|
45
|
-
|
46
|
-
* Extend the SolrDocument model
|
47
|
-
|
48
|
-
In app/models/solr_document.rb add this line:
|
49
|
-
|
50
|
-
use_extension FcrepoAdmin::SolrDocumentExtension
|
51
|
-
|
52
|
-
(This may only be necessary if customizing the catalog show page as indicated below.)
|
53
|
-
|
54
41
|
* Add Javascript
|
55
42
|
|
56
43
|
In app/assets/javascripts/application.js add this line:
|
57
44
|
|
58
45
|
//= require bootstrap-tab
|
59
46
|
|
60
|
-
*
|
61
|
-
|
62
|
-
In app/assets/stylesheets/application.css add this line:
|
63
|
-
|
64
|
-
//= require fcrepo_admin/fcrepo_admin
|
65
|
-
|
66
|
-
* Customize catalog show page (optional)
|
67
|
-
|
68
|
-
If you would like to add Fedora object information to the catalog show page,
|
69
|
-
copy the partial <code>app/views/catalog/_show_default.html.erb</code> from the Blacklight
|
70
|
-
gem to your application, then add to the bottom of the file:
|
47
|
+
* Customize catalog search results (optional)
|
71
48
|
|
72
|
-
|
49
|
+
If you would like items from the catalog search results list to the object admin view
|
50
|
+
instead of the catalog show view, create app/helpers/blacklight_helper.rb with this content:
|
73
51
|
|
74
|
-
|
75
|
-
|
52
|
+
module BlacklightHelper
|
53
|
+
include Blacklight::BlacklightHelperBehavior # Default Blacklight behaviors
|
54
|
+
include FcrepoAdmin::BlacklightHelperBehavior # fcrepo_admin overrides
|
55
|
+
end
|
76
56
|
|
77
57
|
=== License
|
78
58
|
|
@@ -3,26 +3,32 @@ require 'mime/types'
|
|
3
3
|
module FcrepoAdmin
|
4
4
|
class DatastreamsController < ApplicationController
|
5
5
|
|
6
|
-
include FcrepoAdmin::ControllerBehavior
|
6
|
+
# include FcrepoAdmin::ControllerBehavior
|
7
7
|
|
8
|
+
layout 'fcrepo_admin/datastreams'
|
9
|
+
|
10
|
+
# Additional types of content that should be displayed inline
|
8
11
|
TEXT_MIME_TYPES = ['application/xml', 'application/rdf+xml', 'application/json']
|
9
12
|
|
10
|
-
before_filter :
|
11
|
-
before_filter :
|
12
|
-
before_filter :load_datastream, :only => :download
|
13
|
+
# before_filter :load_and_authorize_object, :only => :index
|
14
|
+
before_filter :load_and_authorize_datastream # , :except => :index
|
15
|
+
# before_filter :load_datastream, :only => :download
|
13
16
|
before_filter :inline_filter, :only => [:show, :edit]
|
14
17
|
|
15
|
-
def index
|
16
|
-
end
|
18
|
+
# def index
|
19
|
+
# end
|
17
20
|
|
18
21
|
def show
|
22
|
+
if params[:download]
|
23
|
+
mimetypes = MIME::Types[@datastream.mimeType]
|
24
|
+
send_data @datastream.content, :disposition => 'attachment', :type => @datastream.mimeType, :filename => "#{@datastream.pid.sub(/:/, '_')}_#{@datastream.dsid}.#{mimetypes.first.extensions.first}"
|
25
|
+
end
|
19
26
|
end
|
20
27
|
|
21
|
-
def download
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
28
|
+
# def download
|
29
|
+
# mimetypes = MIME::Types[@datastream.mimeType]
|
30
|
+
# send_data @datastream.content, :disposition => 'attachment', :type => @datastream.mimeType, :filename => "#{@datastream.pid.sub(/:/, '_')}_#{@datastream.dsid}.#{mimetypes.first.extensions.first}"
|
31
|
+
# end
|
26
32
|
|
27
33
|
def edit
|
28
34
|
end
|
@@ -38,6 +44,23 @@ module FcrepoAdmin
|
|
38
44
|
redirect_to fcrepo_admin.object_datastream_url(@object, @datastream.dsid)
|
39
45
|
end
|
40
46
|
|
47
|
+
private
|
48
|
+
|
49
|
+
def load_and_authorize_datastream
|
50
|
+
load_datastream
|
51
|
+
authorize_datastream
|
52
|
+
end
|
53
|
+
|
54
|
+
def load_datastream
|
55
|
+
@object = ActiveFedora::Base.find(params[:object_id], :cast => true)
|
56
|
+
@datastream = @object.datastreams[params[:id]]
|
57
|
+
end
|
58
|
+
|
59
|
+
def authorize_datastream
|
60
|
+
# Datastream permissions are solely based on object permissions
|
61
|
+
authorize! params[:action].to_sym, @object
|
62
|
+
end
|
63
|
+
|
41
64
|
protected
|
42
65
|
|
43
66
|
def inline_filter
|
@@ -1,19 +1,46 @@
|
|
1
1
|
module FcrepoAdmin
|
2
2
|
class ObjectsController < ApplicationController
|
3
3
|
|
4
|
-
|
4
|
+
layout 'fcrepo_admin/objects'
|
5
5
|
|
6
6
|
PROPERTIES = [:owner_id, :state, :create_date, :modified_date, :label]
|
7
7
|
|
8
8
|
helper_method :apo_enforcement_enabled?
|
9
9
|
helper_method :object_properties
|
10
|
+
helper_method :admin_policy_object?
|
11
|
+
helper_method :object_type
|
12
|
+
helper_method :has_permissions?
|
10
13
|
|
11
|
-
before_filter
|
12
|
-
before_filter :load_apo_info
|
14
|
+
before_filter :load_and_authorize_object
|
15
|
+
before_filter :load_apo_info, :only => :show # depends on load_and_authz_object
|
13
16
|
|
14
17
|
def show
|
15
18
|
end
|
16
19
|
|
20
|
+
def audit_trail
|
21
|
+
# XXX Update when new version of ActiveFedora released
|
22
|
+
@audit_trail = @object.respond_to?(:audit_trail) ? @object.audit_trail : @object.inner_object.audit_trail
|
23
|
+
if params[:download]
|
24
|
+
send_data @audit_trail.to_xml, :disposition => 'inline', :type => 'text/xml'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def load_and_authorize_object
|
31
|
+
load_object
|
32
|
+
authorize_object
|
33
|
+
end
|
34
|
+
|
35
|
+
def load_object
|
36
|
+
@object = ActiveFedora::Base.find(params[:id], :cast => true)
|
37
|
+
end
|
38
|
+
|
39
|
+
def authorize_object
|
40
|
+
action = params[:action] == 'audit_trail' ? :read : params[:action].to_sym
|
41
|
+
authorize! action, @object
|
42
|
+
end
|
43
|
+
|
17
44
|
protected
|
18
45
|
|
19
46
|
def apo_enforcement_enabled?
|
@@ -28,23 +55,37 @@ module FcrepoAdmin
|
|
28
55
|
properties
|
29
56
|
end
|
30
57
|
|
58
|
+
def object_type
|
59
|
+
@object.class.to_s
|
60
|
+
end
|
61
|
+
|
31
62
|
def load_apo_info
|
32
63
|
@apo_relationship_name = nil
|
33
64
|
@apo = nil
|
34
|
-
# XXX Ideally we would use Hydra::PolicyAwareAccessControlsEnforcement#policy_class,
|
35
|
-
# but it's only available if it's been included in the application controller, i.e.,
|
36
|
-
# if APO access control enforcement is enabled. We want to know the name of the
|
37
|
-
# relationship regardless of whether policy enforcement is enabled.
|
38
|
-
apo_class = Hydra.config[:permissions].fetch(:policy_class, Hydra::AdminPolicy)
|
39
65
|
@object.reflections.each_value do |reflection|
|
40
66
|
if reflection.options[:property] == :is_governed_by \
|
41
|
-
&& reflection.macro == :belongs_to
|
67
|
+
&& reflection.macro == :belongs_to
|
42
68
|
@apo_relationship_name = reflection.name
|
43
69
|
@apo = @object.send(@apo_relationship_name)
|
44
70
|
break
|
45
71
|
end
|
46
72
|
end
|
47
|
-
|
73
|
+
end
|
74
|
+
|
75
|
+
def has_permissions?
|
76
|
+
@object.is_a?(Hydra::ModelMixins::RightsMetadata)
|
77
|
+
end
|
78
|
+
|
79
|
+
def admin_policy_object?
|
80
|
+
@object.is_a?(apo_class)
|
81
|
+
end
|
82
|
+
|
83
|
+
def apo_class
|
84
|
+
# XXX Ideally we would use Hydra::PolicyAwareAccessControlsEnforcement#policy_class,
|
85
|
+
# but it's only available if it's been included in the application controller, i.e.,
|
86
|
+
# if APO access control enforcement is enabled. We want to know the name of the
|
87
|
+
# relationship regardless of whether policy enforcement is enabled.
|
88
|
+
Hydra.config[:permissions].fetch(:policy_class, Hydra::AdminPolicy)
|
48
89
|
end
|
49
90
|
|
50
91
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
<div id="fcrepo-admin-dscontent">
|
2
1
|
<% if inline %>
|
3
2
|
<pre class="prettyprint pre-scrollable"><%= datastream.content %></pre>
|
4
3
|
<% else %>
|
@@ -6,7 +5,7 @@
|
|
6
5
|
<%= t("fcrepo_admin.datastream.content_not_text") %>.
|
7
6
|
</p>
|
8
7
|
<% end %>
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
<p>
|
9
|
+
<%= link_to t("fcrepo_admin.datastream.download"), "#{fcrepo_admin.object_datastream_path(datastream.pid, datastream.dsid)}?download=true", :class => "btn btn-primary" %>
|
10
|
+
</p>
|
11
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="well">
|
2
|
+
<ul class="nav nav-list">
|
3
|
+
<li class="nav-header">
|
4
|
+
<%= t("fcrepo_admin.datastream.nav.header") %>
|
5
|
+
</li>
|
6
|
+
<li>
|
7
|
+
<%= link_to_unless_current t("fcrepo_admin.datastream.nav.items.summary"), fcrepo_admin.object_datastream_path(datastream.pid, datastream.dsid) %>
|
8
|
+
</li>
|
9
|
+
<li>
|
10
|
+
<%= link_to_unless_current t("fcrepo_admin.datastream.nav.items.edit"), fcrepo_admin.edit_object_datastream_path(datastream.pid, datastream.dsid) %>
|
11
|
+
</li>
|
12
|
+
<li>
|
13
|
+
<%= link_to t("fcrepo_admin.datastream.nav.items.download"), "#{fcrepo_admin.object_datastream_path(datastream.pid, datastream.dsid)}?download=true" %>
|
14
|
+
</li>
|
15
|
+
<li class="divider"></li>
|
16
|
+
<%= render :partial => 'fcrepo_admin/objects/object_nav_items', :locals => {:object => object} %>
|
17
|
+
</ul>
|
18
|
+
</div>
|
@@ -4,6 +4,7 @@
|
|
4
4
|
<th scope="col"><%= t("fcrepo_admin.datastreams.header.id") %></th>
|
5
5
|
<th scope="col"><%= t("fcrepo_admin.datastreams.header.label") %></th>
|
6
6
|
<th scope="col"><%= t("fcrepo_admin.datastreams.header.mimetype") %></th>
|
7
|
+
<th scope="col"><%= t("fcrepo_admin.datastreams.header.create_date") %></th>
|
7
8
|
</tr>
|
8
9
|
</thead>
|
9
10
|
<tbody>
|
@@ -12,6 +13,7 @@
|
|
12
13
|
<td><%= link_to dsid, fcrepo_admin.object_datastream_path(ds.pid, dsid) %></td>
|
13
14
|
<td><%= ds.profile["dsLabel"] %></td>
|
14
15
|
<td><%= ds.profile["dsMIME"] %></td>
|
16
|
+
<td><%= ds.profile["dsCreateDate"] %></td>
|
15
17
|
</tr>
|
16
18
|
<% end %>
|
17
19
|
</tbody>
|
@@ -1,7 +1,3 @@
|
|
1
|
-
<h1><%= @datastream.pid %></h1>
|
2
|
-
|
3
|
-
<h3><%= t("fcrepo_admin.datastream.title") %>: <%= @datastream.dsid %></h3>
|
4
|
-
|
5
1
|
<%= form_tag fcrepo_admin.object_datastream_path(@datastream.pid, @datastream.dsid), :method => :put, :multipart => true do %>
|
6
2
|
<div>
|
7
3
|
<%= label_tag "file", t("fcrepo_admin.datastream.edit.file") %>
|
@@ -1,15 +1,3 @@
|
|
1
|
-
<h1><%= @datastream.pid %></h1>
|
2
|
-
|
3
|
-
<ul class="pull-right nav nav-pills">
|
4
|
-
<% if can? :edit, @datastream %>
|
5
|
-
<li>
|
6
|
-
<%= link_to content_tag(:i, "", :class => "icon-pencil"), fcrepo_admin.edit_object_datastream_path(@datastream.pid, @datastream.dsid) %>
|
7
|
-
</li>
|
8
|
-
<% end %>
|
9
|
-
</ul>
|
10
|
-
|
11
|
-
<h3><%= t("fcrepo_admin.datastream.title") %>: <%= @datastream.dsid %></h3>
|
12
|
-
|
13
1
|
<div class="tabbable">
|
14
2
|
<ul class="nav nav-tabs">
|
15
3
|
<li class="active"><a href="#tab1" data-toggle="tab"><%= t("fcrepo_admin.datastream.tabs.content") %></a></li>
|
@@ -24,4 +12,3 @@
|
|
24
12
|
</div>
|
25
13
|
</div>
|
26
14
|
</div>
|
27
|
-
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<li class="nav-header">
|
2
|
+
<%= t("fcrepo_admin.object.nav.header") %>
|
3
|
+
</li>
|
4
|
+
<li>
|
5
|
+
<%= link_to_unless_current t("fcrepo_admin.object.nav.items.summary"), fcrepo_admin.object_path(object) %>
|
6
|
+
</li>
|
7
|
+
<li>
|
8
|
+
<%= link_to_unless_current t("fcrepo_admin.object.nav.items.audit_trail"), fcrepo_admin.audit_trail_object_path(object) %>
|
9
|
+
</li>
|
@@ -1,9 +1,7 @@
|
|
1
|
-
<h1><%= @object.pid %></h1>
|
2
|
-
|
3
1
|
<h3><%= t("fcrepo_admin.audit_trail.title") %></h3>
|
4
2
|
|
5
3
|
<p>
|
6
|
-
<%= link_to t("fcrepo_admin.audit_trail.download"), "#{fcrepo_admin.
|
4
|
+
<%= link_to t("fcrepo_admin.audit_trail.download"), "#{fcrepo_admin.audit_trail_object_path(@object)}?download=true", :class => "btn btn-primary" %>
|
7
5
|
</p>
|
8
6
|
|
9
7
|
<table class="table table-bordered table-condensed table-striped">
|
@@ -1,9 +1,3 @@
|
|
1
|
-
<h1><%= @object.pid %></h1>
|
2
|
-
|
3
|
-
<p>
|
4
|
-
Object Type: <%= @object.class.to_s %>
|
5
|
-
</p>
|
6
|
-
|
7
1
|
<div class="tabbable">
|
8
2
|
<ul class="nav nav-tabs">
|
9
3
|
<li class="active"><a href="#tab-datastreams" data-toggle="tab"><%= t("fcrepo_admin.object.tabs.datastreams") %></a></li>
|
@@ -18,12 +12,13 @@
|
|
18
12
|
<%= render :partial => 'properties', :locals => {:properties => object_properties} %>
|
19
13
|
</div>
|
20
14
|
<div class="tab-pane" id="tab-permissions">
|
15
|
+
<% if has_permissions? %>
|
21
16
|
<h4>Direct Permissions</h4>
|
22
17
|
<%= render :partial => 'permissions', :locals => {:permissions => @object.permissions} %>
|
23
18
|
<h4>Inherited Permissions</h4>
|
24
19
|
<% unless apo_enforcement_enabled? %>
|
25
20
|
<p class="alert">
|
26
|
-
<%= t("fcrepo_admin.object.apo.enforcement_disabled")
|
21
|
+
<%= t("fcrepo_admin.object.apo.enforcement_disabled") %>.
|
27
22
|
</p>
|
28
23
|
<% end %>
|
29
24
|
<% if @apo_relationship_name %>
|
@@ -40,11 +35,12 @@
|
|
40
35
|
<% end %>
|
41
36
|
<% else %>
|
42
37
|
<p class="alert alert-info">
|
43
|
-
<%= t("fcrepo_admin.object.apo.relationship_undefined")
|
38
|
+
<%= t("fcrepo_admin.object.apo.relationship_undefined") %>: <%= object_type %>.
|
44
39
|
</p>
|
45
40
|
<% end %>
|
46
|
-
|
41
|
+
<% else %>
|
42
|
+
<%= t("fcrepo_admin.object.permissions.not_supported") %>: <%= object_type %>.
|
43
|
+
<% end %>
|
44
|
+
</div> <!-- /tab-permissions -->
|
47
45
|
</div>
|
48
46
|
</div>
|
49
|
-
|
50
|
-
<%= render :partial => 'more_info', :locals => {:pid => @object.pid} %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% content_for :main do %>
|
2
|
+
<h1><%= object_title %></h1>
|
3
|
+
<h3><%= t("fcrepo_admin.datastream.title") %>: <%= @datastream.dsid %></h3>
|
4
|
+
<%= yield %>
|
5
|
+
<% end %>
|
6
|
+
<% content_for :sidebar do %>
|
7
|
+
<%= render :partial => 'fcrepo_admin/datastreams/datastream_nav', :locals => {:datastream => @datastream, :object => @object} %>
|
8
|
+
<% end %>
|
9
|
+
<%= render :template => 'layouts/fcrepo_admin/default' %>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en" class="no-js">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6
|
+
|
7
|
+
<!-- Mobile viewport optimization h5bp.com/ad -->
|
8
|
+
<meta name="HandheldFriendly" content="True">
|
9
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
10
|
+
|
11
|
+
<!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
|
12
|
+
<!--[if IEMobile]>
|
13
|
+
<meta http-equiv="cleartype" content="on">
|
14
|
+
<![endif]-->
|
15
|
+
|
16
|
+
<title><%= h(@page_title || application_name) %></title>
|
17
|
+
<link href="<%= opensearch_catalog_path(:format => 'xml', :only_path => false) %>" title="<%= application_name%>" type="application/opensearchdescription+xml" rel="search"/>
|
18
|
+
<%= favicon_link_tag asset_path('favicon.ico') %>
|
19
|
+
<%= stylesheet_link_tag "application" %>
|
20
|
+
<%= javascript_include_tag "application" %>
|
21
|
+
<%= csrf_meta_tags %>
|
22
|
+
<%= raw(render_head_content) %>
|
23
|
+
|
24
|
+
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
|
25
|
+
<!--[if lt IE 9]>
|
26
|
+
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
27
|
+
<![endif]-->
|
28
|
+
|
29
|
+
</head>
|
30
|
+
<% onload_text = "$('input#q').focus();" if params[:q].to_s.empty? and params[:f].to_s.empty? and params[:id].nil? %>
|
31
|
+
<body onload="<%= onload_text %>" class="<%= render_body_class %>">
|
32
|
+
<%= render :partial => 'shared/header_navbar' %>
|
33
|
+
|
34
|
+
<div id="ajax-modal" class="modal hide fade" tabindex="-1"></div>
|
35
|
+
|
36
|
+
<div id="main-container" class="container">
|
37
|
+
<!-- Top bar -->
|
38
|
+
<div id="search-found" class="row hidden-phone">
|
39
|
+
<%= topbar_items.join('').html_safe %>
|
40
|
+
</div>
|
41
|
+
<!-- /Top bar -->
|
42
|
+
<div class="row">
|
43
|
+
<div class="span12">
|
44
|
+
<div id="main-flashes">
|
45
|
+
<%= render :partial=>'/flash_msg' %>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div class="row">
|
51
|
+
<div class="span9">
|
52
|
+
<%= yield :main %>
|
53
|
+
</div>
|
54
|
+
<div class="span3">
|
55
|
+
<%= yield :sidebar %>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
<!-- /container -->
|
60
|
+
|
61
|
+
<%= render :partial => 'shared/footer' %>
|
62
|
+
</body>
|
63
|
+
</html>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<% content_for :main do %>
|
2
|
+
<h1><%= object_title %></h1>
|
3
|
+
<%= yield %>
|
4
|
+
<% end %>
|
5
|
+
<% content_for :sidebar do %>
|
6
|
+
<%= render :partial => 'fcrepo_admin/objects/object_nav', :locals => {:object => @object} %>
|
7
|
+
<% end %>
|
8
|
+
<%= render :template => 'layouts/fcrepo_admin/default' %>
|
@@ -1,11 +1,15 @@
|
|
1
1
|
en:
|
2
2
|
fcrepo_admin:
|
3
3
|
object:
|
4
|
-
more_info: 'More Information'
|
5
4
|
tabs:
|
6
5
|
datastreams: 'Datastreams'
|
7
6
|
properties: 'Properties'
|
8
7
|
permissions: 'Permissions'
|
8
|
+
nav:
|
9
|
+
header: 'Object Admin'
|
10
|
+
items:
|
11
|
+
summary: 'Object Summary'
|
12
|
+
audit_trail: 'Audit Trail'
|
9
13
|
properties:
|
10
14
|
title: 'Properties'
|
11
15
|
keys:
|
@@ -16,6 +20,7 @@ en:
|
|
16
20
|
label: 'Label'
|
17
21
|
permissions:
|
18
22
|
no_permissions: 'No permissions.'
|
23
|
+
not_supported: 'This object type does not support Hydra permissions'
|
19
24
|
header:
|
20
25
|
type: 'Type'
|
21
26
|
name: 'Name'
|
@@ -23,8 +28,8 @@ en:
|
|
23
28
|
apo:
|
24
29
|
governed_by: 'Governed By'
|
25
30
|
not_assigned: 'Not Assigned'
|
26
|
-
enforcement_disabled: 'Admin policy access control enforcement is disabled
|
27
|
-
relationship_undefined: 'This object type does not define an admin policy relationship
|
31
|
+
enforcement_disabled: 'Admin policy access control enforcement is disabled'
|
32
|
+
relationship_undefined: 'This object type does not define an admin policy relationship'
|
28
33
|
audit_trail:
|
29
34
|
title: 'Audit Trail'
|
30
35
|
download: 'Download'
|
@@ -42,8 +47,16 @@ en:
|
|
42
47
|
id: 'Datastream ID'
|
43
48
|
label: 'Label'
|
44
49
|
mimetype: 'MIME Type'
|
50
|
+
create_date: 'Create Date'
|
45
51
|
datastream:
|
46
52
|
title: 'Datastream'
|
53
|
+
nav:
|
54
|
+
header: 'Datastream Admin'
|
55
|
+
items:
|
56
|
+
summary: 'Datastream Summary'
|
57
|
+
edit: 'Edit Content'
|
58
|
+
download: 'Download Content'
|
59
|
+
object: 'Object Admin'
|
47
60
|
tabs:
|
48
61
|
content: 'Content'
|
49
62
|
profile: 'Profile'
|
data/config/routes.rb
CHANGED
@@ -2,12 +2,8 @@ FcrepoAdmin::Engine.routes.draw do
|
|
2
2
|
|
3
3
|
scope :module => "fcrepo_admin" do
|
4
4
|
resources :objects, :only => :show do
|
5
|
-
|
6
|
-
|
7
|
-
get 'download'
|
8
|
-
end
|
9
|
-
end
|
10
|
-
resources :audit_trail, :only => :index
|
5
|
+
get 'audit_trail', :on => :member
|
6
|
+
resources :datastreams, :only => [:show, :edit, :update]
|
11
7
|
end
|
12
8
|
end
|
13
9
|
|
data/lib/fcrepo_admin.rb
CHANGED
@@ -6,4 +6,5 @@ module FcrepoAdmin
|
|
6
6
|
autoload :SolrDocumentExtension, 'fcrepo_admin/solr_document_extension'
|
7
7
|
autoload :ControllerBehavior, 'fcrepo_admin/controller_behavior'
|
8
8
|
autoload :DatastreamAbility, 'fcrepo_admin/datastream_ability'
|
9
|
+
autoload :BlacklightHelperBehavior, 'fcrepo_admin/blacklight_helper_behavior'
|
9
10
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module FcrepoAdmin
|
2
|
+
module BlacklightHelperBehavior
|
3
|
+
|
4
|
+
def link_to_document(doc, opts={:label=>nil, :counter => nil, :results_view => true})
|
5
|
+
opts[:label] ||= blacklight_config.index.show_link.to_sym
|
6
|
+
label = render_document_index_label doc, opts
|
7
|
+
link_to label, fcrepo_admin.object_path(doc.id), { :'data-counter' => opts[:counter] }.merge(opts.reject { |k,v| [:label, :counter, :results_view].include? k })
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module FcrepoAdmin
|
2
2
|
module ControllerBehavior
|
3
3
|
|
4
|
-
def load_and_authz_object
|
5
|
-
load_object
|
4
|
+
def load_and_authz_object
|
5
|
+
load_object
|
6
6
|
authorize_object
|
7
7
|
end
|
8
8
|
|
9
|
-
def load_object
|
10
|
-
@object = ActiveFedora::Base.find(params[
|
9
|
+
def load_object
|
10
|
+
@object = ActiveFedora::Base.find(params[:id], :cast => true)
|
11
11
|
end
|
12
12
|
|
13
13
|
def authorize_object
|
@@ -20,7 +20,7 @@ module FcrepoAdmin
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def load_datastream
|
23
|
-
|
23
|
+
@object ||= ActiveFedora::Base.find(params[:object_id], :cast => true)
|
24
24
|
@datastream = @object.datastreams[params[:id]]
|
25
25
|
end
|
26
26
|
|
data/lib/fcrepo_admin/version.rb
CHANGED
@@ -7,4 +7,16 @@ describe FcrepoAdmin::ObjectsController do
|
|
7
7
|
after { object.delete }
|
8
8
|
it { should render_template(:show) }
|
9
9
|
end
|
10
|
+
context "#audit_trail" do
|
11
|
+
let(:object) { FactoryGirl.create(:content_model) }
|
12
|
+
after { object.delete }
|
13
|
+
subject { get :audit_trail, :id => object, :use_route => 'fcrepo_admin' }
|
14
|
+
it { should render_template(:audit_trail) }
|
15
|
+
end
|
16
|
+
context "#audit_trail?download=true" do
|
17
|
+
subject { get :audit_trail, :id => object, :download => 'true', :use_route => 'fcrepo_admin' }
|
18
|
+
let(:object) { FactoryGirl.create(:content_model) }
|
19
|
+
after { object.delete }
|
20
|
+
its(:response_code) { should eq(200) }
|
21
|
+
end
|
10
22
|
end
|
@@ -17,7 +17,7 @@ describe "datastreams/show.html.erb" do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
it "should have a link to download the datastream content" do
|
20
|
-
page.should have_link(I18n.t("fcrepo_admin.datastream.download"), :href => fcrepo_admin.
|
20
|
+
page.should have_link(I18n.t("fcrepo_admin.datastream.download"), :href => "#{fcrepo_admin.object_datastream_path(object, dsid)}?download=true")
|
21
21
|
end
|
22
22
|
context "user can edit" do
|
23
23
|
let(:user) { FactoryGirl.create(:user) }
|
data/spec/features/{audit_trail/index.html.erb_spec.rb → objects/audit_trail.html.erb_spec.rb}
RENAMED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "audit_trail
|
3
|
+
describe "audit_trail.html.erb" do
|
4
4
|
let(:object) { FactoryGirl.create(:content_model) }
|
5
5
|
after { object.delete }
|
6
6
|
it "should display the audit trail" do
|
7
|
-
visit fcrepo_admin.
|
7
|
+
visit fcrepo_admin.audit_trail_object_path(object)
|
8
8
|
page.should have_content(object.pid)
|
9
|
-
page.should have_link(I18n.t("fcrepo_admin.audit_trail.download"), :href => "#{fcrepo_admin.
|
9
|
+
page.should have_link(I18n.t("fcrepo_admin.audit_trail.download"), :href => "#{fcrepo_admin.audit_trail_object_path(object)}?download=true")
|
10
10
|
end
|
11
11
|
end
|
@@ -20,7 +20,7 @@ describe "objects/show.html.erb" do
|
|
20
20
|
end
|
21
21
|
it "should link to its audit trail" do
|
22
22
|
visit fcrepo_admin.object_path(object)
|
23
|
-
page.should have_link(I18n.t("fcrepo_admin.audit_trail.title"), :href => fcrepo_admin.
|
23
|
+
page.should have_link(I18n.t("fcrepo_admin.audit_trail.title"), :href => fcrepo_admin.audit_trail_object_path(object))
|
24
24
|
end
|
25
25
|
it "should display the object's permissions"
|
26
26
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The action you wanted to perform was forbidden (403)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/403.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The action you wanted to perform was forbidden.</h1>
|
23
|
+
<p>Maybe you tried to perform an action you didn't have permissions for.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fcrepo_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-04-
|
15
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: hydra-head
|
@@ -256,33 +256,37 @@ files:
|
|
256
256
|
- LICENSE
|
257
257
|
- README.rdoc
|
258
258
|
- Rakefile
|
259
|
-
- app/controllers/fcrepo_admin/audit_trail_controller.rb
|
260
259
|
- app/controllers/fcrepo_admin/datastreams_controller.rb
|
261
260
|
- app/controllers/fcrepo_admin/objects_controller.rb
|
261
|
+
- app/helpers/fcrepo_admin/objects_helper.rb
|
262
262
|
- app/mailers/.gitkeep
|
263
263
|
- app/models/.gitkeep
|
264
|
-
- app/views/fcrepo_admin/audit_trail/index.html.erb
|
265
|
-
- app/views/fcrepo_admin/catalog/_datastreams.html.erb
|
266
|
-
- app/views/fcrepo_admin/catalog/_show.html.erb
|
267
264
|
- app/views/fcrepo_admin/datastreams/_content.html.erb
|
265
|
+
- app/views/fcrepo_admin/datastreams/_datastream_nav.html.erb
|
268
266
|
- app/views/fcrepo_admin/datastreams/_datastreams.html
|
269
267
|
- app/views/fcrepo_admin/datastreams/_profile.html.erb
|
270
268
|
- app/views/fcrepo_admin/datastreams/edit.html.erb
|
271
269
|
- app/views/fcrepo_admin/datastreams/index.html.erb
|
272
270
|
- app/views/fcrepo_admin/datastreams/show.html.erb
|
273
271
|
- app/views/fcrepo_admin/objects/_more_info.html.erb
|
272
|
+
- app/views/fcrepo_admin/objects/_object_nav.html.erb
|
273
|
+
- app/views/fcrepo_admin/objects/_object_nav_items.html.erb
|
274
274
|
- app/views/fcrepo_admin/objects/_permissions.html.erb
|
275
275
|
- app/views/fcrepo_admin/objects/_permissions_header.html.erb
|
276
276
|
- app/views/fcrepo_admin/objects/_permissions_row.html.erb
|
277
277
|
- app/views/fcrepo_admin/objects/_properties.html.erb
|
278
|
+
- app/views/fcrepo_admin/objects/audit_trail.html.erb
|
278
279
|
- app/views/fcrepo_admin/objects/show.html.erb
|
280
|
+
- app/views/layouts/fcrepo_admin/datastreams.html.erb
|
281
|
+
- app/views/layouts/fcrepo_admin/default.html.erb
|
282
|
+
- app/views/layouts/fcrepo_admin/objects.html.erb
|
279
283
|
- config/locales/fcrepo_admin.en.yml
|
280
284
|
- config/routes.rb
|
281
285
|
- doc/README_FOR_APP
|
282
286
|
- fcrepo_admin.gemspec
|
283
287
|
- lib/assets/.gitkeep
|
284
|
-
- lib/assets/stylesheets/fcrepo_admin/fcrepo_admin.css
|
285
288
|
- lib/fcrepo_admin.rb
|
289
|
+
- lib/fcrepo_admin/blacklight_helper_behavior.rb
|
286
290
|
- lib/fcrepo_admin/controller_behavior.rb
|
287
291
|
- lib/fcrepo_admin/datastream_ability.rb
|
288
292
|
- lib/fcrepo_admin/engine.rb
|
@@ -290,15 +294,13 @@ files:
|
|
290
294
|
- lib/fcrepo_admin/version.rb
|
291
295
|
- lib/tasks/.gitkeep
|
292
296
|
- lib/tasks/fcrepo_admin.rake
|
293
|
-
- spec/controllers/audit_trail_controller_spec.rb
|
294
297
|
- spec/controllers/datastreams_controller_spec.rb
|
295
298
|
- spec/controllers/objects_controller_spec.rb
|
296
299
|
- spec/factories/fcrepo_admin_factories.rb
|
297
300
|
- spec/factories/user_factories.rb
|
298
|
-
- spec/features/audit_trail/index.html.erb_spec.rb
|
299
|
-
- spec/features/catalog/show.html.erb_spec.rb
|
300
301
|
- spec/features/datastreams/edit.html.erb_spec.rb
|
301
302
|
- spec/features/datastreams/show.html.erb_spec.rb
|
303
|
+
- spec/features/objects/audit_trail.html.erb_spec.rb
|
302
304
|
- spec/features/objects/show.html.erb_spec.rb
|
303
305
|
- spec/fixtures/auditable.foxml.xml
|
304
306
|
- spec/internal/README.rdoc
|
@@ -309,6 +311,7 @@ files:
|
|
309
311
|
- spec/internal/app/controllers/application_controller.rb
|
310
312
|
- spec/internal/app/controllers/catalog_controller.rb
|
311
313
|
- spec/internal/app/helpers/application_helper.rb
|
314
|
+
- spec/internal/app/helpers/blacklight_helper.rb
|
312
315
|
- spec/internal/app/mailers/.gitkeep
|
313
316
|
- spec/internal/app/models/.gitkeep
|
314
317
|
- spec/internal/app/models/ability.rb
|
@@ -316,7 +319,6 @@ files:
|
|
316
319
|
- spec/internal/app/models/content_model.rb
|
317
320
|
- spec/internal/app/models/solr_document.rb
|
318
321
|
- spec/internal/app/models/user.rb
|
319
|
-
- spec/internal/app/views/catalog/_show_default.html.erb
|
320
322
|
- spec/internal/app/views/layouts/application.html.erb
|
321
323
|
- spec/internal/config.ru
|
322
324
|
- spec/internal/config/application.rb
|
@@ -344,6 +346,7 @@ files:
|
|
344
346
|
- spec/internal/db/schema.rb
|
345
347
|
- spec/internal/lib/assets/.gitkeep
|
346
348
|
- spec/internal/log/.gitkeep
|
349
|
+
- spec/internal/public/403.html
|
347
350
|
- spec/internal/public/404.html
|
348
351
|
- spec/internal/public/422.html
|
349
352
|
- spec/internal/public/500.html
|
@@ -372,7 +375,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
372
375
|
version: '0'
|
373
376
|
segments:
|
374
377
|
- 0
|
375
|
-
hash:
|
378
|
+
hash: 1033224864064252852
|
376
379
|
requirements: []
|
377
380
|
rubyforge_project:
|
378
381
|
rubygems_version: 1.8.25
|
@@ -380,15 +383,13 @@ signing_key:
|
|
380
383
|
specification_version: 3
|
381
384
|
summary: Hydra-based Fedora Commons repository admin tool.
|
382
385
|
test_files:
|
383
|
-
- spec/controllers/audit_trail_controller_spec.rb
|
384
386
|
- spec/controllers/datastreams_controller_spec.rb
|
385
387
|
- spec/controllers/objects_controller_spec.rb
|
386
388
|
- spec/factories/fcrepo_admin_factories.rb
|
387
389
|
- spec/factories/user_factories.rb
|
388
|
-
- spec/features/audit_trail/index.html.erb_spec.rb
|
389
|
-
- spec/features/catalog/show.html.erb_spec.rb
|
390
390
|
- spec/features/datastreams/edit.html.erb_spec.rb
|
391
391
|
- spec/features/datastreams/show.html.erb_spec.rb
|
392
|
+
- spec/features/objects/audit_trail.html.erb_spec.rb
|
392
393
|
- spec/features/objects/show.html.erb_spec.rb
|
393
394
|
- spec/fixtures/auditable.foxml.xml
|
394
395
|
- spec/internal/README.rdoc
|
@@ -399,6 +400,7 @@ test_files:
|
|
399
400
|
- spec/internal/app/controllers/application_controller.rb
|
400
401
|
- spec/internal/app/controllers/catalog_controller.rb
|
401
402
|
- spec/internal/app/helpers/application_helper.rb
|
403
|
+
- spec/internal/app/helpers/blacklight_helper.rb
|
402
404
|
- spec/internal/app/mailers/.gitkeep
|
403
405
|
- spec/internal/app/models/.gitkeep
|
404
406
|
- spec/internal/app/models/ability.rb
|
@@ -406,7 +408,6 @@ test_files:
|
|
406
408
|
- spec/internal/app/models/content_model.rb
|
407
409
|
- spec/internal/app/models/solr_document.rb
|
408
410
|
- spec/internal/app/models/user.rb
|
409
|
-
- spec/internal/app/views/catalog/_show_default.html.erb
|
410
411
|
- spec/internal/app/views/layouts/application.html.erb
|
411
412
|
- spec/internal/config.ru
|
412
413
|
- spec/internal/config/application.rb
|
@@ -434,6 +435,7 @@ test_files:
|
|
434
435
|
- spec/internal/db/schema.rb
|
435
436
|
- spec/internal/lib/assets/.gitkeep
|
436
437
|
- spec/internal/log/.gitkeep
|
438
|
+
- spec/internal/public/403.html
|
437
439
|
- spec/internal/public/404.html
|
438
440
|
- spec/internal/public/422.html
|
439
441
|
- spec/internal/public/500.html
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module FcrepoAdmin
|
2
|
-
class AuditTrailController < ApplicationController
|
3
|
-
|
4
|
-
include FcrepoAdmin::ControllerBehavior
|
5
|
-
|
6
|
-
before_filter :load_and_authz_object
|
7
|
-
|
8
|
-
def index
|
9
|
-
# XXX Update when new version of ActiveFedora released
|
10
|
-
@audit_trail = @object.respond_to?(:audit_trail) ? @object.audit_trail : @object.inner_object.audit_trail
|
11
|
-
if params[:download]
|
12
|
-
send_data @audit_trail.to_xml, :disposition => 'inline', :type => 'text/xml'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<h3><%= t("fcrepo_admin.datastream.title").pluralize %></h3>
|
2
|
-
<table class="table table-bordered table-condensed">
|
3
|
-
<thead>
|
4
|
-
<tr>
|
5
|
-
<th scope="col"><%= t("fcrepo_admin.datastream.id") %></th>
|
6
|
-
<th scope="col"><%= t("fcrepo_admin.datastream.label") %></th>
|
7
|
-
<th scope="col"><%= t("fcrepo_admin.datastream.mimetype") %></th>
|
8
|
-
</tr>
|
9
|
-
</thead>
|
10
|
-
<tbody>
|
11
|
-
<% datastreams.reject { |dsid, dsProfile| dsProfile.empty? }.each do |dsid, dsProfile| %>
|
12
|
-
<tr>
|
13
|
-
<td><%= link_to dsid, fcrepo_admin.object_datastream_path(pid, dsid) %></td>
|
14
|
-
<td><%= dsProfile["dsLabel"] %></td>
|
15
|
-
<td><%= dsProfile["dsMIME"] %></td>
|
16
|
-
</tr>
|
17
|
-
<% end %>
|
18
|
-
</tbody>
|
19
|
-
</table>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FcrepoAdmin::AuditTrailController do
|
4
|
-
context "#index" do
|
5
|
-
let(:object) { FactoryGirl.create(:content_model) }
|
6
|
-
after { object.delete }
|
7
|
-
it "should render the index template" do
|
8
|
-
get :index, :object_id => object, :use_route => 'fcrepo_admin'
|
9
|
-
response.should render_template(:index)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
context "#index?download=true" do
|
13
|
-
context "object does not respond to audit_trail" do
|
14
|
-
subject { get :index, :object_id => object, :download => 'true', :use_route => 'fcrepo_admin' }
|
15
|
-
let(:object) { FactoryGirl.create(:content_model) }
|
16
|
-
after { object.delete }
|
17
|
-
its(:response_code) { should eq(200) }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "catalog/show.html.erb" do
|
4
|
-
after { object.delete }
|
5
|
-
context "basic object" do
|
6
|
-
let(:object) { FactoryGirl.create(:content_model) }
|
7
|
-
it "should link to all datastreams" do
|
8
|
-
visit catalog_path(object)
|
9
|
-
object.datastreams.reject { |dsid, ds| ds.profile.empty? }.each_key do |dsid|
|
10
|
-
page.should have_link(dsid, :href => fcrepo_admin.object_datastream_path(object, dsid))
|
11
|
-
end
|
12
|
-
end
|
13
|
-
it "should link to its audit trail" do
|
14
|
-
visit catalog_path(object)
|
15
|
-
page.should have_link(I18n.t("fcrepo_admin.audit_trail.title"))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
context "object has admin policy" do
|
19
|
-
it "should link to the APO"
|
20
|
-
end
|
21
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<%# default partial to display solr document fields in catalog show view -%>
|
2
|
-
<dl class="dl-horizontal dl-invert">
|
3
|
-
<% document_show_fields.each do |solr_fname, field| -%>
|
4
|
-
<% if should_render_show_field? document, field %>
|
5
|
-
<dt class="blacklight-<%= solr_fname.parameterize %>"><%= render_document_show_field_label :field => solr_fname %></dt>
|
6
|
-
<dd class="blacklight-<%= solr_fname.parameterize %>"><%= render_document_show_field_value :document => document, :field => solr_fname %></dd>
|
7
|
-
<% end -%>
|
8
|
-
<% end -%>
|
9
|
-
</dl>
|
10
|
-
<%# end blacklight default -%>
|
11
|
-
|
12
|
-
<%= render :partial => 'fcrepo_admin/catalog/show', :locals => {:document => document} %>
|