From: Jan Provaznik <jprovazn(a)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' : '#{(a)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(); });
});
});
--
1.7.2.3