On Friday 21 of October 2011 21:53:37 Scott Seago wrote:
---
src/app/controllers/application_controller.rb | 10 +++++
src/app/controllers/permissions_controller.rb | 37
+++++++++++++------- src/app/controllers/users_controller.rb |
1 +
src/app/views/layouts/_admin_users_tabs.html.haml | 14 +++++++
src/app/views/permissions/_form.html.haml | 5 +--
.../{index.html.haml => _list.html.haml} | 0
src/app/views/permissions/_new.html.haml | 4 +-
src/app/views/permissions/index.html.haml | 6 +++-
src/app/views/permissions/list.html.haml | 34
++---------------- src/app/views/permissions/new.html.haml |
2 +
src/app/views/users/index.html.haml | 22 +-----------
src/config/navigation.rb | 2 +-
12 files changed, 65 insertions(+), 72 deletions(-)
create mode 100644 src/app/views/layouts/_admin_users_tabs.html.haml
copy src/app/views/permissions/{index.html.haml => _list.html.haml} (100%)
diff --git a/src/app/controllers/application_controller.rb
b/src/app/controllers/application_controller.rb index 0ad58a9..049c227
100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -250,6 +250,16 @@ class ApplicationController < ActionController::Base
end
end
+ def set_admin_users_tabs(tab)
+ @tabs = [{:name => 'Users', :url => users_url, :id =>
'catalogs'},
+ #{:name => 'Groups', :url => groups_url, :id =>
'groups'},
+ {:name => 'Global Role Grants', :url => permissions_url, :id
=> 'permissions'}, + ]
+ unless @details_tab = @tabs.find {|t| t[:id] == tab}
+ raise "Tab '#{tab}' doesn't exist"
+ end
+ end
+
def sort_column(model, default="name")
model.column_names.include?(params[:order_field]) ?
params[:order_field] : default end
diff --git a/src/app/controllers/permissions_controller.rb
b/src/app/controllers/permissions_controller.rb index 267788b..7a9a5a4
100644
--- a/src/app/controllers/permissions_controller.rb
+++ b/src/app/controllers/permissions_controller.rb
@@ -22,10 +22,11 @@ class PermissionsController < ApplicationController
def index
set_permission_object(Privilege::PERM_VIEW)
+ @roles = Role.find_all_by_scope((a)permission_object.class.name)
respond_to do |format|
format.html
format.json { render :json => @permission_object.as_json }
- format.js { render :partial => 'index' }
+ format.js { render :partial => 'permissions' }
end
end
@@ -33,6 +34,13 @@ class PermissionsController < ApplicationController
set_permission_object
@users = User.all
@roles = Role.find_all_by_scope((a)permission_object.class.name)
+ if @permission_object == BasePermissionObject.general_permission_scope
+ @return_text = "Global Role Grants"
+ @summary_text = "Choose global role assignments for users"
+ else
+ @return_text = "#{(a)permission_object.name}
#{(a)permission_object.class}" + @summary_text = "Choose roles for
users you would like to grant access to this #{(a)permission_object.class}"
+ end
load_headers
load_users
respond_to do |format|
@@ -68,10 +76,7 @@ class PermissionsController < ApplicationController
flash[:error] = t "permissions.flash.error.no_users_selected"
end
respond_to do |format|
- format.html { redirect_to send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to @return_path }
format.js { render :partial => 'index',
:permission_object_type =>
:@permission_object.class.name, permission_object_id
:=> @permission_object.id }
@@ -108,10 +113,7 @@ class PermissionsController < ApplicationController
flash[:error] = t"permissions.flash.error.no_users_selected"
end
respond_to do |format|
- format.html { redirect_to send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to @return_path }
format.js { render :partial => 'index',
:permission_object_type =>
:@permission_object.class.name, permission_object_id
:=> @permission_object.id }
@@ -138,10 +140,7 @@ class PermissionsController < ApplicationController
flash[:error] = "#{t('permissions.flash.error.not_deleted')}:
#{not_deleted.join(', ')}" end
respond_to do |format|
- format.html { redirect_to send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to @return_path }
format.js { render :partial => 'index',
:permission_object_type =>
:@permission_object.class.name, permission_object_id
:=> @permission_object.id }
@@ -181,8 +180,20 @@ class PermissionsController < ApplicationController
obj_type = params[:permission_object_type]
id = params[:permission_object_id]
@path_prefix = params[:path_prefix]
+ unless obj_type or id
+ @permission_object = BasePermissionObject.general_permission_scope
+ end
@permission_object = obj_type.constantize.find(id) if obj_type and id
raise RuntimeError, "invalid permission object" if
@permission_object.nil? + if @permission_object ==
BasePermissionObject.general_permission_scope + @return_path =
permissions_path
+ set_admin_users_tabs 'permissions'
+ else
+ @return_path = send("#{@path_prefix}polymorphic_path",
+ @permission_object,
+ :details_tab => :permissions,
+ :only_tab => true)
+ end
require_privilege(required_role, @permission_object)
end
end
diff --git a/src/app/controllers/users_controller.rb
b/src/app/controllers/users_controller.rb index d634c88..23afdce 100644
--- a/src/app/controllers/users_controller.rb
+++ b/src/app/controllers/users_controller.rb
@@ -24,6 +24,7 @@ class UsersController < ApplicationController
require_privilege(Privilege::VIEW, User)
clear_breadcrumbs
save_breadcrumb(users_path)
+ set_admin_users_tabs 'catalogs'
@params = params
load_headers
load_users
diff --git a/src/app/views/layouts/_admin_users_tabs.html.haml
b/src/app/views/layouts/_admin_users_tabs.html.haml new file mode 100644
index 0000000..57d551a
--- /dev/null
+++ b/src/app/views/layouts/_admin_users_tabs.html.haml
@@ -0,0 +1,14 @@
+%section.admin-content-section
+ %header#tab-container-1
+ %h2
+ %nav.faceted
+ %ul#tab-container-1-nav
+ - @tabs.each do |tab|
+ %li
+ %a{ :href => tab[:url], :id => "details_#{tab[:id]}",
:class
=> "#{'active' if @details_tab[:id] == tab[:id]} show"} +
=
tab[:name]
+ -if tab[:count]
+ %span.label.badge.count.dark=tab[:count]
+ .content.collapsible.toggle-view.pools#tab
+ %ul.deployable-cards
+ = render :partial => 'list'
diff --git a/src/app/views/permissions/_form.html.haml
b/src/app/views/permissions/_form.html.haml index b1b6ed4..b6be8ae 100644
--- a/src/app/views/permissions/_form.html.haml
+++ b/src/app/views/permissions/_form.html.haml
@@ -2,10 +2,7 @@
= hidden_field_tag :permission_object_type,
@permission_object.class.name = hidden_field_tag :permission_object_id,
@permission_object.id = hidden_field_tag :path_prefix, @path_prefix
- = link_to 'Cancel', send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true), :class => 'button danger'
+ = link_to 'Cancel', @return_path, :class => 'button danger'
= restful_submit_tag "Grant Access", "create", permissions_path,
'POST',
:id => 'save_button' = filter_table(@header, @users) do |user|
%tr{:class => cycle('nostripe','stripe')}
diff --git a/src/app/views/permissions/index.html.haml
b/src/app/views/permissions/_list.html.haml similarity index 100%
copy from src/app/views/permissions/index.html.haml
copy to src/app/views/permissions/_list.html.haml
diff --git a/src/app/views/permissions/_new.html.haml
b/src/app/views/permissions/_new.html.haml index a314b51..2198a6a 100644
--- a/src/app/views/permissions/_new.html.haml
+++ b/src/app/views/permissions/_new.html.haml
@@ -2,11 +2,11 @@
%h1{:class => controller.controller_name} Grant Access
#obj_actions.button-group
Return to
- = link_to "#{(a)permission_object.name} #{(a)permission_object.class}",
send("#{@path_prefix}polymorphic_path", @permission_object, :details_tab
=> :permissions, :only_tab => true), :class => 'button primary', :id
=>
'new_pool_button' + = link_to @return_text, @return_path, :class =>
'button primary', :id => 'new_pool_button' .corner
%section.content-section.pools
- Choose roles for users you would like to grant access to this
#{(a)permission_object.class} + = @summary_text
%header
%h2 Users
diff --git a/src/app/views/permissions/index.html.haml
b/src/app/views/permissions/index.html.haml index 229236b..544986c 100644
--- a/src/app/views/permissions/index.html.haml
+++ b/src/app/views/permissions/index.html.haml
@@ -1 +1,5 @@
-= render :partial => 'permissions'
+- if @permission_object == BasePermissionObject.general_permission_scope
+ = render :partial => 'layouts/admin_nav'
+ = render :partial => 'layouts/admin_users_tabs'
+- else
+ = render :partial => 'permissions'
diff --git a/src/app/views/permissions/list.html.haml
b/src/app/views/permissions/list.html.haml index 859527a..544986c 100644
--- a/src/app/views/permissions/list.html.haml
+++ b/src/app/views/permissions/list.html.haml
@@ -1,31 +1,5 @@
-- if @permission_object.permissions.size == 0
- %h1
- There are no permissions defined on #{(a)permission_object.name}
+- if @permission_object == BasePermissionObject.general_permission_scope
+ = render :partial => 'layouts/admin_nav'
+ = render :partial => 'layouts/admin_users_tabs'
- else
- %table
- %thead
- %tr
- %th{:scope => "col"} User
- %th{:scope => "col"} Role
- %th{:scope => "col"} Action
- %tbody
- - @permission_object.permissions.each {|permission|
- %tr
- %td= permission.user.login
- %td= permission.role.name
- %td
- - if check_privilege(Privilege::PERM_SET)
- = form_tag :action => 'destroy' do
- = hidden_field :permission, :id, :value => permission.id
- = submit_tag "delete", :class => "submit_link", :id
=>
"delete_#{permission.id}" - - }
-= link_to "Add a user",
| - {:controller => "users",
| - :action => "new"},
| -
:class=>"actionlink" if
check_privilege(Privilege::CREATE,User,BasePermissionObject.general_permis
sion_scope) | --#
-= link_to "Add a new permission record", |
- {:action => "new", |
- :permission_object_type => @permission_object.class, |
- :permission_object_id => @permission_object.id}, |
- :class=>"actionlink" if check_privilege(Privilege::PERM_SET) |
+ = render :partial => 'permissions'
diff --git a/src/app/views/permissions/new.html.haml
b/src/app/views/permissions/new.html.haml index b40557d..8a73c70 100644
--- a/src/app/views/permissions/new.html.haml
+++ b/src/app/views/permissions/new.html.haml
@@ -1 +1,3 @@
+- if @permission_object == BasePermissionObject.general_permission_scope
+ = render :partial => 'layouts/admin_nav'
= render :partial => 'new'
diff --git a/src/app/views/users/index.html.haml
b/src/app/views/users/index.html.haml index e23dd63..7cc23db 100644
--- a/src/app/views/users/index.html.haml
+++ b/src/app/views/users/index.html.haml
@@ -1,22 +1,2 @@
= render :partial => 'layouts/admin_nav'
-%header.admin-page-header
- #obj_actions
- =t'users.quick_jump'
- /= link_to 'Groups', "#groups", :class =>
'rounded-link'
- = link_to "#{t'users.users'}", "#users", :class =>
'rounded-link'
- /= link_to 'Roles', "#roles", :class => 'rounded-link'
- .clear
-/%section.admin-content-section
-/ %header
-/ %h2#groups.groups Groups
-/ .section-controls
-/ #obj_actions
-/ = link_to "", "#", :class => 'add-group-button',
:id =>
'add_group_button' -/ .content
-/ Unimplemented.
-= render :partial => 'list'
-/%section.admin-content-section
-/ %header
-/ %h2#roles.roles Roles
-/ .content
-/ Unimplemented.
+= render :partial => 'layouts/admin_users_tabs'
diff --git a/src/config/navigation.rb b/src/config/navigation.rb
index cbbc5a6..12400d8 100644
--- a/src/config/navigation.rb
+++ b/src/config/navigation.rb
@@ -22,7 +22,7 @@ SimpleNavigation::Configuration.run do |navigation|
first_level.dom_class = 'container'
first_level.item :monitor, t('navigation.first_level.monitor'),
pools_path, :class => 'monitor', :link => { :id => 'monitor' },
:highlights_on => /\/deployments|\/pools|\/instances|\/\z/
first_level.item :administer, t('navigation.first_level.administer'),
users_path, :class => 'administer' do |second_level| -
second_level.item :users_and_groups,
t('navigation.second_level.users_groups'), users_path, :link => { :class
=> 'users' }, :highlights_on => /\/users|\/roles|\/account/ +
second_level.item :users_and_groups,
t('navigation.second_level.users_groups'), users_path, :link => { :class
=> 'users' }, :highlights_on => /\/users|\/roles|\/permissions|\/account/
second_level.item :environments,
t('navigation.second_level.environments'), pool_families_path, :link => {
:class => 'environments' }, :highlights_on => /\/pool_families/
second_level.item :content, t('navigation.second_level.content'),
catalogs_path, :link => { :class => 'content' }, :highlights_on =>
/\/catalogs|\/catalog_entries|\/realms|\/hardware_profiles|\/realm_mapping
s/ second_level.item :cloud_providers,
t('navigation.second_level.cloud_providers'), providers_path, :link => {
:class => 'providers' }, :highlights_on => /\/providers/
ACK to the
patchset.
--
---
Tomáš Hrčka