Improved breadcrumb slightly by allowing clear. Tidied
up administer section, and applied example treatment to
Users controller.
---
src/app/controllers/application_controller.rb | 10 ++-
src/app/controllers/pools_controller.rb | 5 +-
src/app/controllers/users_controller.rb | 3 +
src/app/stylesheets/layout.scss | 6 +-
src/app/views/layouts/_admin_header.haml | 40 +++++-
src/app/views/users/_list.haml | 57 ++++----
src/app/views/users/_properties.haml | 187 ++++++++++++-------------
src/app/views/users/_section_header.haml | 5 +
src/app/views/users/edit.haml | 27 +++-
src/app/views/users/index.haml | 4 +-
src/app/views/users/new.haml | 19 ++-
src/app/views/users/show.haml | 19 +++-
12 files changed, 233 insertions(+), 149 deletions(-)
create mode 100644 src/app/views/users/_section_header.haml
diff --git a/src/app/controllers/application_controller.rb
b/src/app/controllers/application_controller.rb
index cb4a1d3..a5ed6af 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -234,13 +234,21 @@ class ApplicationController < ActionController::Base
session[:return_to] = nil
end
+ ############################################################################
+ # Breadcrumb-Related functionality
+ ############################################################################
+
+ def clear_breadcrumbs
+ session[:breadcrumbs] = []
+ end
+
def shift_breadcrumbs
session[:breadcrumbs] ||= []
shifted_breadcrumb = session[:breadcrumbs].shift unless session[:breadcrumbs].length
< 3 || request.request_uri == session[:breadcrumbs].last[:path]
#TODO waiting for the ViewState to be implemented
#ViewState.find(shifted_breadcrumb[:viewstate]).mark_for_deletion if
shifted_breadcrumb[:viewstate]
end
-
+
def save_breadcrumb(path, name = controller_name)
session[:breadcrumbs] ||= []
breadcrumbs = session[:breadcrumbs]
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
index 2aee5ff..2108fd8 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -14,7 +14,7 @@ class PoolsController < ApplicationController
end
def index
- save_breadcrumb(pools_path(:viewstate => @viewstate ? @viewstate.id : nil))
+ clear_breadcrumbs
@user_pools = Pool.list_for_user(current_user, Privilege::VIEW)
if filter_view?
@@ -45,12 +45,12 @@ class PoolsController < ApplicationController
format.html
format.json { render :json => @pools }
end
+ save_breadcrumb(pools_path(:viewstate => @viewstate ? @viewstate.id : nil))
end
def show
@pool = Pool.find(params[:id])
require_privilege(Privilege::VIEW, @pool)
- save_breadcrumb(pool_path(@pool), @pool.name)
@statistics = @pool.statistics
@view = params[:view] == 'filter' ? 'deployments/filter_view' :
'deployments/pretty_view'
respond_to do |format|
@@ -58,6 +58,7 @@ class PoolsController < ApplicationController
format.html { render :action => :show}
format.json { render :json => @pool }
end
+ save_breadcrumb(pool_path(@pool), @pool.name)
end
def new
diff --git a/src/app/controllers/users_controller.rb
b/src/app/controllers/users_controller.rb
index 3cfbbc5..0a37468 100644
--- a/src/app/controllers/users_controller.rb
+++ b/src/app/controllers/users_controller.rb
@@ -8,7 +8,9 @@ class UsersController < ApplicationController
end
def index
+ clear_breadcrumbs
require_privilege(Privilege::VIEW, User)
+ save_breadcrumb(users_path, "Users")
@params = params
@search_term = params[:q]
if @search_term.blank?
@@ -68,6 +70,7 @@ class UsersController < ApplicationController
end
format.html
end
+ save_breadcrumb(user_path(@user), [@user.first_name, @user.last_name].join('
').titlecase)
end
def edit
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss
index 466e101..a4a9be9 100644
--- a/src/app/stylesheets/layout.scss
+++ b/src/app/stylesheets/layout.scss
@@ -1,6 +1,6 @@
/* ###########################################################################
Generated SCSS for Aeolus UI [aeolus_ui]
-Compiled on 2011-06-06 20:38:44 -0700
+Compiled on 2011-06-06 21:29:07 -0700
########################################################################### */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1836,6 +1836,10 @@ section.content-section{
}
+header.page-header + section.content-section{
+ margin-top: 36px;
+}
+
section.content-section + section.content-section {
margin-top: 36px;
}
diff --git a/src/app/views/layouts/_admin_header.haml
b/src/app/views/layouts/_admin_header.haml
index 2989e44..3b5c935 100644
--- a/src/app/views/layouts/_admin_header.haml
+++ b/src/app/views/layouts/_admin_header.haml
@@ -1,7 +1,33 @@
-%nav#admin_subsections
- = render_navigation({:expand_all => true, :level => 2})
-%header.page-header
- %h1{:class => controller_name}
- = controller_name.titleize
- -# Insert appropriate controls here, or ommit %ul.controls
- .corner
+-#We'll figure out a better way to deal with this later.
+%noscript
+ %nav#admin_subsections
+ = render_navigation({:expand_all => true, :level => 2})
+
+-# TODO: Actually design nav for the Administer section.
+-# Ugly hack to avoid moving files around for the moment.. Abs position the nav :/
+#tab_actions{:style => "float: right; position: absolute; top: 10px; right:
10px;"}
+ %span.label.small Control Panels
+ %select#admin-section-select
+ %option{:value => users_path} Choose section...
+ %option{:value => users_path} Users
+ %option{:value => roles_path} Roles
+ %option{:value => providers_path} Providers
+ %option{:value => provider_accounts_path} Provider Accounts
+ %option{:value => hardware_profiles_path} Hardware Profiles
+ %option{:value => realms_path} Realms
+ %option{:value => pool_families_path} Pool Families
+ %option{:value => settings_path} Settings
+
+- unless controller.controller_name == 'users'
+ %header.page-header
+ %h1{:class => controller.controller_name}= controller.controller_name.titlecase
+ -##obj_actions.button-group
+ -#= link_to 'New Object', new_object_url, :class => 'button
primary', :id => 'new_object_button'
+ .corner
+
+:javascript
+ $(document).ready(function() {
+ $('select#admin-section-select').change(function() {
+ window.location = $(this).val();
+ });
+ });
\ No newline at end of file
diff --git a/src/app/views/users/_list.haml b/src/app/views/users/_list.haml
index 08282aa..f7e6475 100644
--- a/src/app/views/users/_list.haml
+++ b/src/app/views/users/_list.haml
@@ -1,29 +1,34 @@
-- form_tag do
- = link_to "Create", new_user_url, :class => 'button'
- = restful_submit_tag "Delete", 'destroy', multi_destroy_users_path,
'DELETE', :id => 'delete_button', :class => 'button'
+%section.content-section.users
+ %header
+ %h2 Enabled Users
+ %span.label.badge.dark.count= @users.length
- %table#users_table
- %thead
- %tr
- %th
- %th= link_to "User ID", users_url(:sort_by => "login")
- %th= link_to "Last Name", users_url(:sort_by =>
"last_name")
- %th= link_to "First Name", users_url(:sort_by =>
"first_name")
- %th= link_to "% Quota Used", users_url(:sort_by =>
"percentage_quota_used")
- %th
- =link_to "Quota", users_url(:sort_by => "quota")
- %span (Instances)
- %th= link_to "e-mail", users_url(:sort_by => "email")
- -(a)users.each do |user|
- %tr
- %td
- %input{:name => "user_selected[]", :type =>
"checkbox", :value => user.id, :id => "user_checkbox_#{user.id}"
}
- %td= link_to user.login, user_path(user)
- %td= user.last_name
- %td= user.first_name
- %td= sprintf("%.2f", user.quota.percentage_used)
- %td= Quota.no_limit(user.quota.maximum_running_instances) ? "Unlimited"
: user.quota.maximum_running_instances
- %td= user.email
+ .content
+ - form_tag do
+ = restful_submit_tag "Delete", 'destroy',
multi_destroy_users_path, 'DELETE', :id => 'delete_button', :class
=> 'button'
+
+ %table#users_table
+ %thead
+ %tr
+ %th.ignore
+ %th= link_to "User ID", users_url(:sort_by =>
"login")
+ %th= link_to "Last Name", users_url(:sort_by =>
"last_name")
+ %th= link_to "First Name", users_url(:sort_by =>
"first_name")
+ %th= link_to "% Quota Used", users_url(:sort_by =>
"percentage_quota_used")
+ %th
+ =link_to "Quota", users_url(:sort_by => "quota")
+ %span (Instances)
+ %th= link_to "e-mail", users_url(:sort_by => "email")
+ -(a)users.each do |user|
+ %tr{:class => cycle('stripe')}
+ %td
+ %input{:name => "user_selected[]", :type =>
"checkbox", :value => user.id, :id => "user_checkbox_#{user.id}"
}
+ %td= link_to user.login, user_path(user)
+ %td= user.last_name
+ %td= user.first_name
+ %td= sprintf("%.2f", user.quota.percentage_used)
+ %td= Quota.no_limit(user.quota.maximum_running_instances) ?
"Unlimited" : user.quota.maximum_running_instances
+ %td= user.email
:javascript
$(document).ready(function () {
@@ -37,4 +42,4 @@
}
}
});
- });
+ });
\ No newline at end of file
diff --git a/src/app/views/users/_properties.haml b/src/app/views/users/_properties.haml
index 33799be..c0ebc58 100644
--- a/src/app/views/users/_properties.haml
+++ b/src/app/views/users/_properties.haml
@@ -1,98 +1,93 @@
-.grid_13
- %h2 #{(a)user.first_name} #{(a)user.last_name} (#{(a)user.login})
+%table
+ %thead
+ %tr
+ %th.show
+ Personal Details
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Username
+ %td
+ = @user.login
+ %tr
+ %td
+ %label First Name
+ %td
+ = @user.first_name
+ %tr
+ %td
+ %label Last Name
+ %td
+ = @user.last_name
+ %tr
+ %td
+ %label e-mail
+ %td
+ = @user.email
- = link_to 'Edit', edit_user_path(@user), :class => 'button'
+%table
+ %thead
+ %tr
+ %th.show
+ Quota Status
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Maximum
+ %td
+ = @quota_resources["running_instances"].max
+ %tr
+ %td
+ %label Used
+ %td
+ = @quota_resources["running_instances"].used
+ %tr
+ %td
+ %label Available
+ %td
+ = @quota_resources["running_instances"].available
- %table
- %thead
- %tr
- %th.show
- Personal Details
- %th.show
- %tbody
- %tr
- %td
- %label Username
- %td
- = @user.login
- %tr
- %td
- %label First Name
- %td
- = @user.first_name
- %tr
- %td
- %label Last Name
- %td
- = @user.last_name
- %tr
- %td
- %label e-mail
- %td
- = @user.email
-
- %table
- %thead
- %tr
- %th.show
- Quota Status
- %th.show
- %tbody
- %tr
- %td
- %label Maximum
- %td
- = @quota_resources["running_instances"].max
- %tr
- %td
- %label Used
- %td
- = @quota_resources["running_instances"].used
- %tr
- %td
- %label Available
- %td
- = @quota_resources["running_instances"].available
-
- %table
- %thead
- %tr
- %th.show
- Login Information
- %th.show
- %tbody
- %tr
- %td
- %label Current Login IP
- %td
- = @user.current_login_ip
- %tr
- %td
- %label Current Login at
- %td
- = @user.current_login_at
- %tr
- %td
- %label Last Login IP
- %td
- = @user.last_login_ip
- %tr
- %td
- %label Last Login at
- %td
- = @user.last_login_at
- %tr
- %td
- %label Login Count
- %td
- = @user.login_count
- %tr
- %td
- %label Failed Login Count
- %td
- = @user.login_count
- %tr
- %td
- %label Last Request at
- %td
- = @user.last_request_at
+%table
+ %thead
+ %tr
+ %th.show
+ Login Information
+ %th.show
+ %tbody
+ %tr
+ %td
+ %label Current Login IP
+ %td
+ = @user.current_login_ip
+ %tr
+ %td
+ %label Current Login at
+ %td
+ = @user.current_login_at
+ %tr
+ %td
+ %label Last Login IP
+ %td
+ = @user.last_login_ip
+ %tr
+ %td
+ %label Last Login at
+ %td
+ = @user.last_login_at
+ %tr
+ %td
+ %label Login Count
+ %td
+ = @user.login_count
+ %tr
+ %td
+ %label Failed Login Count
+ %td
+ = @user.login_count
+ %tr
+ %td
+ %label Last Request at
+ %td
+ = @user.last_request_at
diff --git a/src/app/views/users/_section_header.haml
b/src/app/views/users/_section_header.haml
new file mode 100644
index 0000000..aae9613
--- /dev/null
+++ b/src/app/views/users/_section_header.haml
@@ -0,0 +1,5 @@
+%header.page-header
+ %h1{:class => controller.controller_name} Users
+ #obj_actions.button-group
+ = link_to 'New User', new_user_url, :class => 'button primary',
:id => 'new_user_button'
+ .corner
\ No newline at end of file
diff --git a/src/app/views/users/edit.haml b/src/app/views/users/edit.haml
index b3d0dc2..4f4173b 100644
--- a/src/app/views/users/edit.haml
+++ b/src/app/views/users/edit.haml
@@ -1,7 +1,22 @@
-- if check_privilege(Privilege::MODIFY, User)
- %h2 Editing User: #{(a)user.first_name} #{(a)user.last_name}
-- else
- %h2 Editing Account
+= render :partial => 'layouts/admin_header'
-- form_for @user, :url => user_path(@user), :html => { :method => :put } do |f|
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> users_path }
+%header.page-header
+ %h1{:class => controller.controller_name}= [@user.first_name,
@user.last_name].join(' ').titlecase
+ #obj_actions.button-container
+ = link_to 'New User', new_user_url, :class => 'button primary',
:id => 'new_user_button'
+ %div.button-group
+ = link_to 'Cancel Editing', user_path(@user), :class => 'button pill
danger', :id => 'new_user_button'
+ .corner
+
+%section.content-section.user
+ %header
+ %h2 Properties
+
+ .content
+ - if check_privilege(Privilege::MODIFY, User)
+ %h2 Editing User: #{(a)user.first_name} #{(a)user.last_name}
+ - else
+ %h2 Editing Account
+
+ - form_for @user, :url => user_path(@user), :html => { :method => :put } do
|f|
+ = render :partial => "form", :locals => { :form => f,
:cancel_path => users_path }
diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml
index acfa09b..55fac46 100644
--- a/src/app/views/users/index.haml
+++ b/src/app/views/users/index.haml
@@ -1,3 +1,3 @@
= render :partial => 'layouts/admin_header'
-%div#view
- = render :partial => 'list'
+= render :partial => 'section_header'
+= render :partial => 'list'
diff --git a/src/app/views/users/new.haml b/src/app/views/users/new.haml
index 976f130..26befe6 100644
--- a/src/app/views/users/new.haml
+++ b/src/app/views/users/new.haml
@@ -1,6 +1,13 @@
-%h2 New Account
-- form_for @user, :url => users_path do |f|
- -if current_user
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> users_path }
- -else
- = render :partial => "form", :locals => { :form => f, :cancel_path
=> login_path }
+= render :partial => 'layouts/admin_header'
+= render :partial => 'section_header'
+
+%section.content-section.users
+ %header
+ %h2 New Account
+
+ .content
+ - form_for @user, :url => users_path do |f|
+ -if current_user
+ = render :partial => "form", :locals => { :form => f,
:cancel_path => users_path }
+ -else
+ = render :partial => "form", :locals => { :form => f,
:cancel_path => login_path }
diff --git a/src/app/views/users/show.haml b/src/app/views/users/show.haml
index 2eadbfd..e99ea79 100644
--- a/src/app/views/users/show.haml
+++ b/src/app/views/users/show.haml
@@ -1,3 +1,18 @@
= render :partial => 'layouts/admin_header'
-%div#view
- = render :partial => 'properties'
+%header.page-header
+ %h1{:class => controller.controller_name}= [@user.first_name,
@user.last_name].join(' ').titlecase
+ #obj_actions.button-container
+ = link_to 'New User', new_user_url, :class => 'button primary',
:id => 'new_user_button'
+ %form.button-group{:action => user_url(@user), :method => 'POST'}
+ = link_to 'Edit', edit_user_path(@user), :class => 'button
pill'
+ %input{:name => "user_selected[]", :type => "hidden",
:value => @user.id}
+ = restful_submit_tag('Delete', 'destroy', multi_destroy_users_path,
'DELETE', :class => "button pill danger")
+ .corner
+
+%section.content-section.user
+ %header
+ %h2 Properties
+
+ .content
+ %div#view
+ = render :partial => 'properties'
\ No newline at end of file
--
1.7.4.4