fcrepo_admin 0.3.0 → 0.3.1
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.
- 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} %>
|