[PATCH] Translate spaces to _ when generating keys.
by Chris Lalancette
This allows things to work when using spaces in provider names
and cloud account names.
Signed-off-by: Chris Lalancette <clalance(a)redhat.com>
---
src/app/models/cloud_account.rb | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/app/models/cloud_account.rb b/src/app/models/cloud_account.rb
index cbe4d9f..6333c00 100644
--- a/src/app/models/cloud_account.rb
+++ b/src/app/models/cloud_account.rb
@@ -147,7 +147,7 @@ EOT
def generate_cloud_account_key
client = connect
if client.feature?(:instances, :authentication_key)
- key = client.create_key(:name => "#{self.name}_#{Time.now.to_i}_key")
+ key = client.create_key(:name => "#{self.name.tr!(" \t", "_")}_#{Time.now.to_i}_key")
InstanceKey.create(:cloud_account => self, :pem => key.pem, :name => key.id) if key
end
end
--
1.7.3.1
13 years, 8 months
[PATCH aggregator] BZ#641386 Prevent currently logged in user deleting themself
by Martyn Taylor
From: martyntaylor <mtaylor(a)redhat.com>
---
src/app/controllers/users_controller.rb | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/src/app/controllers/users_controller.rb b/src/app/controllers/users_controller.rb
index 7047517..ebe0e8a 100644
--- a/src/app/controllers/users_controller.rb
+++ b/src/app/controllers/users_controller.rb
@@ -140,7 +140,9 @@ class UsersController < ApplicationController
if @current_user.permissions.collect { |p| p.role }.find { |r| r.name == "Administrator" }
if request.post? || request.delete?
@user = User.find(params[:id])
- if @user.destroy
+ if @user == @current_user
+ flash[:notice] = "Can not delete the currently logged in user!"
+ elsif @user.destroy
flash[:notice] = "User Deleted"
else
flash[:error] = {
--
1.7.2.3
13 years, 8 months
[PATCH aggregator] BZ#641870 Added confirmation box to delete user button on manage users page
by Martyn Taylor
From: martyntaylor <mtaylor(a)redhat.com>
---
src/app/views/users/index.haml | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/app/views/users/index.haml b/src/app/views/users/index.haml
index df9def1..3643ba4 100644
--- a/src/app/views/users/index.haml
+++ b/src/app/views/users/index.haml
@@ -8,7 +8,7 @@
= submit_tag "edit", :class => "submit linkbutton"
%dd.delete
%span
- = submit_tag "delete", :class => "submit linkbutton"
+ = submit_tag "delete", :class => "submit linkbutton", :confirm => "Are you sure you want to delete this user?"
%dd.add
%span
= link_to "create", new_user_url
--
1.7.2.3
13 years, 8 months
[PATCH aggregator] BZ #643147 - search list pagination
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
Though there is still minor bug when JS is off:
when user selects some packages, then goes to next page and then returns
previously selected packages are disabled.
---
src/app/controllers/templates_controller.rb | 24 +++++++++++++---
src/app/helpers/templates_helper.rb | 8 +++++
src/app/views/templates/_searched_packages.haml | 34 +++++++++++++++++++++-
src/app/views/templates/content_selection.haml | 25 ++---------------
src/app/views/templates/new.haml | 25 +++++++++++++++++
5 files changed, 87 insertions(+), 29 deletions(-)
create mode 100644 src/app/helpers/templates_helper.rb
diff --git a/src/app/controllers/templates_controller.rb b/src/app/controllers/templates_controller.rb
index a3dc723..4fe34bb 100644
--- a/src/app/controllers/templates_controller.rb
+++ b/src/app/controllers/templates_controller.rb
@@ -114,19 +114,23 @@ class TemplatesController < ApplicationController
@packages = []
@packages += params[:packages].collect{ |p| { :name => p } } unless params[:packages].blank?
@packages += params[:selected_packages].collect{ |p| { :name => p } } unless params[:selected_packages].blank?
- @groups = @repository_manager.all_groups_with_tagged_selected_packages(@packages, params[:repository])
+ @groups = @repository_manager.all_groups_with_tagged_selected_packages(@packages, params[:repository] || @tpl.platform)
@embed = params[:embed]
@categories = @repository_manager.categories(params[:tpl] ? params[:tpl][:platform] : nil)
@metagroups = @repository_manager.metagroups
if not params[:package_search].blank?
- @searched_packages = @repository_manager.search_package(params[:package_search], params[:repository])
+ @page = get_page
+ @cached_packages = params[:cached_packages].to_a
+ @searched_packages = @repository_manager.search_package(params[:package_search],
+ params[:repository] || @tpl.platform).paginate(:page => @page,
+ :per_page => 60)
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])
+ @collections = @repository_manager.all_groups_with_tagged_selected_packages(@packages, params[:repository] || @tpl.platform)
else
- @metagroup_packages = @repository_manager.metagroup_packages_with_tagged_selected_packages(@metagroup, @packages, params[:repository])
+ @metagroup_packages = @repository_manager.metagroup_packages_with_tagged_selected_packages(@metagroup, @packages, params[:repository] || @tpl.platform)
end
end
if request.xhr?
@@ -252,7 +256,7 @@ add account on <a href=\"#{url_for :controller => 'provider', \
@repository_manager = RepositoryManager.new
@groups = @repository_manager.all_groups(params[:repository])
- if not params[:packages].blank? or not params[:selected_packages].blank?
+ if not params[:packages].blank? or not params[:selected_packages].blank? or not params[:cached_packages].blank?
@selected_packages = params[:packages].to_a + params[:selected_packages].to_a
elsif !tpl.nil?
@selected_packages = tpl.xml.packages.collect { |p| p[:name] }
@@ -273,4 +277,14 @@ add account on <a href=\"#{url_for :controller => 'provider', \
@selected_packages.uniq!
end
+
+ def get_page
+ if params[:page] == 'Previous'
+ return params[:old_page].to_i - 1
+ elsif params[:page] == 'Next'
+ return params[:old_page].to_i + 1
+ else
+ return params[:page].blank? ? 1 : params[:page].to_i
+ end
+ end
end
diff --git a/src/app/helpers/templates_helper.rb b/src/app/helpers/templates_helper.rb
new file mode 100644
index 0000000..6323233
--- /dev/null
+++ b/src/app/helpers/templates_helper.rb
@@ -0,0 +1,8 @@
+module TemplatesHelper
+ class ButtonPaginationRenderer < WillPaginate::LinkRenderer
+ def page_link(page, text, attributes = {})
+ #submit_tag text, :name => 'page'
+ "<input type=submit value='#{text}' name='page'/>"
+ end
+ end
+end
diff --git a/src/app/views/templates/_searched_packages.haml b/src/app/views/templates/_searched_packages.haml
index 4bf3898..d0eb770 100644
--- a/src/app/views/templates/_searched_packages.haml
+++ b/src/app/views/templates/_searched_packages.haml
@@ -1,9 +1,39 @@
+:javascript
+ $(document).ready(function() {
+ $('.pagination input[type=submit]').click(function(e) {
+ e.preventDefault();
+ var url = '#{url_for :action => 'dispatch', :id => @id}';
+ var old_pkgs = $("input:hidden[name='cached_packages[]']").map(function() {return $(this).val()}).get();
+ var new_pkgs = $("input:checked[name='packages[]']").map(function() {return $(this).val()}).get();
+ var data = {
+ 'selected_packages[]': $("input:text[name='packages[]']").map(function() {return $(this).val()}).get(),
+ 'cached_packages[]': old_pkgs.concat(new_pkgs),
+ 'selected_groups[]': $("input:checked[name='groups[]']").map(function() {return $(this).val()}).get(),
+ 'package_search': $("input[name='package_search']").val(),
+ 'old_page': '#{@page}',
+ 'template_id' : '#{(a)id.nil? ? nil : @id}',
+ 'page': $(this).val(),
+ 'repository': $("select[name='tpl[platform]']").val()
+ };
+ $('#metagrouppackages').load(url, data, function() {
+ Aggregator.hook_selected_packages();
+ })
+ });
+ });
+
+- @cached_packages.uniq.each do |pkg|
+ = hidden_field_tag 'cached_packages[]', pkg
+
%h4
= "Search Results for '#{params[:package_search]}'"
%ul.searchedpackages
- @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}"}
+ - selected = (@packages.to_a.find {|p| p[:name] == pkg} or @cached_packages.include?(pkg))
+ - disabled = params[:selected_packages].to_a.include?(pkg)
+ = check_box_tag 'packages[]', pkg, selected, {:disabled => disabled, :id => "package_#{pkg}"}
= label_tag "package_#{pkg}", pkg
+= will_paginate @searched_packages, :params => {:package_search => params[:package_search]}, :renderer => TemplatesHelper::ButtonPaginationRenderer.new, :previous_label => 'Previous', :next_label => 'Next'
+= page_entries_info @searched_packages
+
= render :partial => 'addbuttons'
diff --git a/src/app/views/templates/content_selection.haml b/src/app/views/templates/content_selection.haml
index 931c7d6..e5961fe 100644
--- a/src/app/views/templates/content_selection.haml
+++ b/src/app/views/templates/content_selection.haml
@@ -9,30 +9,11 @@
'packages[]': $("input:text[name='packages[]']").map(function() {return $(this).val()}).get()
};
var url = '#{url_for :action => 'dispatch', :id => @id}';
- $metagrouppackages.load(url, data, function() {
- $('#do_add_software').click(function(e) {
- e.preventDefault();
- var url = '#{url_for :action => 'managed_content'}';
- var new_pkgs = $("input:checked[name='packages[]']").map(function() {return $(this).val()}).get();
- var old_pkgs = $("input:text[name='packages[]']").map(function() {return $(this).val()}).get()
- var data = {
- 'selected_packages[]': old_pkgs.concat(new_pkgs),
- 'selected_groups[]': $("input:checked[name='groups[]']").map(function() {return $(this).val()}).get(),
- 'template_id' : '#{(a)id.nil? ? nil : @id}'
- };
- $('#managed_content').load(url, data, function(){
- $('#package_selection_list').empty().show();
- $('#add_software_button').show();
- $('.remove_package').click(function() { $(this).parent().parent().remove(); });
- });
- });
- $('#cancel_add_software').click(function(e) {
- e.preventDefault();
- $('#package_selection_list').hide();
- $('#add_software_button').show();
- });
+ $('#metagrouppackages, ').load(url, data, function() {
+ Aggregator.hook_selected_packages();
});
});
+ Aggregator.hook_selected_packages();
});
.grid_16
diff --git a/src/app/views/templates/new.haml b/src/app/views/templates/new.haml
index 915867c..dcb4cda 100644
--- a/src/app/views/templates/new.haml
+++ b/src/app/views/templates/new.haml
@@ -50,6 +50,31 @@
$submit.trigger('click');
}
});
+ Aggregator.hook_selected_packages = function() {
+ $('#do_add_software').click(function(e) {
+ e.preventDefault();
+ var url = '#{url_for :action => 'managed_content'}';
+ var new_pkgs = $("input:checked[name='packages[]']").map(function() {return $(this).val()}).get();
+ var old_pkgs = $("input:text[name='packages[]']").map(function() {return $(this).val()}).get()
+ var cached_pkgs = $("input:hidden[name='cached_packages[]']").map(function() {return $(this).val()}).get()
+ var data = {
+ '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(),
+ 'template_id' : '#{(a)id.nil? ? nil : @id}'
+ };
+ $('#managed_content').load(url, data, function(){
+ //$('#package_selection_list').empty().show();
+ $('#add_software_button').show();
+ $('.remove_package').click(function() { $(this).parent().parent().remove(); });
+ });
+ });
+ $('#cancel_add_software').click(function(e) {
+ e.preventDefault();
+ $('#package_selection_list').hide();
+ $('#add_software_button').show();
+ });
+ }
});
.grid_16
--
1.7.2.3
13 years, 8 months
[PATCH aggregator] BZ #643150 - [Image Builder Service]: Dies too easily on errors
by Jason Guiditta
https://bugzilla.redhat.com/show_bug.cgi?id=643150
For any attempted build that throws an error, set the status
of that build to failed, empty the current build list, and
start fresh without the problematic build in queue.
---
src/image_builder_service/image_builder_service | 29 +++++++++++++++++-----
1 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/src/image_builder_service/image_builder_service b/src/image_builder_service/image_builder_service
index 0ffb74d..db1e888 100755
--- a/src/image_builder_service/image_builder_service
+++ b/src/image_builder_service/image_builder_service
@@ -199,13 +199,28 @@ class ImageBuilderService
loop do
check_for_queued
@activebuilds.delete_if do |ab|
- cur_status = @console.check_status(ab[:build])
- update_agg(ab, cur_status) unless cur_status.eql?(ab[:status])
- @log.debug "========================================"
- @log.debug "Status for target " + ab[:build].target + ": " + cur_status
- @log.debug "Builds in array: " + check_build_num.to_s
- @log.debug "========================================"
- Image::INACTIVE_STATES.include?(cur_status)
+ begin
+ cur_status = @console.check_status(ab[:build])
+ update_agg(ab, cur_status) unless cur_status.eql?(ab[:status])
+ @log.debug "========================================"
+ @log.debug "Status for target " + ab[:build].target + ": " + cur_status
+ @log.debug "Builds in array: " + check_build_num.to_s
+ @log.debug "========================================"
+ Image::INACTIVE_STATES.include?(cur_status)
+ rescue => e
+ @log.fatal "#{e.backtrace.shift}: #{e.message}"
+ e.backtrace.each do |step|
+ @log.fatal "\tfrom #{step}"
+ end
+ @log.info "Something very bad happened. Setting image (id: #{ab[:ar_id]}) to failed"
+ image = Image.find(:first, :conditions => { :target => ab[:build].target.to_s,
+ :template_id => ab[:ar_id].to_i })
+ unless image.nil?
+ image.status = "failed"
+ image.save!
+ end
+ @activebuilds = []
+ end
end
sleep @timeout
--
1.7.2.3
13 years, 8 months
small bits of JS logic for package selection
by Jakub Steiner
Bring back the checkbox behavior we had when using the metagroups. Applies on next: b123fa5a730abf7f9954978a3b05aa6b5a5eab88
[PATCH 1/2] Remove unused disclosure triangle JS
[PATCH 2/2] Add all packages if the collection checkbox is checked.
13 years, 8 months
[PATCH aggregator] Fix cucumber tests for BZ #645018
by lmartinc@redhat.com
From: Ladislav Martincik <lmartinc(a)redhat.com>
---
src/features/authentication.feature | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/features/authentication.feature b/src/features/authentication.feature
index f697ce0..b307c8f 100644
--- a/src/features/authentication.feature
+++ b/src/features/authentication.feature
@@ -16,7 +16,7 @@ Feature: User authentication
| First name | Joe |
| Last name | Tester |
| E-mail | testuser(a)example.com |
- And I press "Create Account"
+ And I press "Save"
Then I should be on the dashboard page
Scenario: Want to register new user but decide to cancel
@@ -52,10 +52,10 @@ Feature: User authentication
Given I am logged in
And I am on the homepage
When I want to edit my profile
- Then I should see "Edit an Account"
+ Then should see "Editing Account"
When I fill in "E-mail" with "changed(a)example.com"
- And I press "Make Changes"
- Then I should be on the account page
+ And I press "Save"
+ Then I should be on the dashboard page
And I should see "User updated!"
Scenario: log out
--
1.7.3.1
13 years, 8 months
[PATCH] Styling of the managed content section.
by Jakub Steiner
applies on Jan's "Packages are now groupped by group." patch.
---
src/app/stylesheets/aggregator.scss | 116 +++++++++++++---------
src/app/views/templates/_addbuttons.haml | 3 +
src/app/views/templates/_collections.haml | 3 +-
src/app/views/templates/_metagroup_packages.haml | 6 +-
src/app/views/templates/_searched_packages.haml | 3 +-
src/app/views/templates/content_selection.haml | 15 +--
6 files changed, 85 insertions(+), 61 deletions(-)
create mode 100644 src/app/views/templates/_addbuttons.haml
diff --git a/src/app/stylesheets/aggregator.scss b/src/app/stylesheets/aggregator.scss
index 399549e..69d81c0 100644
--- a/src/app/stylesheets/aggregator.scss
+++ b/src/app/stylesheets/aggregator.scss
@@ -340,6 +340,19 @@ table {
background: url(../../images/icons/action-icons.png) no-repeat 0 0;
}
}
+input[type='submit'].icon {
+ border: none;
+ background: transparent;
+ font-size: 100%;
+ padding: 0;
+ &:hover {
+ @include no-box-shadow;
+ color: $dcprimary;
+ &[disabled] {
+ color: #000;
+ }
+ }
+}
.actionsidebar {
border-right: 1px solid darken($footerbg, 10%);
@@ -387,19 +400,6 @@ table {
form.buttononly {
display: inline-block;
}
- input[type='submit'].icon {
- border: none;
- background: transparent;
- font-size: 100%;
- padding: 0;
- &:hover {
- @include no-box-shadow;
- color: $dcprimary;
- &[disabled] {
- color: #000;
- }
- }
- }
span {
display: block;
position: absolute;
@@ -429,6 +429,62 @@ table {
}
}
+.packagegroupsidebar {
+ display: block;
+ text-align: right;
+ font-size: 120%;
+ li {
+ display: block;
+ margin: 0;
+ }
+ .icon {
+ text-transform: capitalize;
+ }
+}
+ #collections {
+ margin: 0 0 1em;
+ font-weight: bold;
+ }
+
+.metagrouppackages {
+ display: block;
+ &>li {
+ display: block;
+ text-transform: uppercase;
+ margin: 0 2em 2em 0; padding: 0;
+ label {
+ cursor: pointer;
+ }
+ ul {
+ @include column-count(3);
+ display: block;
+ text-transform: none;
+ font-size: 95%;
+ li {
+ display: block;
+ margin: 0 0 0 4px;
+ text-transform: capitalize;
+ label {
+ font-weight: normal;
+ }
+ }
+ }
+ }
+}
+
+.searchedpackages, .collections {
+ display: block;
+ margin: 0 2em 2em 0;
+ @include column-count(3);
+ li {
+ display: block;
+ margin: 0;
+ label {
+ font-weight: normal;
+ }
+ }
+}
+
/* ICONS */
img.icon {
@@ -1122,40 +1178,6 @@ a.iconbutton {
}
}
-.softwaregroups {
- height: 600px;
- overflow: auto;
- display: block;
- &>li {
- display: block;
- text-transform: uppercase;
- margin: 0 0 2em 0; padding: 0 0 0 20px;
- background: url('../../images/icons/expander-collapsed.png') no-repeat 0 0;
- &.expanded {
- background: url('../../images/icons/expander-expanded.png') no-repeat 0 0;
- }
- label {
- cursor: pointer;
- }
- }
- .packages {
- @include column-count(4);
- display: block;
- margin: 1em 0 0 0;
- &:first-child {
- margin: 0;
- }
- li {
- text-transform: none;
- display: block;
- label {
- font-weight: normal;
- }
- }
- }
-}
-
-
/* IE and other horror browser workarounds */
/* basic image styling for buttons in older browsers */
diff --git a/src/app/views/templates/_addbuttons.haml b/src/app/views/templates/_addbuttons.haml
new file mode 100644
index 0000000..44cc12a
--- /dev/null
+++ b/src/app/views/templates/_addbuttons.haml
@@ -0,0 +1,3 @@
+%fieldset.clear
+ = submit_tag "Add Selected", :name => "add_selected", :class => "grid_2 alpha", :id => "do_add_software"
+ = submit_tag "Cancel", :name => "cancel_add_software", :class => "grid_2", :id => "cancel_add_software"
diff --git a/src/app/views/templates/_collections.haml b/src/app/views/templates/_collections.haml
index 1b4604b..96ddcad 100644
--- a/src/app/views/templates/_collections.haml
+++ b/src/app/views/templates/_collections.haml
@@ -1,6 +1,7 @@
-%ul.metagrouppackages
+%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}"}
= 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 1ba0820..07459dc 100644
--- a/src/app/views/templates/_metagroup_packages.haml
+++ b/src/app/views/templates/_metagroup_packages.haml
@@ -4,11 +4,13 @@
- @metagroup_packages.keys.sort.each do |group|
%li
- selected = !@metagroup_packages[group][:selected].nil?
- = check_box_tag 'groups[]', group, selected, {:disabled => selected, :id => "group_#{group}", :class => 'softwaregroups'}
- = label_tag "group_#{group}", group
+ %h5
+ = 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
+= render :partial => 'addbuttons'
diff --git a/src/app/views/templates/_searched_packages.haml b/src/app/views/templates/_searched_packages.haml
index 084bb01..4bf3898 100644
--- a/src/app/views/templates/_searched_packages.haml
+++ b/src/app/views/templates/_searched_packages.haml
@@ -1,8 +1,9 @@
%h4
= "Search Results for '#{params[:package_search]}'"
-%ul.metagrouppackages
+%ul.searchedpackages
- @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
+= render :partial => 'addbuttons'
diff --git a/src/app/views/templates/content_selection.haml b/src/app/views/templates/content_selection.haml
index 43ae9be..7697486 100644
--- a/src/app/views/templates/content_selection.haml
+++ b/src/app/views/templates/content_selection.haml
@@ -1,7 +1,7 @@
:javascript
$(document).ready(function() {
var $metagrouppackages = $('#metagrouppackages');
- $('input[name="show_metagroup"]').click(function(e) {
+ $('.metagroups input[name="show_metagroup"]').click(function(e) {
e.preventDefault();
var data = {
'show_metagroup': e.currentTarget.value,
@@ -27,22 +27,17 @@
.grid_8
%a.grid_4.omega Advanced Search
- %ul.metagroups{:class => 'actionsidebar', :style => 'float:left'}
+ %ul.metagroups{:class => 'packagegroupsidebar grid_4 alpha'}
%li
- = submit_tag 'Collections', :name => 'show_metagroup', :class => 'icon'
- %hr
+ = submit_tag 'Collections', :name => 'show_metagroup', :id => 'collections', :class => 'icon'
- @metagroups.keys.sort.each do |cat|
%li
= submit_tag cat, :name => "show_metagroup", :class => 'icon'
- #metagrouppackages
+ #metagrouppackages.grid_12.omega.gap
- if @collections
= render :partial => 'collections'
- else
- if @metagroup_packages.blank?
- No group selected
+ %span.disabled No group selected
- else
= render :partial => 'metagroup_packages'
-
- %fieldset.clearfix
- = submit_tag "Add Selected", :name => "add_selected", :class => "grid_2 alpha", :id => "do_add_software"
- = submit_tag "Cancel", :name => "cancel_add_software", :class => "grid_2", :id => "cancel_add_software"
--
1.7.2.3
13 years, 8 months
[PATCH aggregator] Package selection model
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
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
13 years, 8 months