From: Jan Provaznik <[email protected]>

loadmask, minor bug fixes
---
 src/app/controllers/templates_controller.rb      |   22 +++++++++++++---------
 src/app/stylesheets/aggregator.scss              |    9 +++++++++
 src/app/views/templates/_collections.haml        |    4 +++-
 src/app/views/templates/_metagroup_packages.haml |    2 +-
 src/app/views/templates/_searched_packages.haml  |    2 ++
 src/app/views/templates/content_selection.haml   |   12 +++++++++++-
 src/app/views/templates/new.haml                 |    8 ++++++--
 7 files changed, 45 insertions(+), 14 deletions(-)

diff --git a/src/app/controllers/templates_controller.rb 
b/src/app/controllers/templates_controller.rb
index 4fe34bb..1573167 100644
--- a/src/app/controllers/templates_controller.rb
+++ b/src/app/controllers/templates_controller.rb
@@ -132,6 +132,8 @@ class TemplatesController < ApplicationController
       else
         @metagroup_packages = 
@repository_manager.metagroup_packages_with_tagged_selected_packages(@metagroup,
 @packages, params[:repository] || @tpl.platform)
       end
+    else
+      @collections = 
@repository_manager.all_groups_with_tagged_selected_packages(@packages, 
params[:repository] || @tpl.platform)
     end
     if request.xhr?
       if @metagroup_packages
@@ -140,7 +142,7 @@ class TemplatesController < ApplicationController
       if @searched_packages
         render :partial => 'searched_packages' and return
       end
-      if @collections
+      if @collections and @metagroup
         render :partial => 'collections' and return
       end
     end
@@ -264,14 +266,16 @@ add account on <a href=\"#{url_for :controller => 
'provider', \
       @selected_packages = []
     end
 
-    [:selected_groups, :groups].each do |pg|
-      if params[pg]
-        params[pg].each { |grp|
-          fg = @groups.find { |gk, gv| gk == grp }
-          fg[1][:packages].each { |pk, pv|
-            @selected_packages << pk
-          } unless fg.nil?
-        }
+    if params[:collections].to_s == 'true' or not request.xhr?
+      [:selected_groups, :groups].each do |pg|
+        if params[pg]
+          params[pg].each { |grp|
+            fg = @groups.find { |gk, gv| gk == grp }
+            fg[1][:packages].each { |pk, pv|
+              @selected_packages << pk
+            } unless fg.nil?
+          }
+        end
       end
     end
 
diff --git a/src/app/stylesheets/aggregator.scss 
b/src/app/stylesheets/aggregator.scss
index 6d0a070..c2b95e7 100644
--- a/src/app/stylesheets/aggregator.scss
+++ b/src/app/stylesheets/aggregator.scss
@@ -1167,6 +1167,15 @@ a.iconbutton {
       margin: 0;
     }
   }
+
+  #metagrouppackages {
+    &.loading {
+      display: block;
+      height: 100px;
+      background: url(../../images/spinner.gif) no-repeat center center;
+    }
+  }
+
   span.loading {
     background: url(../../images/spinner.gif) no-repeat center left;
     display: inline-block;
diff --git a/src/app/views/templates/_collections.haml 
b/src/app/views/templates/_collections.haml
index 96ddcad..4623f6f 100644
--- a/src/app/views/templates/_collections.haml
+++ b/src/app/views/templates/_collections.haml
@@ -1,7 +1,9 @@
+= hidden_field_tag :collections, true
+
 %ul.collections
   - @collections.keys.sort.each do |id|
     %li
       - selected = @collections[id][:selected] ? true : false
-      = check_box_tag 'groups[]', id, selected, {:disabled => selected, :id => 
"group_#{id}"}
+      = check_box_tag 'groups[]', id, selected, {:disabled => selected, :id => 
"group_#{id}", :class => "#{selected ? 'selected' : ''}"}
       = label_tag "group_#{id}", @collections[id][:name]
 = render :partial => 'addbuttons'
diff --git a/src/app/views/templates/_metagroup_packages.haml 
b/src/app/views/templates/_metagroup_packages.haml
index 9c0e2d4..07642b1 100644
--- a/src/app/views/templates/_metagroup_packages.haml
+++ b/src/app/views/templates/_metagroup_packages.haml
@@ -8,7 +8,7 @@
       %li
         - selected = !...@metagroup_packages[group][:selected].nil?
         %h5
-          = check_box_tag 'groups[]', group, selected, {:disabled => selected, 
:id => "group_#{group}", :class => 'softwaregroups'}
+          = check_box_tag 'groups[]', group, selected, {:disabled => selected, 
:id => "group_#{group}", :class => "softwaregroups #{selected ? 'selected' : 
''}"}
           = label_tag "group_#{group}", group
         %ul
           - @metagroup_packages[group][:packages].each do |pkg|
diff --git a/src/app/views/templates/_searched_packages.haml 
b/src/app/views/templates/_searched_packages.haml
index d0eb770..0894cb5 100644
--- a/src/app/views/templates/_searched_packages.haml
+++ b/src/app/views/templates/_searched_packages.haml
@@ -15,7 +15,9 @@
         'page': $(this).val(),
         'repository': $("select[name='tpl[platform]']").val()
       };
+      $('#metagrouppackages').empty().addClass('loading');
       $('#metagrouppackages').load(url, data, function() {
+        $('#metagrouppackages').removeClass('loading');
         Aggregator.hook_selected_packages();
       })
     });
diff --git a/src/app/views/templates/content_selection.haml 
b/src/app/views/templates/content_selection.haml
index e5961fe..f1499ae 100644
--- a/src/app/views/templates/content_selection.haml
+++ b/src/app/views/templates/content_selection.haml
@@ -9,8 +9,18 @@
         'packages[]':  $("input:text[name='packages[]']").map(function() 
{return $(this).val()}).get()
       };
       var url = '#{url_for :action => 'dispatch', :id => @id}';
-      $('#metagrouppackages, ').load(url, data, function() {
+      $metagrouppackages.empty().addClass('loading');
+      $metagrouppackages.load(url, data, function() {
+        $metagrouppackages.removeClass('loading');
         Aggregator.hook_selected_packages();
+        //select all packages in collection
+        $(".softwaregroups").click(function() {
+          if ($(this).attr("checked") === true) {
+            
$(this).parent().siblings("ul").find("input[type='checkbox']").attr("checked","checked");
+          } else {
+            
$(this).parent().siblings("ul").find("input[type='checkbox']").removeAttr("checked");
+          }
+        });
       });
     });
     Aggregator.hook_selected_packages();
diff --git a/src/app/views/templates/new.haml b/src/app/views/templates/new.haml
index 3d16f4f..7628f64 100644
--- a/src/app/views/templates/new.haml
+++ b/src/app/views/templates/new.haml
@@ -31,7 +31,10 @@
             'repository': $("select[name='tpl[platform]']").val()
           };
           var url = '#{url_for :action => 'dispatch', :id => @id}';
-          $('#metagrouppackages').load(url, data);
+          $('#metagrouppackages').empty().addClass('loading');
+          $('#metagrouppackages').load(url, data, function() {
+            $('#metagrouppackages').removeClass('loading');
+          });
         });
       });
     });
@@ -53,11 +56,12 @@
           'selected_packages[]': old_pkgs.concat(new_pkgs.concat(cached_pkgs)),
           'selected_groups[]': 
$("input:checked[name='groups[]']").map(function() {return 
$(this).val()}).get(),
           'cached_packages[]': $("input:text[name='cached[]']").map(function() 
{return $(this).val()}).get(),
+          'collections': $("input:hidden[name=collections]").val(),
           'template_id'  : '#[email protected]? ? nil : @id}'
         };
         $('#managed_content').load(url, data, function(){
           //$('#package_selection_list').empty().show();
-          $('#add_software_button').show();
+          //$('#add_software_button').show();
           $('.remove_package').click(function() { 
$(this).parent().parent().remove(); });
         });
       });
-- 
1.7.2.3

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to