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 &amp; 
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 &amp; 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 &amp; 
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 &amp; 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

Reply via email to