[PATCH conductor] BZ#790819 Add better labels to X-Deltacloud-Provider field
tsedovic at redhat.com
tsedovic at redhat.com
Wed Feb 22 17:29:20 UTC 2012
From: Tomas Sedovic <tomas at sedovic.cz>
https://bugzilla.redhat.com/show_bug.cgi?id=790819
With the javascript on, the X-Deltacloud-Provider field is now labeled
according to the selected provider type. If it's not used at all, the field is
hidden.
When the JS is off, we display a little legend below the text field to help
users figure out what to put in.
---
src/app/controllers/providers_controller.rb | 15 ++++++++++++++-
src/app/stylesheets/layout.scss | 17 +++++++++++++++++
src/app/views/providers/_form.html.haml | 24 ++++++++++++++++++++----
src/config/locales/en.yml | 13 +++++++++----
4 files changed, 60 insertions(+), 9 deletions(-)
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb
index 0819b99..eb4c7b0 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -46,6 +46,7 @@ class ProvidersController < ApplicationController
require_privilege(Privilege::CREATE, Provider)
@provider = Provider.new
@provider.url = Provider::DEFAULT_DELTACLOUD_URL
+ @provider.provider_type = ProviderType.find_by_deltacloud_driver('ec2')
@title = t("providers.new.new_provider")
end
@@ -237,7 +238,19 @@ class ProvidersController < ApplicationController
end
def load_providers_types
- @provider_types = ProviderType.where(:name => ["Mock","Amazon EC2","RHEV-M","VMware vSphere"]).collect {|provider_type| [provider_type.name,provider_type.id]}
+ available_providers = ["Mock","Amazon EC2","RHEV-M","VMware vSphere"]
+ provider_types = ProviderType.where(:name => available_providers).map do |type|
+ begin
+ label = I18n.translate!("providers.form.x_deltacloud_provider.#{type.deltacloud_driver}")
+ rescue
+ end
+
+ { :id => type.id,
+ :label => label,
+ :name => type.name }
+ end
+ @labeled_provider_types = provider_types.select {|type| type[:label]}
+ @provider_type_options = provider_types.map {|type| [type[:name], type[:id]]}
end
def load_provider_tabs
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss
index f433d4c..b067b2e 100644
--- a/src/app/stylesheets/layout.scss
+++ b/src/app/stylesheets/layout.scss
@@ -1811,6 +1811,23 @@ div.lefted.new-catalog-entry-from-image{
min-height: 32px;
}
}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+New/Edit Provider Form
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+#x-deltacloud-provider-legend {
+
+ dl {
+ margin-left: 190px;
+ }
+
+ dt {
+ margin-top: 1em;
+ font-weight: bold;
+ }
+}
+
+
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
User Card
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
diff --git a/src/app/views/providers/_form.html.haml b/src/app/views/providers/_form.html.haml
index e66f64a..e0afdb1 100644
--- a/src/app/views/providers/_form.html.haml
+++ b/src/app/views/providers/_form.html.haml
@@ -8,8 +8,24 @@
= form.label :url, t('providers.form.provider_url')
= form.text_field :url, :title => t('providers.form.provider_url'), :value => @provider.url, :class => 'long'
%p
- = form.label :provider_type, t('providers.form.provider_type')
- = form.select(:provider_type_id, @provider_types, :prompt => t('providers.form.select_type_of_provider'))
+ = form.label :provider_type_id, t('providers.form.provider_type')
+ = form.select(:provider_type_id, @provider_type_options, :prompt => t('providers.form.select_type_of_provider'))
%p
- = form.label :url, t('providers.form.x_deltacloud_provider')
- = form.text_field :deltacloud_provider, :title => t('providers.form.x_deltacloud_provider'), :value => @provider.deltacloud_provider, :class => 'long'
+ = form.label :deltacloud_provider, t('providers.form.x_deltacloud_provider.generic')
+ = form.text_field :deltacloud_provider, :title => t('providers.form.x_deltacloud_provider.generic'), :value => @provider.deltacloud_provider, :class => 'long'
+ %div#x-deltacloud-provider-legend.clearfix
+ %label= t('providers.form.x_deltacloud_provider_legend')
+ %dl
+ - @labeled_provider_types.each do |type|
+ %dt= type[:name]
+ %dd{ :class => type[:id] }= type[:label]
+:javascript
+ function updateXDeltacloudProviderLabel() {
+ var selected_id = $('#provider_provider_type_id option:selected').val();
+ var label = $('#x-deltacloud-provider-legend .' + selected_id).text();
+ $('label[for=provider_deltacloud_provider]').text(label);
+ $('#provider_deltacloud_provider').toggle(label.length !== 0);
+ }
+ $('#provider_provider_type_id').change(updateXDeltacloudProviderLabel);
+ updateXDeltacloudProviderLabel();
+ $('#x-deltacloud-provider-legend').hide();
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index b7e3057..6f34867 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -1002,10 +1002,15 @@ en:
enable_configure_providers: "To enable and configure provider, click the slide switch in the upper-right-hand corner of this window."
provider_unavailable: "The provider %{name} is currently not available."
form:
- x_deltacloud_provider: "X-Deltacloud-Provider:"
- provider_name: "Provider Name:"
- provider_url: "Provider URL:"
- provider_type: "Provider Type:"
+ x_deltacloud_provider_legend: Legend for X-Deltacloud-Provider
+ x_deltacloud_provider:
+ generic: X-Deltacloud-Provider
+ ec2: EC2 Region
+ rhevm: RHEV-M API_PROVIDER
+ vsphere: vSphere API hostname
+ provider_name: Provider Name
+ provider_url: Provider URL
+ provider_type: Provider Type
select_type_of_provider: Select type of provider
caution_alt_text: Caution
enter_correct_url_msg: Please enter a correct URL format.
--
1.7.6.5
More information about the aeolus-devel
mailing list