From 1fa249bbe59ccf6c717156c74d3e7425bc0ae95d Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 21 Nov 2017 23:48:58 +0200 Subject: [PATCH 1/3] Remove monkey patching #407 --- config/initializers/autolabel.rb | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 config/initializers/autolabel.rb diff --git a/config/initializers/autolabel.rb b/config/initializers/autolabel.rb deleted file mode 100644 index ad877d540..000000000 --- a/config/initializers/autolabel.rb +++ /dev/null @@ -1,30 +0,0 @@ -class ActionView::Helpers::FormBuilder - alias_method :orig_label, :label - - # add a 'required' CSS class to the field label if the field is required - # rubocop:disable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/PerceivedComplexity - def label(method, content_or_options = nil, options = nil, &block) - if content_or_options && content_or_options.class == Hash - options = content_or_options - else - content = content_or_options - end - - # rubocop:disable Style/MultilineOperationIndentation - if object.class.respond_to?(:validators_on) && - object.class.validators_on(method).map(&:class).include?(ActiveRecord::Validations::PresenceValidator) - - if options.class != Hash - options = { class: 'required' } - else - options[:class] = ((options[:class] || "") + ' required').split(' ').uniq.join(' ') - end - end - # rubocop:enable Style/MultilineOperationIndentation - - orig_label(method, content, options || {}, &block) - end - # rubocop:enable Metrics/PerceivedComplexity - # rubocop:enable Metrics/CyclomaticComplexity -end From e856e4c055d6a359b69f59f2fc570547c078048e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 21 Nov 2017 23:50:21 +0200 Subject: [PATCH 2/3] Improve form validation UI #407 --- .../stylesheets/shared/general-bootstrap.sass | 3 -- app/views/admin/admin_users/_form.haml | 39 ++++++------------- app/views/admin/api_users/_form.haml | 19 +++------ 3 files changed, 17 insertions(+), 44 deletions(-) diff --git a/app/assets/stylesheets/shared/general-bootstrap.sass b/app/assets/stylesheets/shared/general-bootstrap.sass index 20c8c3336..29a605cb7 100644 --- a/app/assets/stylesheets/shared/general-bootstrap.sass +++ b/app/assets/stylesheets/shared/general-bootstrap.sass @@ -65,6 +65,3 @@ .required:after content: "*" margin: 0 0 0 1px - -.not-required:after - content: '' diff --git a/app/views/admin/admin_users/_form.haml b/app/views/admin/admin_users/_form.haml index 512cddde8..e05f8ca10 100644 --- a/app/views/admin/admin_users/_form.haml +++ b/app/views/admin/admin_users/_form.haml @@ -1,10 +1,3 @@ -- if @admin_user.new_record? - - overwrite_required = '' - - field_required = 'required' -- else - - overwrite_required = 'not-required' # otherwise automatic one adds required - - field_required = '' - = form_for([:admin, @admin_user], html: { class: 'form-horizontal', autocomplete: 'off' }) do |f| = render 'shared/full_errors', object: @admin_user @@ -12,43 +5,41 @@ .col-md-8 .form-group .col-md-4.control-label - = f.label :username + = f.label :username, nil, class: 'required' .col-md-8 - = f.text_field(:username, class: 'form-control') + = f.text_field :username, required: true, class: 'form-control' - if @admin_user.new_record? || can?(:update, AdminUser) .form-group .col-md-4.control-label - - = f.label :password, class: overwrite_required + = f.label :password .col-md-8 - = f.text_field(:password, class: "form-control #{field_required}") + = f.text_field :password, required: f.object.new_record?, class: 'form-control' .form-group .col-md-4.control-label - = f.label :password_confirmation, class: overwrite_required + = f.label :password_confirmation .col-md-8 - = f.text_field(:password_confirmation, class: "form-control #{field_required}") + = f.text_field :password_confirmation, required: f.object.new_record?, class: 'form-control' %hr .form-group .col-md-4.control-label = f.label :identity_code .col-md-8 - = f.text_field(:identity_code, class: 'form-control required') + = f.text_field :identity_code, class: 'form-control' .form-group .col-md-4.control-label - = f.label :email + = f.label :email, nil, class: 'required' .col-md-8 - = f.email_field :email, class: 'form-control' + = f.email_field :email, required: true, class: 'form-control' .form-group .col-md-4.control-label - = f.label :country_code, t(:country) + = f.label :country_code, t(:country), class: 'required' .col-md-8 - = f.select(:country_code, - SortedCountry.all_options(f.object.country_code), {}, class: 'form-control required') + = f.select :country_code, SortedCountry.all_options(f.object.country_code), {}, required: true, class: 'form-control' %hr .form-group .col-md-4.control-label - = f.label :role, class: 'required' + = f.label :role, nil, class: 'required' .col-md-8 = select_tag 'admin_user[roles][]', options_for_select(AdminUser::ROLES.map {|x| [t(x), x] }, @@ -58,9 +49,3 @@ .row .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-warning') - -:javascript - window.addEventListener('load', function() { - $("#admin_user_password").removeAttr('required'); - $("#admin_user_password_confirmation").removeAttr('required'); - }); diff --git a/app/views/admin/api_users/_form.haml b/app/views/admin/api_users/_form.haml index 36f597d6a..eaaa13898 100644 --- a/app/views/admin/api_users/_form.haml +++ b/app/views/admin/api_users/_form.haml @@ -1,11 +1,3 @@ -- if @api_user.new_record? - - overwrite_required = '' - - field_required = 'required' -- else - - overwrite_required = 'not-required' # otherwise automatic one adds required - - field_required = '' - - = form_for([:admin, @api_user], multipart: true, html: {class: 'form-horizontal', autocomplete: 'off'}) do |f| = render 'shared/full_errors', object: @api_user @@ -14,14 +6,14 @@ .col-md-8 .form-group .col-md-4.control-label - = f.label :username + = f.label :username, nil, class: 'required' .col-md-7 - = f.text_field(:username, class: 'form-control') + = f.text_field :username, required: true, class: 'form-control' .form-group .col-md-4.control-label - = f.label :password, class: overwrite_required + = f.label :password, nil, class: 'required' .col-md-7 - = f.text_field :password, class: "form-control #{field_required}", autocomplete: 'off' + = f.text_field :password, required: true, class: 'form-control' .form-group .col-md-4.control-label @@ -43,7 +35,7 @@ .form-group .col-md-4.control-label - = f.label :role, class: 'required' + = f.label :role, nil, class: 'required' .col-md-7 = select_tag 'api_user[roles][]', options_for_select(ApiUser::ROLES.map {|x| [x, x] }, @api_user.roles.try(:first)), @@ -62,5 +54,4 @@ :javascript window.addEventListener('load', function() { Autocomplete.bindAdminRegistrarSearch(); - $("#api_user_password").removeAttr('required'); }); From 4b172e9acfd7d1325579550d98a68b3a4b7a6787 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 21 Nov 2017 23:53:55 +0200 Subject: [PATCH 3/3] Improve UI #407 --- app/views/admin/admin_users/_form.haml | 2 +- app/views/admin/api_users/_form.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/admin_users/_form.haml b/app/views/admin/admin_users/_form.haml index e05f8ca10..ddee458ba 100644 --- a/app/views/admin/admin_users/_form.haml +++ b/app/views/admin/admin_users/_form.haml @@ -7,7 +7,7 @@ .col-md-4.control-label = f.label :username, nil, class: 'required' .col-md-8 - = f.text_field :username, required: true, class: 'form-control' + = f.text_field :username, required: true, autofocus: true, class: 'form-control' - if @admin_user.new_record? || can?(:update, AdminUser) .form-group .col-md-4.control-label diff --git a/app/views/admin/api_users/_form.haml b/app/views/admin/api_users/_form.haml index eaaa13898..9a26b9fc8 100644 --- a/app/views/admin/api_users/_form.haml +++ b/app/views/admin/api_users/_form.haml @@ -8,7 +8,7 @@ .col-md-4.control-label = f.label :username, nil, class: 'required' .col-md-7 - = f.text_field :username, required: true, class: 'form-control' + = f.text_field :username, required: true, autofocus: true, class: 'form-control' .form-group .col-md-4.control-label = f.label :password, nil, class: 'required'