fcrepo_admin 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.rdoc +10 -2
- data/README.rdoc +59 -14
- data/app/controllers/fcrepo_admin/datastreams_controller.rb +8 -46
- data/app/controllers/fcrepo_admin/objects_controller.rb +1 -1
- data/app/views/fcrepo_admin/datastreams/_alert.html.erb +4 -0
- data/app/views/fcrepo_admin/datastreams/_content.html.erb +1 -1
- data/app/views/fcrepo_admin/datastreams/_datastreams_list.html.erb +3 -3
- data/app/views/fcrepo_admin/datastreams/_profile.html.erb +4 -5
- data/app/views/fcrepo_admin/datastreams/content.html.erb +2 -1
- data/app/views/fcrepo_admin/datastreams/edit.html.erb +4 -3
- data/app/views/fcrepo_admin/datastreams/history.html.erb +3 -8
- data/app/views/fcrepo_admin/datastreams/index.html.erb +4 -1
- data/app/views/fcrepo_admin/datastreams/upload.html.erb +4 -3
- data/app/views/fcrepo_admin/objects/_direct_permissions.html.erb +1 -1
- data/app/views/fcrepo_admin/objects/_permissions_list.html.erb +1 -1
- data/app/views/fcrepo_admin/objects/permissions.html.erb +8 -2
- data/app/views/fcrepo_admin/shared/_context_nav.html.erb +2 -2
- data/app/views/layouts/fcrepo_admin/datastreams.html.erb +5 -7
- data/app/views/layouts/fcrepo_admin/objects.html.erb +1 -1
- data/config/locales/fcrepo_admin.en.yml +33 -22
- data/config/routes.rb +5 -2
- data/lib/fcrepo_admin.rb +51 -1
- data/lib/fcrepo_admin/decorators/active_fedora/base_decorator.rb +33 -0
- data/lib/fcrepo_admin/decorators/active_fedora/datastream_decorator.rb +35 -0
- data/lib/fcrepo_admin/engine.rb +6 -0
- data/lib/fcrepo_admin/helpers/datastreams_helper_behavior.rb +132 -8
- data/lib/fcrepo_admin/helpers/objects_helper_behavior.rb +47 -8
- data/lib/fcrepo_admin/version.rb +1 -1
- data/spec/controllers/datastreams_controller_spec.rb +53 -29
- data/spec/controllers/objects_controller_spec.rb +1 -1
- data/spec/features/datastreams/content.html.erb_spec.rb +7 -0
- data/spec/features/datastreams/edit.html.erb_spec.rb +1 -1
- data/spec/features/datastreams/index.html.erb_spec.rb +3 -3
- data/spec/features/datastreams/show.html.erb_spec.rb +44 -12
- data/spec/features/datastreams/upload.html.erb_spec.rb +1 -1
- data/spec/internal/app/models/item.rb +3 -0
- data/spec/internal/app/models/solr_document.rb +0 -2
- data/spec/internal/spec/fixtures/files/hydra.jpg +0 -0
- metadata +9 -8
- data/app/views/fcrepo_admin/datastreams/_context_nav.html.erb +0 -9
- data/app/views/fcrepo_admin/datastreams/_context_nav_items.html.erb +0 -38
- data/app/views/fcrepo_admin/objects/_context_nav.html.erb +0 -9
- data/app/views/fcrepo_admin/objects/_context_nav_datastreams.html.erb +0 -13
- data/app/views/fcrepo_admin/objects/_context_nav_items.html.erb +0 -19
- data/lib/fcrepo_admin/helpers/fcrepo_admin_helper_behavior.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b41a170f6b9f8ad2296559c6ff76f85c1b325c2
|
4
|
+
data.tar.gz: ce970e804c3e9fec32d7ac493bdb001e775f765d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13935a3cdf2cc95bd0048caf3a25c3e1442b4229b2f874ad93c0eb47bb4bbc2164a9f78da5acbef5dec5ca39e949d7db46b4fa1b167d821d16e88b8308ecff08
|
7
|
+
data.tar.gz: bd682bf0c49d2f06dd2aef3c630d4da5ed723c2efc6e1d1005a3801f40d25f7df096a4267f9e63566481556b691213915fcb6c4ffb969b04397477a584688d53
|
data/HISTORY.rdoc
CHANGED
@@ -1,6 +1,14 @@
|
|
1
|
+
=== 0.5.0 (2013-05-17)
|
2
|
+
|
3
|
+
* Feature: Configurable settings.
|
4
|
+
* Context navigation menus refactored: customizations now done through helpers and configuration settings, not by overriding partials.
|
5
|
+
* ActiveFedora::Base and ActiveFedora::Datastream classes extended by decorators.
|
6
|
+
* Tests added.
|
7
|
+
|
1
8
|
==== 0.4.1 (2013-05-14)
|
2
9
|
|
3
|
-
* Feature: Datastream history view
|
10
|
+
* Feature: Datastream history view.
|
11
|
+
* Feature: Support for asOfDateTime parameter added to datastream read views to display content and profile information for datastream versions.
|
4
12
|
|
5
13
|
=== 0.4.0 (2013-05-03)
|
6
14
|
|
@@ -16,7 +24,7 @@
|
|
16
24
|
|
17
25
|
* Moved FcrepoAdmin::BlacklightHelperBehavior to FcrepoAdmin::Helpers::BlacklightHelperBehavior.
|
18
26
|
* FcrepoAdmin::ObjectsHelper methods can now be easily overridden.
|
19
|
-
* DatastreamsHelper module added.
|
27
|
+
* FcrepoAdmin::DatastreamsHelper module added.
|
20
28
|
* Shared helper methods in new module FcrepoAdmin::Helpers::FcrepoAdminHelperBehavior.
|
21
29
|
* Objects and datastreams controller behaviors are now easily overrideable.
|
22
30
|
* Refactored object and datastream context navs for greater reusability.
|
data/README.rdoc
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
|
1
|
+
== Hydra Administrative Tool for a Fedora Repository
|
2
2
|
|
3
3
|
A Rails engine providing an administrative interface to a Fedora Commons repository built on the Hydra project framework.
|
4
4
|
|
5
|
-
|
5
|
+
=== Status
|
6
6
|
|
7
7
|
This project should be considered *experimental* and not ready for production deployment.
|
8
8
|
Versions earlier than 1.0 may change API and/or UI without notice or regard for backward compatibility.
|
9
9
|
|
10
|
-
|
10
|
+
=== Requirements
|
11
11
|
|
12
12
|
fcrepo_admin is designed for installation on hydra-head 6.0 or higher (requires active-fedora 6.1 or higher).
|
13
13
|
See https://github.com/projecthydra/hydra-head/wiki/Installation-Prerequisites.
|
14
14
|
|
15
|
-
|
15
|
+
=== Installation
|
16
16
|
|
17
17
|
(In the future, we hope to automate some of these tasks with a generator.)
|
18
18
|
|
@@ -38,7 +38,7 @@ See https://github.com/projecthydra/hydra-head/wiki/Installation-Prerequisites.
|
|
38
38
|
You may use any mount point (except perhaps <code>'/catalog'</code>).
|
39
39
|
All routes include <code>objects</code> as a subpath.
|
40
40
|
|
41
|
-
* Add CanCan action aliases (
|
41
|
+
* Add CanCan action aliases (fcrepo_admin >= 0.4.0)
|
42
42
|
|
43
43
|
In your Ability class (app/models/ability.rb) include the FcrepoAdmin::Ability module, for example:
|
44
44
|
|
@@ -51,7 +51,7 @@ See https://github.com/projecthydra/hydra-head/wiki/Installation-Prerequisites.
|
|
51
51
|
FcrepoAdmin::Ability defines action aliases for permissions which are enforced on (ActiveFedora::Base) objects.
|
52
52
|
If your application defines action aliases, please check FcrepoAdmin::Ability for conflicts as aliases are global.
|
53
53
|
|
54
|
-
* Add Javascript (
|
54
|
+
* Add Javascript (fcrepo_admin < 0.4.0)
|
55
55
|
|
56
56
|
In app/assets/javascripts/application.js add:
|
57
57
|
|
@@ -75,11 +75,28 @@ See https://github.com/projecthydra/hydra-head/wiki/Installation-Prerequisites.
|
|
75
75
|
|
76
76
|
include ActiveFedora::Auditable
|
77
77
|
|
78
|
-
|
78
|
+
=== Overriding fcrepo_admin behaviors
|
79
79
|
|
80
|
-
|
80
|
+
==== Configurable settings (fcrepo_admin >= 0.5.0)
|
81
81
|
|
82
|
-
|
82
|
+
To override default configurable settings for fcrepo_admin, create an initializer at config/initializers/fcrepo_admin.rb.
|
83
|
+
You should start with this content:
|
84
|
+
|
85
|
+
module YourApp
|
86
|
+
class Application < Rails::Application
|
87
|
+
config.before_initialize do
|
88
|
+
# Customized settings will go here
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
Refer to the default configuration settings at https://github.com/projecthydra/fcrepo-admin/blob/master/lib/fcrepo_admin.rb.
|
94
|
+
|
95
|
+
All configuration options are set by module methods prefixed by FcrepoAdmin, for example:
|
96
|
+
|
97
|
+
FcrepoAdmin.read_only = true
|
98
|
+
|
99
|
+
==== Helpers
|
83
100
|
|
84
101
|
Override objects helpers by creating app/helpers/fcrepo_admin/objects_helper.rb with this content:
|
85
102
|
|
@@ -97,7 +114,28 @@ Override datastreams helpers by creating app/helpers/fcrepo_admin/datastreams_he
|
|
97
114
|
# override methods here
|
98
115
|
end
|
99
116
|
|
100
|
-
|
117
|
+
==== Context Navigation Menus
|
118
|
+
|
119
|
+
===== fcrepo_admin >= 0.5.0
|
120
|
+
|
121
|
+
The configuration settings that control the items on the context menus are:
|
122
|
+
|
123
|
+
FcrepoAdmin.object_nav_items = [:pid, :summary, :datastreams, :permissions, :associations, :audit_trail]
|
124
|
+
FcrepoAdmin.datastream_nav_items = [:dsid, :version, :current_version, :summary, :content, :download, :edit, :upload, :history]
|
125
|
+
|
126
|
+
Each setting takes an array of symbols representing the items. You can start by copying the default values shown above.
|
127
|
+
If you simply want to rearrange or remove items, then just modify the default arrays.
|
128
|
+
|
129
|
+
To add a custom navigation item, start by adding your own symbol to the approriate array setting. Then override the
|
130
|
+
appropriate helper method (see section above on overriding fcrepo_admin helpers) -- for object context nav, override
|
131
|
+
#custom_object_nav_item in ObjectsHelper; for datastream context nav, override #custom_datastream_nav_item
|
132
|
+
in DatastreamsHelper.
|
133
|
+
|
134
|
+
Each method takes a single symbol argument and should return either nil (meaning no menu item is to be added) or the *content*
|
135
|
+
of a menu item. Do not include the <li></li> wrapper. You may want to use link_to_unless_current and/or put a condition on
|
136
|
+
the menu item (i.e., so that nil is returned if the condition is not met).
|
137
|
+
|
138
|
+
===== fcrepo_admin < 0.5.0
|
101
139
|
|
102
140
|
The contents of the object context navigation menu can be customized by overriding the #object_context_nav_items
|
103
141
|
helper method, or by copying and modifying the partial fcrepo_admin/objects/context_nav_items.
|
@@ -105,7 +143,7 @@ helper method, or by copying and modifying the partial fcrepo_admin/objects/cont
|
|
105
143
|
The contents of the datastream context navigation menu can be customized by overriding the
|
106
144
|
#datastream_context_nav_items helper method, or by copying and modifying the partial fcrepo_admin/datastreams/context_nav_items.
|
107
145
|
|
108
|
-
|
146
|
+
==== Controllers
|
109
147
|
|
110
148
|
To override or extend controller behaviors, please consult Rails engine documentation and guides, such as
|
111
149
|
http://edgeguides.rubyonrails.org/engines.html.
|
@@ -124,12 +162,19 @@ to your Ability class. For this, you can use Hydra's #custom_permissions callba
|
|
124
162
|
|
125
163
|
end
|
126
164
|
|
127
|
-
|
165
|
+
==== Read-only mode
|
166
|
+
|
167
|
+
To suppress mutating behaviors (i.e, routes, nav items, etc.) regardless of user permissions,
|
168
|
+
add this configuration setting:
|
169
|
+
|
170
|
+
FcrepoAdmin.read_only = true
|
171
|
+
|
172
|
+
=== Internationalization (i18n)
|
128
173
|
|
129
174
|
An effort has been made to support i18n on headings, menus, etc. See https://github.com/projecthydra/fcrepo-admin/blob/master/config/locales/fcrepo_admin.en.yml
|
130
175
|
for the keys and consult the Rails documentation on how to provide your own translations or alternate text values.
|
131
176
|
|
132
|
-
|
177
|
+
=== Contributing
|
133
178
|
|
134
179
|
* Consider first posting to hydra-tech@googlegroups.com with a question or bug report, or submit an issue
|
135
180
|
to the Github issue tracker at https://github.com/projecthydra/fcrepo-admin/issues.
|
@@ -138,7 +183,7 @@ for the keys and consult the Rails documentation on how to provide your own tran
|
|
138
183
|
|
139
184
|
Thanks!
|
140
185
|
|
141
|
-
|
186
|
+
=== License
|
142
187
|
|
143
188
|
See the LICENSE file in the root directory of the project for copyright and license information.
|
144
189
|
|
@@ -13,15 +13,6 @@ module FcrepoAdmin
|
|
13
13
|
before_filter :load_and_authorize_object
|
14
14
|
before_filter :load_datastream, :except => :index
|
15
15
|
|
16
|
-
helper_method :ds_is_current_version?
|
17
|
-
helper_method :ds_content_is_text?
|
18
|
-
helper_method :ds_content_is_editable?
|
19
|
-
helper_method :ds_content_is_uploadable?
|
20
|
-
|
21
|
-
# TODO Migrate to config initializer
|
22
|
-
EXTRA_TEXT_MIME_TYPES = ['application/xml', 'application/rdf+xml', 'application/json']
|
23
|
-
MAX_EDITABLE_SIZE = 1024 * 64
|
24
|
-
|
25
16
|
def index
|
26
17
|
end
|
27
18
|
|
@@ -29,6 +20,9 @@ module FcrepoAdmin
|
|
29
20
|
end
|
30
21
|
|
31
22
|
def content
|
23
|
+
unless @datastream.content_is_text?
|
24
|
+
render :text => "Datastream content is not text.", :status => 403
|
25
|
+
end
|
32
26
|
end
|
33
27
|
|
34
28
|
def history
|
@@ -41,10 +35,13 @@ module FcrepoAdmin
|
|
41
35
|
end
|
42
36
|
|
43
37
|
def edit
|
38
|
+
unless @datastream.content_is_editable?
|
39
|
+
render :text => "Datastream content is not editable", :status => 403
|
40
|
+
end
|
44
41
|
end
|
45
42
|
|
46
43
|
def upload
|
47
|
-
unless
|
44
|
+
unless @datastream.content_is_uploadable?
|
48
45
|
render :text => "This datstream does not support file content", :status => 403
|
49
46
|
end
|
50
47
|
end
|
@@ -57,7 +54,7 @@ module FcrepoAdmin
|
|
57
54
|
end
|
58
55
|
@object.save
|
59
56
|
flash[:notice] = "Datastream content updated." # i18n
|
60
|
-
redirect_to fcrepo_admin.object_datastream_url(@object, @datastream
|
57
|
+
redirect_to fcrepo_admin.object_datastream_url(@object, @datastream)
|
61
58
|
end
|
62
59
|
|
63
60
|
private
|
@@ -67,41 +64,6 @@ module FcrepoAdmin
|
|
67
64
|
@datastream = @datastream.asOfDateTime(params[:asOfDateTime]) if params[:asOfDateTime]
|
68
65
|
end
|
69
66
|
|
70
|
-
protected
|
71
|
-
|
72
|
-
# XXX Use Rubydora::Datastream#current_version? when it becomes available
|
73
|
-
# https://github.com/projecthydra/rubydora/pull/25
|
74
|
-
def ds_is_current_version?
|
75
|
-
@current_version ||= (@datastream.new? || @datastream.dsVersionID == @datastream.versions.first.dsVersionID)
|
76
|
-
end
|
77
|
-
|
78
|
-
def ds_content_is_url?
|
79
|
-
@datastream.external? || @datastream.redirect?
|
80
|
-
end
|
81
|
-
|
82
|
-
def ds_content_is_editable?
|
83
|
-
!ds_content_is_url? && ds_content_is_text? && ds_editable_content_size_ok?
|
84
|
-
end
|
85
|
-
|
86
|
-
def ds_editable_content_size_ok?
|
87
|
-
@datastream.dsSize <= MAX_EDITABLE_SIZE
|
88
|
-
end
|
89
|
-
|
90
|
-
def ds_content_is_uploadable?
|
91
|
-
@datastream.managed? || @datastream.inline?
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
|
96
|
-
def ds_content_is_text?
|
97
|
-
mimetype_is_text(@datastream.mimeType)
|
98
|
-
end
|
99
|
-
|
100
|
-
def mimetype_is_text(mimetype)
|
101
|
-
return false if mimetype.blank?
|
102
|
-
mimetype.start_with?('text/') || EXTRA_TEXT_MIME_TYPES.include?(mimetype)
|
103
|
-
end
|
104
|
-
|
105
67
|
end
|
106
68
|
end
|
107
69
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<tr>
|
4
4
|
<th scope="col"><%= t("fcrepo_admin.datastreams.header.id") %></th>
|
5
5
|
<% columns.each do |col| %>
|
6
|
-
<th scope="col"><%= t("fcrepo_admin.datastream.profile.#{col}") %></th>
|
6
|
+
<th scope="col"><%= t("fcrepo_admin.datastream.profile.keys.#{col}") %></th>
|
7
7
|
<% end %>
|
8
8
|
</tr>
|
9
9
|
</thead>
|
@@ -11,12 +11,12 @@
|
|
11
11
|
<% object.datastreams.each do |dsid, ds| %>
|
12
12
|
<tr>
|
13
13
|
<td>
|
14
|
-
<%= link_to dsid, fcrepo_admin.object_datastream_path(object,
|
14
|
+
<%= link_to dsid, fcrepo_admin.object_datastream_path(object, ds) %>
|
15
15
|
</td>
|
16
16
|
<% unless ds.new? %>
|
17
17
|
<% columns.each do |col| %>
|
18
18
|
<td>
|
19
|
-
<%=
|
19
|
+
<%= format_datastream_profile_value ds, col %>
|
20
20
|
</td>
|
21
21
|
<% end %>
|
22
22
|
<% else %>
|
@@ -1,16 +1,15 @@
|
|
1
1
|
<% unless datastream.new? %>
|
2
2
|
<h4><%= t("fcrepo_admin.datastream.profile.title") %></h4>
|
3
|
-
|
4
3
|
<table class="table table-bordered table-condensed table-striped" style="width: auto">
|
5
|
-
<%
|
4
|
+
<% datastream_show_profile_keys.each do |key| %>
|
6
5
|
<tr>
|
7
|
-
<th scope="row"><%= t("fcrepo_admin.datastream.profile.#{key}") %></th>
|
8
|
-
<td><%=
|
6
|
+
<th scope="row"><%= t("fcrepo_admin.datastream.profile.keys.#{key}") %></th>
|
7
|
+
<td><%= format_datastream_profile_value datastream, key %></td>
|
9
8
|
</tr>
|
10
9
|
<% end %>
|
11
10
|
</table>
|
12
11
|
<% else %>
|
13
12
|
<div class="alert alert-info">
|
14
|
-
|
13
|
+
<%= t("fcrepo_admin.datastream.alerts.not_persisted") %>
|
15
14
|
</div>
|
16
15
|
<% end %>
|
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
<h4><%= t("fcrepo_admin.datastream.content.title") %></h4>
|
2
|
+
<pre class="prettyprint pre-scrollable"><%= @datastream.content %></pre>
|
@@ -1,9 +1,10 @@
|
|
1
|
-
<h4><%= t("fcrepo_admin.datastream.edit.
|
2
|
-
<%=
|
1
|
+
<h4><%= t("fcrepo_admin.datastream.edit.title") %></h4>
|
2
|
+
<%= datastream_alerts :system_managed, :not_versionable %>
|
3
|
+
<%= form_tag fcrepo_admin.object_datastream_path(@object, @datastream), :method => :put do %>
|
3
4
|
<div>
|
4
5
|
<%= text_area_tag "content", @datastream.content, :size => "50x20", :class => "field", :style => "width: 100%" %>
|
5
6
|
</div>
|
6
7
|
<p>
|
7
|
-
<%= submit_tag t("fcrepo_admin.datastream.edit.submit"), :confirm => t("fcrepo_admin.datastream.edit.confirm"), :class => "btn btn-primary" %>
|
8
|
+
<%= submit_tag t("fcrepo_admin.datastream.edit.form.submit"), :confirm => t("fcrepo_admin.datastream.edit.form.confirm"), :class => "btn btn-primary" %>
|
8
9
|
</p>
|
9
10
|
<% end %>
|
@@ -9,16 +9,11 @@
|
|
9
9
|
</tr>
|
10
10
|
</thead>
|
11
11
|
<tbody>
|
12
|
-
<% @datastream.versions.
|
12
|
+
<% @datastream.versions.each do |dsVersion| %>
|
13
13
|
<tr>
|
14
|
-
<td><%=
|
15
|
-
link_to_unless i == 0, ds.profile["dsVersionID"], "#{fcrepo_admin.object_datastream_path(@object, ds.dsid)}?asOfDateTime=#{ds.asOfDateTime}" do |name|
|
16
|
-
"#{name} (current version)"
|
17
|
-
end
|
18
|
-
-%>
|
19
|
-
</td>
|
14
|
+
<td><%= link_to_datastream_version dsVersion %></td>
|
20
15
|
<% datastream_history_columns.each do |col| %>
|
21
|
-
<td><%=
|
16
|
+
<td><%= dsVersion.profile[col] %></td>
|
22
17
|
<% end %>
|
23
18
|
<% end %>
|
24
19
|
</tbody>
|
@@ -1,10 +1,11 @@
|
|
1
|
-
<h4><%= t("fcrepo_admin.datastream.upload.
|
2
|
-
<%=
|
1
|
+
<h4><%= t("fcrepo_admin.datastream.upload.title") %></h4>
|
2
|
+
<%= datastream_alerts :system_managed, :not_versionable %>
|
3
|
+
<%= form_tag fcrepo_admin.object_datastream_path(@object, @datastream), :method => :put, :multipart => true do %>
|
3
4
|
<div>
|
4
5
|
<%= file_field_tag "file" %>
|
5
6
|
</div>
|
6
7
|
<p>
|
7
|
-
<%= submit_tag t("fcrepo_admin.datastream.upload.submit"), :confirm => t("fcrepo_admin.datastream.upload.confirm"), :class => "btn btn-primary" %>
|
8
|
+
<%= submit_tag t("fcrepo_admin.datastream.upload.form.submit"), :confirm => t("fcrepo_admin.datastream.upload.form.confirm"), :class => "btn btn-primary" %>
|
8
9
|
</p>
|
9
10
|
<% end %>
|
10
11
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%= t("fcrepo_admin.object.permissions.no_permissions") %>
|
4
4
|
</div>
|
5
5
|
<% else %>
|
6
|
-
<table class="table table-bordered table-condensed
|
6
|
+
<table class="table table-bordered table-condensed">
|
7
7
|
<thead>
|
8
8
|
<tr>
|
9
9
|
<th scope="col"><%= t("fcrepo_admin.object.permissions.header.type") %></th>
|
@@ -1,5 +1,11 @@
|
|
1
1
|
<h3><%= t("fcrepo_admin.object.permissions.title") %></h3>
|
2
|
-
|
3
|
-
|
2
|
+
<div class="row">
|
3
|
+
<div class="span4">
|
4
|
+
<%= render :partial => 'direct_permissions', :locals => {:object => @object} %>
|
5
|
+
</div>
|
6
|
+
<div class="span5">
|
7
|
+
<%= render 'inherited_permissions' %>
|
8
|
+
</div>
|
9
|
+
</div>
|
4
10
|
|
5
11
|
|