[PATCH conductor] BZ790830: "Disable" upload button after it has been pressed on images#show (rebased)
ifarkas at redhat.com
ifarkas at redhat.com
Wed Feb 22 09:50:16 UTC 2012
From: Imre Farkas <ifarkas at redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=790830
In some cases when a user pushes an image and the page reload happens even before
imagefactory would start the pushing operation and the Upload button displayed
incorrectly. This patch solves this issue by displaying a label for notification.
---
src/app/controllers/images_controller.rb | 3 +++
src/app/controllers/provider_images_controller.rb | 4 +++-
src/app/views/images/show.html.haml | 12 ++++++++----
src/config/locales/en.yml | 1 +
4 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/src/app/controllers/images_controller.rb b/src/app/controllers/images_controller.rb
index f37d117..0c6b350 100644
--- a/src/app/controllers/images_controller.rb
+++ b/src/app/controllers/images_controller.rb
@@ -38,6 +38,9 @@ class ImagesController < ApplicationController
def show
@image = Aeolus::Image::Warehouse::Image.find(params[:id])
@environment = PoolFamily.where('name' => @image.environment).first
+ @push_started = params[:push_started] == 'true'
+ @pushed_target_image_id = params[:pushed_target_image_id]
+
if @image.imported?
begin
# For an imported image, we only want to show the actual provider account
diff --git a/src/app/controllers/provider_images_controller.rb b/src/app/controllers/provider_images_controller.rb
index 54094dc..60fabe5 100644
--- a/src/app/controllers/provider_images_controller.rb
+++ b/src/app/controllers/provider_images_controller.rb
@@ -29,6 +29,7 @@ class ProviderImagesController < ApplicationController
begin
if @provider_image.save
flash[:notice] = t('provider_images.flash.notice.upload_start')
+ @push_started = true
else
flash[:warning] = t('provider_images.flash.warning.upload_failed')
end
@@ -36,7 +37,8 @@ class ProviderImagesController < ApplicationController
logger.error "Caught exception importing image: #{e.message}"
flash[:warning] = t('provider_images.flash.warning.upload_failed')
end
- redirect_to image_path(params[:image_id], :build => params[:build_id])
+ redirect_to image_path(params[:image_id], :build => params[:build_id], :push_started => @push_started,
+ :pushed_target_image_id => @push_started ? @provider_image.target_image_id : nil)
end
def destroy
diff --git a/src/app/views/images/show.html.haml b/src/app/views/images/show.html.haml
index 82c00f5..c462772 100644
--- a/src/app/views/images/show.html.haml
+++ b/src/app/views/images/show.html.haml
@@ -85,10 +85,14 @@
- if timg and b = @builder.find_active_push(timg.id, account.provider.name, account.credentials_hash['username'])
= label_tag b.status
- elsif timg and not pimg and @build and @build.id == @latest_build
- = button_to t('.push'), image_provider_images_path(@image.id, :build_id => @build.id, :target_image_id => timg.id, :account_id => account.id), :method => :post, :class => 'upload_image'
- - failed_push_count = @builder.failed_push_count(timg.id, account.provider.name, account.credentials_hash['username'])
- - if failed_push_count > 0
- = t('images.show.failed_push_attempts', :count => failed_push_count )
+ - if @push_started && @pushed_target_image_id == timg.id
+ .light
+ = t('images.show.push_started')
+ - else
+ = button_to t('.upload'), image_provider_images_path(@image.id, :build_id => @build.id, :target_image_id => timg.id, :account_id => account.id), :method => :post, :class => 'upload_image'
+ - failed_push_count = @builder.failed_push_count(timg.id, account.provider.name, account.credentials_hash['username'])
+ - if failed_push_count > 0
+ = t('images.show.failed_push_attempts', :count => failed_push_count)
- elsif pimg
= button_to "", image_provider_image_path(@image.id, pimg.id), :method => :delete, :class => 'delete_image'
- else
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index addb68e..fdbb2aa 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -773,6 +773,7 @@ en:
failed_push_attempts:
one: '1 failed push attempt'
other: '%{count} failed push attempts'
+ push_started: 'Push is about to start'
flash:
notice:
deleted: Image Deleted
--
1.7.6.5
More information about the aeolus-devel
mailing list