From: Jan Provaznik <[email protected]>
Packages are now groupped by group.
---
src/app/controllers/templates_controller.rb | 7 +++++--
src/app/util/repository_manager.rb | 22 +++++++++++++++++++---
src/app/views/templates/_metagroup_packages.haml | 16 +++++++++++-----
src/app/views/templates/_searched_packages.haml | 8 ++++++++
4 files changed, 43 insertions(+), 10 deletions(-)
create mode 100644 src/app/views/templates/_searched_packages.haml
diff --git a/src/app/controllers/templates_controller.rb
b/src/app/controllers/templates_controller.rb
index 32523f6..f8df130 100644
--- a/src/app/controllers/templates_controller.rb
+++ b/src/app/controllers/templates_controller.rb
@@ -120,19 +120,22 @@ class TemplatesController < ApplicationController
@metagroups = @repository_manager.metagroups
if not params[:package_search].blank?
- @metagroup_packages =
@repository_manager.search_package(params[:package_search], params[:repository])
+ @searched_packages =
@repository_manager.search_package(params[:package_search], params[:repository])
elsif not @metagroup.blank?
if @metagroup == 'Collections'
# TODO: if we remember selected groups, this could be done much more
simply
@collections =
@repository_manager.all_groups_with_tagged_selected_packages(@packages,
params[:repository])
else
- @metagroup_packages =
@repository_manager.metagroup_packages(@metagroup, params[:repository])
+ @metagroup_packages =
@repository_manager.metagroup_packages_with_tagged_selected_packages(@metagroup,
@packages, params[:repository])
end
end
if request.xhr?
if @metagroup_packages
render :partial => 'metagroup_packages' and return
end
+ if @searched_packages
+ render :partial => 'searched_packages' and return
+ end
if @collections
render :partial => 'collections' and return
end
diff --git a/src/app/util/repository_manager.rb
b/src/app/util/repository_manager.rb
index 64de179..666b669 100644
--- a/src/app/util/repository_manager.rb
+++ b/src/app/util/repository_manager.rb
@@ -92,14 +92,30 @@ class RepositoryManager
end
def metagroup_packages(category, repository = nil)
- res = []
+ res = {}
groups = all_groups(repository)
metagroups[category].to_a.each do |entry|
cat, group = entry.split(';')
next unless c = categories[cat] and c[:groups].include?(group) and
groups[group]
- res += groups[group][:packages].keys
+ res[group] = {:packages => groups[group][:packages].keys}
+ end
+ res
+ end
+
+ def metagroup_packages_with_tagged_selected_packages(category, pkgs,
repository = nil)
+ mgroups = metagroup_packages(category, repository)
+ mgroups.each_value do |group|
+ missing = false
+ pkgs.each do |p|
+ unless group[:packages].include?(p[:name])
+ missing = true
+ break
+ end
+ end
+ next if missing
+ group[:selected] = true
end
- res.sort.uniq
+ mgroups
end
def all_groups_with_tagged_selected_packages(pkgs, repository = nil)
diff --git a/src/app/views/templates/_metagroup_packages.haml
b/src/app/views/templates/_metagroup_packages.haml
index f1a42ec..1ba0820 100644
--- a/src/app/views/templates/_metagroup_packages.haml
+++ b/src/app/views/templates/_metagroup_packages.haml
@@ -1,8 +1,14 @@
%h4
- = params[:package_search].blank? ? "#...@metagroup} Packages" : "Search
Results for '#{params[:package_search]}'"
+ = "#...@metagroup} Packages"
%ul.metagrouppackages
- - @metagroup_packages.sort.each do |pkg|
+ - @metagroup_packages.keys.sort.each do |group|
%li
- - selected = @packages.to_a.find {|p| p[:name] == pkg}
- = check_box_tag 'packages[]', pkg, selected, {:disabled => selected, :id
=> "package_#{pkg}"}
- = label_tag "package_#{pkg}", pkg
+ - selected = !...@metagroup_packages[group][:selected].nil?
+ = check_box_tag 'groups[]', group, selected, {:disabled => selected, :id
=> "group_#{group}", :class => 'softwaregroups'}
+ = label_tag "group_#{group}", group
+ %ul
+ - @metagroup_packages[group][:packages].each do |pkg|
+ %li
+ - selected = @packages.to_a.find {|p| p[:name] == pkg}
+ = check_box_tag 'packages[]', pkg, selected, {:disabled =>
selected, :id => "package_#{group}_#{pkg}"}
+ = label_tag "package_#{group}_#{pkg}", pkg
diff --git a/src/app/views/templates/_searched_packages.haml
b/src/app/views/templates/_searched_packages.haml
new file mode 100644
index 0000000..084bb01
--- /dev/null
+++ b/src/app/views/templates/_searched_packages.haml
@@ -0,0 +1,8 @@
+%h4
+ = "Search Results for '#{params[:package_search]}'"
+%ul.metagrouppackages
+ - @searched_packages.sort.each do |pkg|
+ %li
+ - selected = @packages.to_a.find {|p| p[:name] == pkg}
+ = check_box_tag 'packages[]', pkg, selected, {:disabled => selected, :id
=> "package_#{pkg}"}
+ = label_tag "package_#{pkg}", pkg
--
1.7.2.3
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel