[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