From: Jan Provaznik jprovazn@redhat.com
- loadmasking for ajax requests, still TODO: css for pagination buttons and "add selected" button - when user clacks on "add software", collections list is preselected instead of "no group selected" message - fixed adding of group except individual packages - hidden "add software" button when "cancel" button is clicked --- 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 | 9 +++++++-- 7 files changed, 46 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..eada010 100644 --- a/src/app/views/templates/new.haml +++ b/src/app/views/templates/new.haml @@ -31,7 +31,11 @@ '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'); + Aggregator.hook_selected_packages(); + }); }); }); }); @@ -53,11 +57,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' : '#{@id.nil? ? 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(); }); }); });