From: Jan Provaznik <[email protected]>
- "new" action is splited into 4 actions according UI forms (new, service,
software, summary)
- image descriptor id is passed by 'id'
---
src/app/controllers/image_descriptor_controller.rb | 77 ++++++++++++-------
src/app/views/image_descriptor/_nav.haml | 8 +-
src/app/views/image_descriptor/_services.haml | 32 --------
src/app/views/image_descriptor/_software.haml | 72 ------------------
src/app/views/image_descriptor/_summary.haml | 58 ---------------
src/app/views/image_descriptor/new.haml | 23 +++++-
src/app/views/image_descriptor/services.haml | 37 +++++++++
src/app/views/image_descriptor/software.haml | 78 ++++++++++++++++++++
src/app/views/image_descriptor/summary.haml | 64 ++++++++++++++++
9 files changed, 249 insertions(+), 200 deletions(-)
delete mode 100644 src/app/views/image_descriptor/_services.haml
delete mode 100644 src/app/views/image_descriptor/_software.haml
delete mode 100644 src/app/views/image_descriptor/_summary.haml
create mode 100644 src/app/views/image_descriptor/services.haml
create mode 100644 src/app/views/image_descriptor/software.haml
create mode 100644 src/app/views/image_descriptor/summary.haml
diff --git a/src/app/controllers/image_descriptor_controller.rb
b/src/app/controllers/image_descriptor_controller.rb
index e5a3a2d..532c092 100644
--- a/src/app/controllers/image_descriptor_controller.rb
+++ b/src/app/controllers/image_descriptor_controller.rb
@@ -2,8 +2,6 @@ class ImageDescriptorController < ApplicationController
layout :layout
before_filter :require_user
- TABS = %w(basics services software summary)
-
def layout
return "aggregator" unless ajax?
end
@@ -13,46 +11,67 @@ class ImageDescriptorController < ApplicationController
end
def new
- # FIXME: check permission, something like IMAGE_CREATE
- if params[:commit] == 'Cancel' or params[:commit] == 'Done'
+ if params[:cancel]
redirect_to :controller => "dashboard", :action => 'index'
- return
- elsif params[:commit] == 'Build'
- @tab = 'summary'
- if params[:targets]
- params[:targets].each do |target|
- ImageDescriptorTarget.new_if_not_exists(:name => target,
:image_descriptor_id => params[:image_descriptor][:id], :status =>
ImageDescriptorTarget::STATE_QUEUED)
- end
- end
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
end
+ end
- unless @tab
- @old_tab = TABS.index(params[:tab]) || nil
- next_idx = @old_tab ? @old_tab + (params[:commit] == 'Back' ? -1 : 1) : 0
- @tab = (next_idx < 0 || next_idx > TABS.size) ? TABS[0] : TABS[next_idx]
+ def services
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
end
+ end
- @image_descriptor = params[:image_descriptor] &&
params[:image_descriptor][:id] ?
ImageDescriptor.find(params[:image_descriptor][:id]) : ImageDescriptor.new
- @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ def software
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
+ @repositories = RepositoryManager.new.repositories
+ if params[:back]
+ redirect_to :action => 'new', :id => params[:id]
+ return
+ end
+ end
+ end
- if @tab == 'summary'
+ def summary
+ if params[:cancel]
+ redirect_to :controller => "dashboard", :action => 'index'
+ else
+ @image_descriptor = params[:id] ? ImageDescriptor.find(params[:id]) :
ImageDescriptor.new
+ @image_descriptor.update_xml_attributes!(params[:xml] || {})
@image_descriptor.complete = true
@image_descriptor.save!
- end
-
- if @tab == 'software'
- @repositories = RepositoryManager.new.repositories
- elsif @tab == 'summary'
@all_targets = ImageDescriptorTarget.available_targets
+ if params[:back]
+ redirect_to :action => 'services', :id => params[:id]
+ return
+ end
end
end
- def create
- if params[:commit] == 'Cancel'
- redirect_to :controller => "image", :action => 'show'
- return
+ def build
+ if params[:cancel] or params[:done]
+ redirect_to :controller => "dashboard", :action => 'index'
+ elsif params[:back]
+ redirect_to :action => 'software', :id => params[:id]
+ else
+ @all_targets = ImageDescriptorTarget.available_targets
+ if params[:targets]
+ params[:targets].each do |target|
+ ImageDescriptorTarget.new_if_not_exists(:name => target,
:image_descriptor_id => params[:id], :status =>
ImageDescriptorTarget::STATE_QUEUED)
+ end
+ end
+ redirect_to :action => 'summary', :id => params[:id]
end
- redirect_to :action => 'images', :tab => 'show'
end
def targets
diff --git a/src/app/views/image_descriptor/_nav.haml
b/src/app/views/image_descriptor/_nav.haml
index c923baf..35cfd02 100644
--- a/src/app/views/image_descriptor/_nav.haml
+++ b/src/app/views/image_descriptor/_nav.haml
@@ -1,15 +1,15 @@
#image_descriptor_nav
%h2 Create a New Template Master
%ul{:class => 'nav'}
- %li{:class => @tab == 'basics' ? 'selected' : nil}
+ %li{:class => controller.action_name == 'new' ? 'selected' : nil}
%h4 BASICS
%p Basic RHEL LAMP
- %li{:class => @tab == 'services' ? 'selected' : nil}
+ %li{:class => controller.action_name == 'services' ? 'selected' : nil}
%h4 SERVICES
%p Add services
- %li{:class => @tab == 'software' ? 'selected' : nil}
+ %li{:class => controller.action_name == 'software' ? 'selected' : nil}
%h4 SOFTWARE
%p Add software
- %li{:class => @tab == 'summary' ? 'selected' : nil}
+ %li{:class => controller.action_name == 'summary' ? 'selected' : nil}
%h4 SUMMARY
%p Create images
diff --git a/src/app/views/image_descriptor/_services.haml
b/src/app/views/image_descriptor/_services.haml
deleted file mode 100644
index d0ef4af..0000000
--- a/src/app/views/image_descriptor/_services.haml
+++ /dev/null
@@ -1,32 +0,0 @@
-%ul
- %li
- %label Storage
- = check_box_tag 'xml[services][amazon3_storage]', '1',
@image_descriptor.xml.services.include?('amazon3_storage')
- = label_tag 'xml[services][amazon3_storage]', 'Enable Amazon S3 storage',
:class => "plain"
- %span Provides cloud aware table storage for both user-data and
guest-images and snapshots compatible with Amazon S3, for any (internal &
external)cloud deployment
- %li
- %label Inter-node Messaging
- = check_box_tag 'xml[services][inter_node_messaging]', '1',
@image_descriptor.xml.services.include?('inter_node_messaging')
- = label_tag 'xml[services][inter_node_messaging]', 'Enable inter-node
messaging', :class => "plain"
- %span Provides cloud aware messaging to facilitate instance-to-instance
and instance-to-external communication compatible with Amazon SQS, for any
(internal & external)cloud deployment
- %li
- %label Availbility
- = check_box_tag 'xml[services][availbility]', '1',
@image_descriptor.xml.services.include?('availbility')
- = label_tag 'xml[services][availbility]', 'Enable high availbility
services', :class => "plain"
- %span Provides REST API's that allow applications and administrators to
inspect instances and know the active state and configuration. Choose high
availability to actively maintain and manage application availability when run
in cloud
- %li
- %label JBoss
- = check_box_tag 'xml[services][jboss]', '1',
@image_descriptor.xml.services.include?('jboss')
- = label_tag 'xml[services][jboss]', 'Enable JBoss infrastructure', :class
=> "plain"
- %span Provides cloud ready JBoss infrastructure to be run in public and
internal clouds
- %li
- %label Cooling Tower
- = check_box_tag 'xml[services][cooling_tower]', '1',
@image_descriptor.xml.services.include?('cooling_tower')
- = label_tag 'xml[services][cooling_tower]', 'Enable Cooling Tower', :class
=> "plain"
- %span Provides multi-tenant, lightweight container for managing many cloud
ready PaaS services inside a single instance
-
-
-.submit
- = submit_tag "Cancel"
- = submit_tag "Back"
- = submit_tag "Next"
diff --git a/src/app/views/image_descriptor/_software.haml
b/src/app/views/image_descriptor/_software.haml
deleted file mode 100644
index 5f7f24f..0000000
--- a/src/app/views/image_descriptor/_software.haml
+++ /dev/null
@@ -1,72 +0,0 @@
-- content_for :scripts do
- :javascript
- $(document).ready(function() {
- $("#dashboard-tabs > ul > li > a").each(function(index) {
- var link = $(this).attr("href") + "?ajax=true";
- $(this).attr("href", link);
- });
- $("#dashboard-tabs").tabs({spinner: "Loading..."});
-
- // when JS is enabled, hide the Dashboard content -- it'll be loaded
- // by jquery UI tab using ajax
- $("#dashboard-content").hide();
- #...@image_descriptor.xml.packages.map {|group, pkgs|
js_add_group_cmd(group, pkgs)}.join("\n")}
- });
- function remove_group(ev) {
- $(ev.target).parent().remove();
- };
- function get_repository(ev) {
- var rep = $(ev.target).val();
- $("#dashboard-tabs > ul > li > a").each(function(index) {
- var link = $(this).data('load.tabs');
- if (link.search(/repository=[^$&]*/) == -1) {
- link = link + "&repository=" + rep;
- } else {
- link = link.replace(/repository=[^$&]*/, "repository="+rep);
- }
- $("#dashboard-tabs").tabs('url', index, link);
- });
- $("#dashboard-tabs").tabs('load', $("#dashboard-tabs").tabs('option',
'selected'));
- };
- function select_package(group, pkgname, parent) {
- if (!parent) parent = $("#selected_packages");
- if (parent.find(".pkgname").filter(function() {return $(this).text() ==
pkgname}).length == 0) {
- var node = $("<li><input type=checkbox name='xml[packages][]' value='"
+ group + '#' + pkgname + "' checked=true><span class='pkgname'>" + pkgname +
"</span></li>").appendTo(parent);
- }
- };
- function add_group(name) {
- var group = $("<li><span class='group'>" + name + "</span><span
class='select'
onclick='remove_group(event)'>Remove</span><ul></ul></li>").appendTo("#selected_packages");
- return group.find("ul");
- };
- function select_group(opts) {
- var groups = $("#selected_packages li .group").filter(function() {return
$(this).text() == opts.group});
- //FIXME: if group exists, we abort adding group again, merging is not
supported yet
- if (groups.length > 0) return;
- var group = add_group(opts.group);
- for (var i = 0; i < opts.pkgs.length; i++) {
- select_package(opts.group, opts.pkgs[i], group);
- }
- };
-
-- menu = [ { :text => "Groups", :action => "repository_packages_by_group" }, |
- { :text => "Packages", :action => "repository_packages" }, ] |
-
-.pkglist_wrapper
- .pkglist
- #dashboard-tabs{ :class => "ui-tabs ui-widget ui-widget-content
ui-corner-all" }
- %ul{ :class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header" }
- - menu.each do |item|
- - selection_style = "ui-tabs-selected ui-state-active" if
item[:action] == controller.action_name
- %li{ :class => "#{selection_style} ui-state-default ui-corner-top",
:style => 'clear: none' }
- = "<a href=\"#{url_for :controller => "image_descriptor", :action
=> item[:action] }\"><span>#{item[:text]}</span></a>"
- %li{ :class => "select_repository"}
- = select_repository_tag(@repositories)
- .pkglist{:style => "margin-left: 30px", :class => "left-pkglist"}
- %div{:class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-helper-reset ui-helper-clearfix ui-widget-header"}
- Selected packages
- %ul{:id => "selected_packages"}
-
-.submit
- = submit_tag "Cancel"
- = submit_tag "Back"
- = submit_tag "Next"
diff --git a/src/app/views/image_descriptor/_summary.haml
b/src/app/views/image_descriptor/_summary.haml
deleted file mode 100644
index 632669d..0000000
--- a/src/app/views/image_descriptor/_summary.haml
+++ /dev/null
@@ -1,58 +0,0 @@
-- content_for :scripts do
- :javascript
- $(document).ready(function() {
- var refreshId = setInterval(function() {
- $('#image_target_list').load('#{url_for :controller =>
'image_descriptor', :action => 'targets', :id => @image_descriptor.id, :ajax =>
true}');
- }, 10000);
- });
- function toggle_build_form_visibility(ev) {
- if ($("#image_build_form").css('display') == 'none') {
- $("#image_build_form").css('display', 'block');
- $(ev.target).val('Cancel');
- } else {
- $("#image_build_form").css('display', 'none');
- $(ev.target).val('Build Images');
- }
- }
-
-.summary_panel
- %ul{:class => 'side_panel'}
- %li
- BASICS
- %label
- = @image_descriptor.xml.name
- %label
- = @image_descriptor.xml.platform
- %label
- = @image_descriptor.xml.description
- %li
- SERVICES
- - @image_descriptor.xml.services.each do |service|
- %label
- = service
- //FIXME: software could take realy long space
- //%li
- // SOFTWARE
-
- %ul{:class => 'main_panel'}
- .image_build_panel
- %h3
- Images
- %input{:type => 'button', :value => "Build Images", :style =>
'float:right', :onclick => 'toggle_build_form_visibility(event)'}
- #image_build_form
- %ul
- %li
- %label Image formats
- %ul
- - @all_targets.each do |target_id, target|
- %li
- = check_box_tag 'targets[]', target_id, false
- %span
- = target['name']
- = submit_tag "Build"
- = render :partial => 'targets'
-
-.submit
- = submit_tag "Cancel"
- = submit_tag "Back"
- = submit_tag "Done"
diff --git a/src/app/views/image_descriptor/new.haml
b/src/app/views/image_descriptor/new.haml
index e6f4a3e..5a1adda 100644
--- a/src/app/views/image_descriptor/new.haml
+++ b/src/app/views/image_descriptor/new.haml
@@ -1,9 +1,22 @@
-= render :partial => "nav", :locals => {:tab => params[:tab]}
+= render :partial => "nav"
#image_descriptor_form{:class => 'dcloud_form'}
= error_messages_for 'image_descriptor'
- - form_tag :action => 'new' do
- %input{:type => 'hidden', :name => 'tab', :value => @tab}
- = hidden_field :image_descriptor, :id
- = render :partial => @tab
+ - form_for @image_descriptor, :url => {:action => 'services', :id =>
@image_descriptor.id} do
+ %ul
+ %li
+ %label Name
+ = text_field_tag 'xml[name]', @image_descriptor.xml.name
+ %span Provide a unique name for template master. Users will see this
name when they choose this image to instantiate.
+ %li
+ %label Platform
+ = select_tag("xml[platform]",
@image_descriptor.xml.platforms.map{|repid, rep| "<option value=\"#{repid}\"
selected=\"#{repid == @image_descriptor.xml.platform ? 'selected' :
''}\">#{rep['name']}</option>"})
+ %span Choose the software operating system.
+ %li
+ %label Description
+ = text_area_tag("xml[description]", @image_descriptor.xml.description,
:rows => 4)
+ %span Provide a description of your template master. Be descriptive to
help users to identify the images created with this master.
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Next", :name => "next"
diff --git a/src/app/views/image_descriptor/services.haml
b/src/app/views/image_descriptor/services.haml
new file mode 100644
index 0000000..ac169b7
--- /dev/null
+++ b/src/app/views/image_descriptor/services.haml
@@ -0,0 +1,37 @@
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'software', :id =>
@image_descriptor.id} do
+ = hidden_field :image_descriptor, :id
+ %ul
+ %li
+ %label Storage
+ = check_box_tag 'xml[services][amazon3_storage]', '1',
@image_descriptor.xml.services.include?('amazon3_storage')
+ = label_tag 'xml[services][amazon3_storage]', 'Enable Amazon S3
storage', :class => "plain"
+ %span Provides cloud aware table storage for both user-data and
guest-images and snapshots compatible with Amazon S3, for any (internal &
external)cloud deployment
+ %li
+ %label Inter-node Messaging
+ = check_box_tag 'xml[services][inter_node_messaging]', '1',
@image_descriptor.xml.services.include?('inter_node_messaging')
+ = label_tag 'xml[services][inter_node_messaging]', 'Enable inter-node
messaging', :class => "plain"
+ %span Provides cloud aware messaging to facilitate
instance-to-instance and instance-to-external communication compatible with
Amazon SQS, for any (internal & external)cloud deployment
+ %li
+ %label Availbility
+ = check_box_tag 'xml[services][availbility]', '1',
@image_descriptor.xml.services.include?('availbility')
+ = label_tag 'xml[services][availbility]', 'Enable high availbility
services', :class => "plain"
+ %span Provides REST API's that allow applications and administrators
to inspect instances and know the active state and configuration. Choose high
availability to actively maintain and manage application availability when run
in cloud
+ %li
+ %label JBoss
+ = check_box_tag 'xml[services][jboss]', '1',
@image_descriptor.xml.services.include?('jboss')
+ = label_tag 'xml[services][jboss]', 'Enable JBoss infrastructure',
:class => "plain"
+ %span Provides cloud ready JBoss infrastructure to be run in public
and internal clouds
+ %li
+ %label Cooling Tower
+ = check_box_tag 'xml[services][cooling_tower]', '1',
@image_descriptor.xml.services.include?('cooling_tower')
+ = label_tag 'xml[services][cooling_tower]', 'Enable Cooling Tower',
:class => "plain"
+ %span Provides multi-tenant, lightweight container for managing many
cloud ready PaaS services inside a single instance
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Back", :name => "back"
+ = submit_tag "Next", :name => "next"
diff --git a/src/app/views/image_descriptor/software.haml
b/src/app/views/image_descriptor/software.haml
new file mode 100644
index 0000000..47f377f
--- /dev/null
+++ b/src/app/views/image_descriptor/software.haml
@@ -0,0 +1,78 @@
+- content_for :scripts do
+ :javascript
+ $(document).ready(function() {
+ $("#dashboard-tabs > ul > li > a").each(function(index) {
+ var link = $(this).attr("href") + "?ajax=true";
+ $(this).attr("href", link);
+ });
+ $("#dashboard-tabs").tabs({spinner: "Loading..."});
+
+ // when JS is enabled, hide the Dashboard content -- it'll be loaded
+ // by jquery UI tab using ajax
+ $("#dashboard-content").hide();
+ #...@image_descriptor.xml.packages.map {|group, pkgs|
js_add_group_cmd(group, pkgs)}.join("\n")}
+ });
+ function remove_group(ev) {
+ $(ev.target).parent().remove();
+ };
+ function get_repository(ev) {
+ var rep = $(ev.target).val();
+ $("#dashboard-tabs > ul > li > a").each(function(index) {
+ var link = $(this).data('load.tabs');
+ if (link.search(/repository=[^$&]*/) == -1) {
+ link = link + "&repository=" + rep;
+ } else {
+ link = link.replace(/repository=[^$&]*/, "repository="+rep);
+ }
+ $("#dashboard-tabs").tabs('url', index, link);
+ });
+ $("#dashboard-tabs").tabs('load', $("#dashboard-tabs").tabs('option',
'selected'));
+ };
+ function select_package(group, pkgname, parent) {
+ if (!parent) parent = $("#selected_packages");
+ if (parent.find(".pkgname").filter(function() {return $(this).text() ==
pkgname}).length == 0) {
+ var node = $("<li><input type=checkbox name='xml[packages][]' value='"
+ group + '#' + pkgname + "' checked=true><span class='pkgname'>" + pkgname +
"</span></li>").appendTo(parent);
+ }
+ };
+ function add_group(name) {
+ var group = $("<li><span class='group'>" + name + "</span><span
class='select'
onclick='remove_group(event)'>Remove</span><ul></ul></li>").appendTo("#selected_packages");
+ return group.find("ul");
+ };
+ function select_group(opts) {
+ var groups = $("#selected_packages li .group").filter(function() {return
$(this).text() == opts.group});
+ //FIXME: if group exists, we abort adding group again, merging is not
supported yet
+ if (groups.length > 0) return;
+ var group = add_group(opts.group);
+ for (var i = 0; i < opts.pkgs.length; i++) {
+ select_package(opts.group, opts.pkgs[i], group);
+ }
+ };
+
+- menu = [ { :text => "Groups", :action => "repository_packages_by_group" }, |
+ { :text => "Packages", :action => "repository_packages" }, ] |
+
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'summary', :id =>
@image_descriptor.id} do
+ .pkglist_wrapper
+ .pkglist
+ #dashboard-tabs{ :class => "ui-tabs ui-widget ui-widget-content
ui-corner-all" }
+ %ul{ :class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header" }
+ - menu.each do |item|
+ - selection_style = "ui-tabs-selected ui-state-active" if
item[:action] == controller.action_name
+ %li{ :class => "#{selection_style} ui-state-default
ui-corner-top", :style => 'clear: none' }
+ = "<a href=\"#{url_for :controller => "image_descriptor",
:action => item[:action] }\"><span>#{item[:text]}</span></a>"
+ %li{ :class => "select_repository"}
+ = select_repository_tag(@repositories)
+ .pkglist{:style => "margin-left: 30px", :class => "left-pkglist"}
+ %div{:class => "ui-tabs ui-widget ui-widget-content ui-corner-all
ui-helper-reset ui-helper-clearfix ui-widget-header"}
+ Selected packages
+ %ul{:id => "selected_packages"}
+
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Back", :name => "back"
+ = submit_tag "Next", :name => "next"
diff --git a/src/app/views/image_descriptor/summary.haml
b/src/app/views/image_descriptor/summary.haml
new file mode 100644
index 0000000..dd8ff1f
--- /dev/null
+++ b/src/app/views/image_descriptor/summary.haml
@@ -0,0 +1,64 @@
+- content_for :scripts do
+ :javascript
+ $(document).ready(function() {
+ var refreshId = setInterval(function() {
+ $('#image_target_list').load('#{url_for :controller =>
'image_descriptor', :action => 'targets', :id => @image_descriptor.id, :ajax =>
true}');
+ }, 10000);
+ });
+ function toggle_build_form_visibility(ev) {
+ if ($("#image_build_form").css('display') == 'none') {
+ $("#image_build_form").css('display', 'block');
+ $(ev.target).val('Cancel');
+ } else {
+ $("#image_build_form").css('display', 'none');
+ $(ev.target).val('Build Images');
+ }
+ }
+
+= render :partial => "nav"
+
+#image_descriptor_form{:class => 'dcloud_form'}
+ = error_messages_for 'image_descriptor'
+
+ - form_for @image_descriptor, :url => {:action => 'build', :id =>
@image_descriptor.id} do
+ .summary_panel
+ %ul{:class => 'side_panel'}
+ %li
+ BASICS
+ %label
+ = @image_descriptor.xml.name
+ %label
+ = @image_descriptor.xml.platform
+ %label
+ = @image_descriptor.xml.description
+ %li
+ SERVICES
+ - @image_descriptor.xml.services.each do |service|
+ %label
+ = service
+ //FIXME: software could take realy long space
+ //%li
+ // SOFTWARE
+
+ %ul{:class => 'main_panel'}
+ .image_build_panel
+ %h3
+ Images
+ %input{:type => 'button', :value => "Build Images", :style =>
'float:right', :onclick => 'toggle_build_form_visibility(event)'}
+ #image_build_form
+ %ul
+ %li
+ %label Image formats
+ %ul
+ - @all_targets.each do |target_id, target|
+ %li
+ = check_box_tag 'targets[]', target_id, false
+ %span
+ = target['name']
+ = submit_tag "Build"
+ = render :partial => 'targets'
+
+ .submit
+ = submit_tag "Cancel", :name => "cancel"
+ = submit_tag "Back", :name => "back"
+ = submit_tag "Done", :name => "done"
--
1.7.0.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel