From: Tomas Sedovic <[email protected]>
This adds helper code and partials to add the details tabs to every page. They
work with and without JavaScript enabled (using jQuery UI tabs for JS-enabled
browsers).
Included is an example using the code for the Resource Management -> Pools
page.
---
src/app/controllers/resources/pools_controller.rb | 10 +++++++++
src/app/helpers/application_helper.rb | 4 +++
src/app/views/layouts/_details_pane.haml | 7 ++++++
src/app/views/layouts/newui.haml | 2 +-
src/app/views/resources/pools/_deployments.haml | 3 ++
src/app/views/resources/pools/_history.haml | 3 ++
src/app/views/resources/pools/_instances.haml | 3 ++
src/app/views/resources/pools/_list.haml | 2 +-
src/app/views/resources/pools/_permissions.haml | 3 ++
src/app/views/resources/pools/_properties.haml | 3 ++
src/app/views/resources/pools/show.haml | 22 +--------------------
src/public/javascripts/application.js | 9 ++++++++
12 files changed, 48 insertions(+), 23 deletions(-)
create mode 100644 src/app/views/layouts/_details_pane.haml
create mode 100644 src/app/views/resources/pools/_deployments.haml
create mode 100644 src/app/views/resources/pools/_history.haml
create mode 100644 src/app/views/resources/pools/_instances.haml
create mode 100644 src/app/views/resources/pools/_permissions.haml
create mode 100644 src/app/views/resources/pools/_properties.haml
diff --git a/src/app/controllers/resources/pools_controller.rb
b/src/app/controllers/resources/pools_controller.rb
index 426e016..b83d361 100644
--- a/src/app/controllers/resources/pools_controller.rb
+++ b/src/app/controllers/resources/pools_controller.rb
@@ -7,6 +7,16 @@ class Resources::PoolsController < ApplicationController
def show
@pool = Pool.find(params[:id])
+ if params[:details_tab].blank?
+ @details_tab = 'properties'
+ else
+ @details_tab = params[:details_tab]
+ end
+ if params[:ajax] == 'true'
+ render :partial => @details_tab
+ return
+ end
+ @url_params = params.clone
end
def edit
diff --git a/src/app/helpers/application_helper.rb
b/src/app/helpers/application_helper.rb
index 37330cb..0f71c29 100644
--- a/src/app/helpers/application_helper.rb
+++ b/src/app/helpers/application_helper.rb
@@ -190,4 +190,8 @@ module ApplicationHelper
submit_tag(value, :name => "__rewrite[#{action}]")
end
+ def slug(title)
+ title.split(' ').join('_').downcase
+ end
+
end
diff --git a/src/app/views/layouts/_details_pane.haml
b/src/app/views/layouts/_details_pane.haml
new file mode 100644
index 0000000..9bedc81
--- /dev/null
+++ b/src/app/views/layouts/_details_pane.haml
@@ -0,0 +1,7 @@
+- content_for :details do
+
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
+ - tabs.each do |tab|
+ %li.ui-state-default.ui-corner-top{ :class => "#{'ui-tabs-selected
ui-state-active' if @url_params[:details_tab] == slug(tab)}"}
+ = link_to tab, @url_params.merge(:details_tab => slug(tab))
+ #static-content
+ = render :partial => @details_tab
diff --git a/src/app/views/layouts/newui.haml b/src/app/views/layouts/newui.haml
index 26a0a48..8bc2623 100644
--- a/src/app/views/layouts/newui.haml
+++ b/src/app/views/layouts/newui.haml
@@ -45,7 +45,7 @@
= render :partial => '/layouts/notification'
= (yield :list or yield)
- if details
- #details-view
+ #details-view.ui-tabs.ui-widget.ui-widget-content.ui-corner-all
= yield :details
%footer
= render :partial => "layouts/footer"
diff --git a/src/app/views/resources/pools/_deployments.haml
b/src/app/views/resources/pools/_deployments.haml
new file mode 100644
index 0000000..497bf09
--- /dev/null
+++ b/src/app/views/resources/pools/_deployments.haml
@@ -0,0 +1,3 @@
+%h3
+ Deployments for
+ = @pool.name
diff --git a/src/app/views/resources/pools/_history.haml
b/src/app/views/resources/pools/_history.haml
new file mode 100644
index 0000000..4769d92
--- /dev/null
+++ b/src/app/views/resources/pools/_history.haml
@@ -0,0 +1,3 @@
+%h3
+ History for
+ = @pool.name
diff --git a/src/app/views/resources/pools/_instances.haml
b/src/app/views/resources/pools/_instances.haml
new file mode 100644
index 0000000..3498757
--- /dev/null
+++ b/src/app/views/resources/pools/_instances.haml
@@ -0,0 +1,3 @@
+%h3
+ Instances for
+ = @pool.name
diff --git a/src/app/views/resources/pools/_list.haml
b/src/app/views/resources/pools/_list.haml
index 6d1e4db..51791cd 100644
--- a/src/app/views/resources/pools/_list.haml
+++ b/src/app/views/resources/pools/_list.haml
@@ -1,4 +1,4 @@
-- form_tag do |f|
+- form_tag do
= restful_submit_tag "New Pool", "new", new_resources_pool_path, 'GET'
= restful_submit_tag "Edit", "edit", edit_resources_pool_path(@pools.first),
'GET'
%p
diff --git a/src/app/views/resources/pools/_permissions.haml
b/src/app/views/resources/pools/_permissions.haml
new file mode 100644
index 0000000..fbd252e
--- /dev/null
+++ b/src/app/views/resources/pools/_permissions.haml
@@ -0,0 +1,3 @@
+%h3
+ Permissions for
+ = @pool.name
diff --git a/src/app/views/resources/pools/_properties.haml
b/src/app/views/resources/pools/_properties.haml
new file mode 100644
index 0000000..f50055c
--- /dev/null
+++ b/src/app/views/resources/pools/_properties.haml
@@ -0,0 +1,3 @@
+%h3
+ Properties for
+ = @pool.name
diff --git a/src/app/views/resources/pools/show.haml
b/src/app/views/resources/pools/show.haml
index b28cc48..9ddfe61 100644
--- a/src/app/views/resources/pools/show.haml
+++ b/src/app/views/resources/pools/show.haml
@@ -1,24 +1,4 @@
- content_for :list do
= render :partial => 'list'
-- content_for :details do
- %ul
- %li
- = link_to 'Properties', '#properties'
- %li
- = link_to 'Deployments', '#deployments'
- %li
- = link_to 'Instances', '#instances'
- %li
- = link_to 'History', '#history'
- %li
- = link_to 'Permissions', '#permissions'
- %h3
- Details for
- = @pool.name
-
-- content_for :scripts do
- :javascript
- $(document).ready(function() {
- $('#details-view').tabs();
- });
+= render :partial => 'layouts/details_pane', :locals => { :tabs =>
['Properties', 'Deployments', 'Instances', 'History', 'Permissions'] }
diff --git a/src/public/javascripts/application.js
b/src/public/javascripts/application.js
index 50edbe4..7c2c914 100644
--- a/src/public/javascripts/application.js
+++ b/src/public/javascripts/application.js
@@ -141,7 +141,16 @@ var Aggregator = {
/* Aggregator JS */
+function enhanceDetailsTabs() {
+ $('#static-content').remove();
+ $('#details-view ul li a').each(function(index, link) {
+ $(link).attr('href', $(link).attr('href') + '&ajax=true');
+ });
+ $('#details-view').tabs();
+}
+
$(document).ready(function () {
$(window).scroll(Aggregator.positionFooter).resize(Aggregator.positionFooter).scroll();
$("#notification").enhanceInteraction();
+ enhanceDetailsTabs();
});
--
1.7.3.3
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel