[PATCH conductor] BZ#790819 Add better labels to X-Deltacloud-Provider field
Jozef Zigmund
jzigmund at redhat.com
Thu Feb 23 16:28:07 UTC 2012
On Wednesday 22 February 2012 18:29:20 tsedovic at redhat.com wrote:
> 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_dri
> ver}") + 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.
ACK.
More information about the aeolus-devel
mailing list