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 | 17 ++++++++++++++++
src/app/helpers/application_helper.rb | 4 +++
src/app/stylesheets/newui.scss | 4 +++
src/app/views/layouts/_details_pane.haml | 6 +++++
src/app/views/layouts/newui.haml | 4 +-
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/_permissions.haml | 3 ++
src/app/views/resources/pools/_properties.haml | 3 ++
src/app/views/resources/pools/show.haml | 15 +-------------
src/public/javascripts/application.js | 22 +++++++++++++++++++++
12 files changed, 71 insertions(+), 16 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 0df5144..3cb44f7 100644
--- a/src/app/controllers/resources/pools_controller.rb
+++ b/src/app/controllers/resources/pools_controller.rb
@@ -7,6 +7,23 @@ class Resources::PoolsController < ApplicationController
def show
@pool = Pool.find(params[:id])
+ @url_params = params.clone
+ @tab_captions = ['Properties', 'Deployments', 'Instances', 'History',
'Permissions']
+ if params[:details_tab].blank?
+ @details_tab = 'properties'
+ else
+ @details_tab = params[:details_tab]
+ end
+ respond_to do |format|
+ format.js do
+ if params[:details_pane] == 'true'
+ @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
end
def edit
diff --git a/src/app/helpers/application_helper.rb
b/src/app/helpers/application_helper.rb
index 456a02e..12dd62d 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}]"}.reverse_merge!(options))
end
+ def slug(title)
+ title.split(' ').join('_').downcase
+ end
+
end
diff --git a/src/app/stylesheets/newui.scss b/src/app/stylesheets/newui.scss
index 8e53639..4eb16e6 100644
--- a/src/app/stylesheets/newui.scss
+++ b/src/app/stylesheets/newui.scss
@@ -8,6 +8,10 @@ html {
color: orange;
}
+.hidden {
+ display: none;
+}
+
a {
color: $dcprimary;
text-decoration: none;
diff --git a/src/app/views/layouts/_details_pane.haml
b/src/app/views/layouts/_details_pane.haml
new file mode 100644
index 0000000..89ea471
--- /dev/null
+++ b/src/app/views/layouts/_details_pane.haml
@@ -0,0 +1,6 @@
+%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
+ - @tab_captions.each do |tab|
+ %li.ui-state-default.ui-corner-top{ :class => "#{'ui-tabs-selected
ui-state-active' if @details_tab == slug(tab)}"}
+ = link_to tab, @url_params.merge(:details_tab => slug(tab))
+#details-selected
+ = render :partial => @details_tab
diff --git a/src/app/views/layouts/newui.haml b/src/app/views/layouts/newui.haml
index 26a0a48..1ac1073 100644
--- a/src/app/views/layouts/newui.haml
+++ b/src/app/views/layouts/newui.haml
@@ -44,8 +44,8 @@
#list-view{ :class => details ? 'part' : 'full'}
= render :partial => '/layouts/notification'
= (yield :list or yield)
- - if details
- #details-view
+ #details-view.ui-tabs.ui-widget.ui-widget-content.ui-corner-all{
:class => ('hidden' unless details)}
+ - if details
= 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/_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 7277a5c..05eeedd 100644
--- a/src/app/views/resources/pools/show.haml
+++ b/src/app/views/resources/pools/show.haml
@@ -2,17 +2,4 @@
= 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
+ = render :partial => 'layouts/details_pane'
diff --git a/src/public/javascripts/application.js
b/src/public/javascripts/application.js
index 50edbe4..e5fce46 100644
--- a/src/public/javascripts/application.js
+++ b/src/public/javascripts/application.js
@@ -57,6 +57,26 @@ var Aggregator = {
} else {
$footer.removeClass('fixed');
}
+ },
+
+ enhanceListView: function () {
+ $('#list-view table tbody a').live("click",function(e) {
+ if (e.which==2||e.metaKey||e.ctrlKey||e.shiftKey) return true;
+
+ e.preventDefault();
+ var url = $(this).attr('href') + '?details_pane=true';
+ $.get(url, function(data) {
+ $('#list-view').removeClass('full').addClass('part');
+ $('#details-view').html(data)
+ .show();
+ Aggregator.enhanceDetailsTabs();
+ });
+ });
+ },
+
+ enhanceDetailsTabs: function () {
+ $('#details-view ul li a').first().attr('href', '#details-selected');
+ $('#details-view').tabs('destroy').tabs();
}
};
@@ -144,4 +164,6 @@ var Aggregator = {
$(document).ready(function () {
$(window).scroll(Aggregator.positionFooter).resize(Aggregator.positionFooter).scroll();
$("#notification").enhanceInteraction();
+ Aggregator.enhanceListView();
+ Aggregator.enhanceDetailsTabs();
});
--
1.7.3.3
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel