Skip to content

Commit

Permalink
Merge pull request #6494 from Ana06/distribution_page
Browse files Browse the repository at this point in the history
Migrate Add repository from distribution page to Bootstrap
  • Loading branch information
vpereira committed Dec 7, 2018
2 parents bdb27af + e98224f commit 499617c
Show file tree
Hide file tree
Showing 8 changed files with 87 additions and 7 deletions.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions src/api/app/assets/javascripts/webui2/repositories.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,16 @@ function setSpinnersForFlags() { // jshint ignore:line
icon.next().removeClass('d-none');
});
}

function setRepoCheckbox() { // jshint ignore:line
$('.repocheckbox').click(function() {
var id = $(this).attr('id');
var $form;
if($(this).is(':checked')) {
$form = $('#' + id + '_create');
} else {
$form = $('#' + id + '_destroy');
}
$form.submit();
});
}
6 changes: 6 additions & 0 deletions src/api/app/controllers/webui/repositories_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ def distributions
@distributions[dis['vendor']] << dis
end

switch_to_webui2

return unless @distributions.empty?
redirect_to(action: 'new', project: @project) && return unless User.current.is_admin?
redirect_to({ controller: 'configuration', action: 'interconnect' },
Expand Down Expand Up @@ -76,6 +78,8 @@ def create
format.js
end
end

switch_to_webui2
end

# POST project/update_target/:project
Expand Down Expand Up @@ -117,6 +121,8 @@ def destroy
format.js
end
end

switch_to_webui2
end

# GET project/repository_state/:project/:repository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@
= render partial: 'webui/package/breadcrumb_items'
- else
= render partial: 'webui/project/breadcrumb_items'

- if current_page?(repositories_path)
%li.breadcrumb-item.active{ 'aria-current' => 'page' }
Repositories
- elsif defined?(@repository) && current_page?(project_repository_state_path)
- else
%li.breadcrumb-item
= link_to 'Repositories', repositories_path
%li.breadcrumb-item.active{ 'aria-current' => 'page' }
Repository State
- if defined?(@repository) && current_page?(project_repository_state_path)
Repository State
- elsif current_page?(repositories_distributions_path)
Add from a Distribution

1 change: 1 addition & 0 deletions src/api/app/views/webui2/webui/repositories/create.js.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$('#flash').html("<%= escape_javascript(render(layout: false, partial: 'layouts/webui2/flash', object: flash)) %>");
1 change: 1 addition & 0 deletions src/api/app/views/webui2/webui/repositories/destroy.js.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$('#flash').html("<%= escape_javascript(render(layout: false, partial: 'layouts/webui2/flash', object: flash)) %>");
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
- @pagetitle = "Add Repository to #{@project}"
- @metarobots = 'noindex'

.card.mb-3
= render partial: 'webui/project/tabs', locals: { project: @project }
.card-body
%h3.mb-3 Add Repositories to #{@project}
- @distributions.each do |vendor, list|
%h6.pt-3
- if resolve_asset_path("icons/distributions-#{vendor.downcase}")
= image_tag("icons/distributions-#{vendor.downcase}")
#{vendor} distributions
.form-group.pl-3
- list.each do |distribution|
- selected = @project.has_distribution(distribution['project'], distribution['repository'])
.custom-control.custom-checkbox.custom-control-inline
= check_box_tag 'distributions[]', distribution['reponame'], selected,
id: "repo_#{replace_jquery_meta_characters(distribution['reponame'])}",
class: 'repocheckbox custom-control-input'
= label_tag :distribution_name, for: "repo_#{replace_jquery_meta_characters(distribution['reponame'])}", class: 'custom-control-label' do
= distribution['name']
- list.each do |distribution|
= form_tag({ action: :create, project: @project }, remote: true, class: 'd-none',
id: "repo_#{replace_jquery_meta_characters(distribution['reponame'])}_create") do
= hidden_field_tag 'repository', distribution['reponame']
= hidden_field_tag 'target_project', distribution['project']
= hidden_field_tag 'target_repo', distribution['repository']
- distribution['architectures'].each do |arch|
= hidden_field_tag 'architectures[]', arch

= form_tag({ action: :destroy }, remote: true, class: 'd-none',
id: "repo_#{replace_jquery_meta_characters(distribution['reponame'])}_destroy") do
= hidden_field_tag 'project', @project.name
= hidden_field_tag 'target', distribution['reponame']
%h6
= image_tag('distributions/kiwi.png', width: 40)
Kiwi image builds
.form-group.pl-3
- selected = @project.repositories.where(name: 'images').any?
.custom-control.custom-checkbox.custom-control-inline
= check_box_tag 'images', 'true', selected, id: 'repo_images', class: 'repocheckbox custom-control-input'
%label.custom-control-label{ for: 'repo_images' }
KIWI image build
%i (to be used for appliance and product builds with kiwi)
= form_tag({ action: :create_image_repository, project: @project }, remote: true, class: 'd-none', id: 'repo_images_create') do
= hidden_field_tag :repository, 'images'

= form_tag({ action: :destroy }, remote: true, class: 'd-none', id: 'repo_images_destroy') do
= hidden_field_tag :project, @project.name
= hidden_field_tag :target, 'images'

= content_for :ready_function do
setRepoCheckbox();

10 changes: 5 additions & 5 deletions src/api/spec/features/webui/repositories_spec.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
require 'browser_helper'

RSpec.feature 'Repositories', type: :feature, js: true do
let!(:user) { create(:confirmed_user) }
let!(:project) { create(:project) }
let(:user) { create(:confirmed_user) }
let(:project) { create(:project) }
let!(:relationship) { create(:relationship_project_user, project: project, user: user) }

let!(:my_project) { create(:project, name: 'MyProject') }
let(:my_project) { create(:project, name: 'MyProject') }
let!(:repository) { create(:repository, name: 'standard', project: my_project) }
let!(:distribution) { create(:distribution, project: 'MyProject', repository: 'standard') }
let!(:distribution) { create(:distribution, project: my_project, repository: 'standard') }

scenario 'add' do
login user
visit "/project/add_repository_from_default_list/#{project.name}"

check "repo_#{distribution.reponame}"
find("label[for='repo_#{distribution.reponame}']").click

expect(page).to have_text("Successfully added repository '#{distribution.reponame}'")
end
Expand Down

0 comments on commit 499617c

Please sign in to comment.