From 612d226588d6d470a0e5a847fc5a4639adf0e60f Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Thu, 12 Mar 2015 17:57:15 +0100 Subject: [PATCH] improvements for togglable form inputs --- app/assets/javascripts/forms.js | 19 ++++++++++++------- .../execution_environments/_form.html.slim | 4 ++-- app/views/exercises/_code_field.html.slim | 4 ++-- config/locales/de.yml | 1 + config/locales/en.yml | 1 + 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/forms.js b/app/assets/javascripts/forms.js index 2810823f..c2930ec4 100644 --- a/app/assets/javascripts/forms.js +++ b/app/assets/javascripts/forms.js @@ -7,16 +7,21 @@ $(function() { $('form').on('click', '.toggle-input', function(event) { event.preventDefault(); + if (!$(this).hasClass('disabled')) { - $(this).hide(); var parent = $(this).parents('.form-group'); - var original_input = parent.find('input:not(disabled), select:not(disabled), textarea:not(disabled), .chosen-container'); - original_input.attr('disabled', true); - original_input.hide(); + var original_input = parent.find('.original-input'); var alternative_input = parent.find('.alternative-input'); - alternative_input.attr('disabled', false); - alternative_input.show(); - alternative_input.trigger('click'); + + if (alternative_input.attr('disabled')) { + $(this).text($(this).data('text-toggled')); + original_input.attr('disabled', true).hide(); + alternative_input.attr('disabled', false).show(); + } else { + $(this).text($(this).data('text-initial')); + alternative_input.attr('disabled', true).hide(); + original_input.attr('disabled', false).show(); + } } }); diff --git a/app/views/execution_environments/_form.html.slim b/app/views/execution_environments/_form.html.slim index 8c17343b..dc4a759d 100644 --- a/app/views/execution_environments/_form.html.slim +++ b/app/views/execution_environments/_form.html.slim @@ -9,8 +9,8 @@ .form-group = f.label(:docker_image) |   - a.toggle-input href='#' = t('shared.new') - = f.select(:docker_image, @docker_images, {}, class: 'form-control') + a.toggle-input data={text_initial: t('shared.new'), text_toggled: t('shared.back')} href='#' = t('shared.new') + .original-input = f.select(:docker_image, @docker_images, {}, class: 'form-control') = f.text_field(:docker_image, class: 'alternative-input form-control', disabled: true) .help-block == t('.hints.docker_image') .form-group diff --git a/app/views/exercises/_code_field.html.slim b/app/views/exercises/_code_field.html.slim index 47410bc8..3ad55f16 100644 --- a/app/views/exercises/_code_field.html.slim +++ b/app/views/exercises/_code_field.html.slim @@ -1,6 +1,6 @@ .form-group class="form-group-#{attribute.to_s.gsub('_', '-')}" = form.label(attribute, label) |   - a.toggle-input href='#' = t('shared.upload_file') - = form.text_area(attribute, class: 'code-field form-control', rows: 16) + a.toggle-input data={text_initial: t('shared.upload_file'), text_toggled: t('shared.back')} href='#' = t('shared.upload_file') + = form.text_area(attribute, class: 'code-field form-control original-input', rows: 16) = form.file_field(attribute, class: 'alternative-input form-control', disabled: true) diff --git a/config/locales/de.yml b/config/locales/de.yml index b253e3a0..da4417b9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -283,6 +283,7 @@ de: administration: Administration already_signed_in: Sie sind bereits angemeldet. apply_filters: Filter anwenden + back: Zurück batch_update: Batch-Update confirm_destroy: Sind Sie sicher? create: '%{model} erstellen' diff --git a/config/locales/en.yml b/config/locales/en.yml index 0c919f79..6f1363b3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -283,6 +283,7 @@ en: administration: Administration already_signed_in: You are already signed in. apply_filters: Apply filters + back: Back batch_update: Batch Update confirm_destroy: Are you sure? create: 'Create %{model}'