diff --git a/Gemfile b/Gemfile index 3b45a687c..eae6e3a5d 100644 --- a/Gemfile +++ b/Gemfile @@ -30,10 +30,12 @@ gem 'turbolinks', '~> 2.5.3' # faster page load gem 'jquery-rails', '~> 4.0.3' # jquery gem 'selectize-rails', '~> 0.11.2' # include selectize.js for select gem 'therubyracer', platforms: :ruby +gem 'jquery-validation-rails', '~> 1.13.1' # validate on client side # view helpers gem 'kaminari', '~> 0.16.3' # pagination gem 'nprogress-rails', '~> 0.1.6.5' # visual loader +gem 'html5_validators', '~> 1.1.3' # model requements now automatically on html form # rights gem 'devise', '~> 3.4.1' # authenitcation diff --git a/Gemfile.lock b/Gemfile.lock index 74de822f1..5b5c2588d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -220,6 +220,7 @@ GEM hike (1.2.3) hitimes (1.2.2) hpricot (0.8.6) + html5_validators (1.1.3) httpclient (2.6.0.1) httpi (2.4.0) rack @@ -234,6 +235,9 @@ GEM rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, < 2.0) + jquery-validation-rails (1.13.1) + railties (>= 3.2, < 5.0) + thor (~> 0.14) json (1.8.2) kaminari (0.16.3) actionpack (>= 3.0.0) @@ -510,10 +514,12 @@ DEPENDENCIES haml-rails (~> 0.9.0) hashie-forbidden_attributes (~> 0.1.1) html2haml! + html5_validators (~> 1.1.3) isikukood iso8601 (~> 0.8.2) jbuilder (~> 2.2.6) jquery-rails (~> 4.0.3) + jquery-validation-rails (~> 1.13.1) kaminari (~> 0.16.3) launchy (~> 2.4.3) mina (~> 0.3.1) diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/admin-manifest.coffee similarity index 68% rename from app/assets/javascripts/application.js.coffee rename to app/assets/javascripts/admin-manifest.coffee index 9cb89db36..b1f8dddbe 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -5,10 +5,12 @@ #= require nprogress #= require nprogress-turbolinks #= require typeahead.bundle.min -#= require autocomplete +#= require admin/autocomplete #= require jquery.nested_attributes #= require selectize -#= require app +#= require shared/jquery.validate.bootstrap +#= require shared/general +#= require admin/application NProgress.configure showSpinner: false diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee new file mode 100644 index 000000000..89c4a752d --- /dev/null +++ b/app/assets/javascripts/admin/application.coffee @@ -0,0 +1,12 @@ +ready = -> + $('.selectize').selectize({ + allowEmptyOption: true + }); + + # client side validate all forms + $('form').each -> + $(this).validate() + + +$(document).ready(ready) +$(document).on('page:load', ready) diff --git a/app/assets/javascripts/autocomplete.js.coffee b/app/assets/javascripts/admin/autocomplete.js.coffee similarity index 100% rename from app/assets/javascripts/autocomplete.js.coffee rename to app/assets/javascripts/admin/autocomplete.js.coffee diff --git a/app/assets/javascripts/registrar-manifest.coffee b/app/assets/javascripts/registrar-manifest.coffee new file mode 100644 index 000000000..4d8d4ed63 --- /dev/null +++ b/app/assets/javascripts/registrar-manifest.coffee @@ -0,0 +1,10 @@ +#= require jquery +#= require jquery_ujs +#= require jquery.validate +#= require jquery.validate.additional-methods +#= require turbolinks +#= require bootstrap-sprockets +#= require jquery.nested_attributes +#= require shared/jquery.validate.bootstrap +#= require shared/general +#= require registrar/application diff --git a/app/assets/javascripts/depp/application.coffee b/app/assets/javascripts/registrar/application.coffee similarity index 86% rename from app/assets/javascripts/depp/application.coffee rename to app/assets/javascripts/registrar/application.coffee index 1c8eddbdd..91a5ce7fa 100644 --- a/app/assets/javascripts/depp/application.coffee +++ b/app/assets/javascripts/registrar/application.coffee @@ -1,10 +1,8 @@ -#= require jquery -#= require jquery_ujs -#= require turbolinks -#= require bootstrap-sprockets -#= require jquery.nested_attributes - $(document).on 'ready page:load', -> + # client side validate all forms + $('form').each -> + $(this).validate() + $('.js-contact-form').on 'restoreDefault', (e) -> form = $(e.target) form.find('.js-ident-tip').hide() diff --git a/app/assets/javascripts/app.js.coffee b/app/assets/javascripts/shared/general.coffee similarity index 72% rename from app/assets/javascripts/app.js.coffee rename to app/assets/javascripts/shared/general.coffee index ed5be014f..f1069f029 100644 --- a/app/assets/javascripts/app.js.coffee +++ b/app/assets/javascripts/shared/general.coffee @@ -9,11 +9,3 @@ $('#flash').find('div').addClass('bg-danger') $('#flash').find('div').html(msg) $('#flash').show() - -ready = -> - $('.selectize').selectize({ - allowEmptyOption: true - }); - -$(document).ready(ready) -$(document).on('page:load', ready) diff --git a/app/assets/javascripts/shared/jquery.validate.bootstrap.coffee b/app/assets/javascripts/shared/jquery.validate.bootstrap.coffee new file mode 100644 index 000000000..78960bb9a --- /dev/null +++ b/app/assets/javascripts/shared/jquery.validate.bootstrap.coffee @@ -0,0 +1,20 @@ +#= require jquery.validate +#= require jquery.validate.additional-methods + +# override jquery validate plugin defaults +$.validator.setDefaults + highlight: (element) -> + $(element).closest('.form-group').addClass 'has-error' + return + unhighlight: (element) -> + $(element).closest('.form-group').removeClass 'has-error' + return + errorElement: 'span' + errorClass: 'help-block' + errorPlacement: (error, element) -> + if element.parent('.input-group').length + error.insertAfter element.parent() + else + error.insertAfter element + return + diff --git a/app/assets/stylesheets/admin-manifest.sass b/app/assets/stylesheets/admin-manifest.sass index 07ca92aaa..c906f8c70 100644 --- a/app/assets/stylesheets/admin-manifest.sass +++ b/app/assets/stylesheets/admin-manifest.sass @@ -1,4 +1,4 @@ -//= require 'shared/general-bootstrap' +//= require 'shared/general-manifest' //= require 'admin/admin-bootstrap' @import shared/fonts @import shared/general diff --git a/app/assets/stylesheets/admin/admin-bootstrap.sass b/app/assets/stylesheets/admin/admin-bootstrap.sass index c0e9402cd..dc1ec390b 100644 --- a/app/assets/stylesheets/admin/admin-bootstrap.sass +++ b/app/assets/stylesheets/admin/admin-bootstrap.sass @@ -9,5 +9,10 @@ $container-large-desktop: 860px $font-size-h1: 26px $navbar-default-link-active-color: #333 -@import "bootstrap-sprockets" -@import "bootstrap" +@import 'bootstrap-sprockets' +@import 'bootstrap' +@import 'shared/general-bootstrap' + +// Support rails error element +.field_with_errors + @extend .has-error diff --git a/app/assets/stylesheets/admin/admin.sass b/app/assets/stylesheets/admin/admin.sass index 16fa27c51..0d11a771c 100644 --- a/app/assets/stylesheets/admin/admin.sass +++ b/app/assets/stylesheets/admin/admin.sass @@ -4,6 +4,13 @@ html -webkit-text-size-adjust: 100% -ms-text-size-adjust: 100% +body > .container + background: #fff + padding: 16px 30px 30px 30px + margin-top: 0px + border-radius: 3px + min-height: 600px + h1 font-size: 26px margin-bottom: 16px @@ -98,15 +105,6 @@ sub padding-right: 20px border-top: 0px -.container - border-radius: 3px - -body > .container - background: #F8F8F8 - margin-bottom: 50px - min-height: 600px - padding: 30px 30px 56px 30px - .container.version background: transparent margin-top: -116px @@ -155,21 +153,6 @@ h4 margin-bottom: 16px float: right -.navbar-brand - line-height: 12px - padding-top: 20px - padding-bottom: 5px - -.navbar-brand small - display: block - font-size: 10px - -.footer - color: #777 - padding-top: 70px - padding-bottom: 10px - font-size: 10px - .domify td vertical-align: middle !important @@ -228,6 +211,9 @@ body.login display: block font-size: 10px +.navbar + margin-bottom: 0 + .footer color: #777 padding-top: 15px @@ -259,7 +245,9 @@ body.login input margin-bottom: 10px -// fix label position for medium screen -@media (min-width: 768px) and (max-width: 991px) - .form-horizontal .control-label - text-align: left +@media (min-width: 860px) + .control-label + text-align: right + margin-bottom: 0 + padding-top: 7px + diff --git a/app/assets/stylesheets/registrar-manifest.sass b/app/assets/stylesheets/registrar-manifest.sass index 780ab4e89..8c758228b 100644 --- a/app/assets/stylesheets/registrar-manifest.sass +++ b/app/assets/stylesheets/registrar-manifest.sass @@ -1,4 +1,4 @@ -//= require 'shared/general-bootstrap' +//= require 'shared/general-manifest' //= require 'registrar/registrar-bootstrap' @import shared/fonts @import shared/general diff --git a/app/assets/stylesheets/registrar/registrar-bootstrap.sass b/app/assets/stylesheets/registrar/registrar-bootstrap.sass index 205141701..32eb69f00 100644 --- a/app/assets/stylesheets/registrar/registrar-bootstrap.sass +++ b/app/assets/stylesheets/registrar/registrar-bootstrap.sass @@ -9,5 +9,10 @@ $font-family-serif: 'EtelkaLightProBold', Georgia, "Times New Roman", Times, ser $font-size-h1: 26px $navbar-default-link-active-color: #333 -@import "bootstrap-sprockets" -@import "bootstrap" +@import 'bootstrap-sprockets' +@import 'bootstrap' +@import 'shared/general-bootstrap' + +// Support rails error element +.field_with_errors + @extend .has-error diff --git a/app/assets/stylesheets/registrar/registrar.sass b/app/assets/stylesheets/registrar/registrar.sass index be1c4b937..9f046237b 100644 --- a/app/assets/stylesheets/registrar/registrar.sass +++ b/app/assets/stylesheets/registrar/registrar.sass @@ -13,9 +13,10 @@ body > .container h1, h2, h3, h4 margin-bottom: 0px !important -hr - margin-top: 10px !important - margin-bottom: 10px !important +// Commented out, default 20px is needed on forms +// hr + // margin-top: 10px !important + // margin-bottom: 10px !important .navbar li font-weight: bold diff --git a/app/assets/stylesheets/shared/general-bootstrap.sass b/app/assets/stylesheets/shared/general-bootstrap.sass index 4928ada5e..29a605cb7 100644 --- a/app/assets/stylesheets/shared/general-bootstrap.sass +++ b/app/assets/stylesheets/shared/general-bootstrap.sass @@ -62,3 +62,6 @@ .text-justify-lg text-align: justify +.required:after + content: "*" + margin: 0 0 0 1px diff --git a/app/assets/stylesheets/shared/general-manifest.sass b/app/assets/stylesheets/shared/general-manifest.sass new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/stylesheets/shared/general.sass b/app/assets/stylesheets/shared/general.sass index 40e1cdff2..e9c0df783 100644 --- a/app/assets/stylesheets/shared/general.sass +++ b/app/assets/stylesheets/shared/general.sass @@ -36,3 +36,15 @@ box-sizing: border-box padding: 10px font-size: 16px + +.errors + color: #A94442 + +// vertical allign with other fields +.typeahead + margin-left: 5px + +// fix medium screen size label position +@media (min-width: 768px) and (max-width: 991px) + .control-label + text-align: left !important diff --git a/app/models/admin_user.rb b/app/models/admin_user.rb index c6a5fe1fb..a5dfc6f91 100644 --- a/app/models/admin_user.rb +++ b/app/models/admin_user.rb @@ -1,14 +1,10 @@ class AdminUser < User - # TODO: Foreign user will get email with activation link,email,temp-password. - # After activisation, system should require to change temp password. - # TODO: Estonian id validation - - validates :username, :password, :country_code, presence: true + validates :username, :password, :country_code, :roles, presence: true validates :identity_code, uniqueness: true, allow_blank: true validates :identity_code, presence: true, if: -> { country_code == 'EE' } - validates :email, presence: true, if: -> { country_code != 'EE' } + validates :email, presence: true - validate :validate_identity_code + validate :validate_identity_code, if: -> { country_code == 'EE' } belongs_to :country_deprecated, foreign_key: :country_id ROLES = %w(user customer_service admin) diff --git a/app/models/concerns/disable_html5_validation.rb b/app/models/concerns/disable_html5_validation.rb new file mode 100644 index 000000000..0c1c90eb5 --- /dev/null +++ b/app/models/concerns/disable_html5_validation.rb @@ -0,0 +1,9 @@ +module DisableHtml5Validation + extend ActiveSupport::Concern + + class_methods do + def auto_html5_validation + false + end + end +end diff --git a/app/models/deposit.rb b/app/models/deposit.rb index 33c6502aa..18cb8e05d 100644 --- a/app/models/deposit.rb +++ b/app/models/deposit.rb @@ -2,6 +2,7 @@ class Deposit include ActiveModel::Validations include ActiveModel::Conversion extend ActiveModel::Naming + include DisableHtml5Validation attr_accessor :amount, :description, :registrar diff --git a/app/models/depp/contact.rb b/app/models/depp/contact.rb index 9ec85a7b1..3c1a62974 100644 --- a/app/models/depp/contact.rb +++ b/app/models/depp/contact.rb @@ -1,6 +1,7 @@ module Depp class Contact include ActiveModel::Model + include DisableHtml5Validation attr_accessor :id, :name, :email, :phone, :org_name, :ident, :ident_type, :ident_country_code, diff --git a/app/models/depp/domain.rb b/app/models/depp/domain.rb index 5474650c9..857f74fb2 100644 --- a/app/models/depp/domain.rb +++ b/app/models/depp/domain.rb @@ -2,6 +2,7 @@ module Depp class Domain include ActiveModel::Conversion extend ActiveModel::Naming + include DisableHtml5Validation attr_accessor :name, :current_user, :epp_xml diff --git a/app/models/depp/keyrelay.rb b/app/models/depp/keyrelay.rb index 0d08d4add..9476014f0 100644 --- a/app/models/depp/keyrelay.rb +++ b/app/models/depp/keyrelay.rb @@ -1,5 +1,6 @@ module Depp class Keyrelay + include DisableHtml5Validation attr_accessor :current_user, :epp_xml def initialize(args = {}) diff --git a/app/models/depp/user.rb b/app/models/depp/user.rb index 324c574c2..16eacb25b 100644 --- a/app/models/depp/user.rb +++ b/app/models/depp/user.rb @@ -3,6 +3,7 @@ module Depp include ActiveModel::Validations include ActiveModel::Conversion extend ActiveModel::Naming + include DisableHtml5Validation attr_accessor :tag, :password, :pki diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 24a827d0d..47724be6c 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -14,7 +14,7 @@ class Registrar < ActiveRecord::Base validates :name, :reg_no, :reference_no, uniqueness: true validate :set_code, if: :new_record? - before_create :generate_iso_11649_reference_no + before_validation :generate_iso_11649_reference_no def generate_iso_11649_reference_no return if reference_no.present? diff --git a/app/views/admin/admin_users/_form.haml b/app/views/admin/admin_users/_form.haml index 9bf35e761..84f55285a 100644 --- a/app/views/admin/admin_users/_form.haml +++ b/app/views/admin/admin_users/_form.haml @@ -1,35 +1,43 @@ -= form_for([:admin, @admin_user]) do |f| - - if @admin_user.errors.any? - - @admin_user.errors.each do |attr, err| - = err - %br - - if @admin_user.errors.any? - %hr += form_for([:admin, @admin_user], html: { class: 'form-horizontal' }) do |f| + = render 'shared/full_errors', object: @admin_user .row - .col-md-6 + .col-md-8 .form-group - = f.label :username - = f.text_field(:username, class: 'form-control') + .col-md-4.control-label + = f.label :username + .col-md-8 + = f.text_field(:username, class: 'form-control') .form-group - = f.label :password - = f.text_field(:password, class: 'form-control') + .col-md-4.control-label + = f.label :password + .col-md-8 + = f.text_field(:password, class: 'form-control') + %hr .form-group - = f.label :country_code - = f.text_field :country_code, class: 'form-control' + .col-md-4.control-label + = f.label :identity_code + .col-md-8 + = f.text_field(:identity_code, class: 'form-control') .form-group - = f.label :identity_code - = f.text_field(:identity_code, class: 'form-control') - - .col-md-6 + .col-md-4.control-label + = f.label :email + .col-md-8 + = f.text_field(:email, class: 'form-control', email: true) .form-group - = f.label :email - = f.text_field(:email, class: 'form-control') + .col-md-4.control-label + = f.label :country_code, t(:country) + .col-md-8 + = f.select(:country_code, + SortedCountry.all_options(f.object.country_code), {}, class: 'form-control') + %hr .form-group - = f.label :role - = select_tag 'admin_user[roles][]', options_for_select(AdminUser::ROLES.map {|x| [t(x), x] }, @admin_user.roles.try(:first)), class: 'form-control selectize' + .col-md-4.control-label + = f.label :role + .col-md-8 + = select_tag 'admin_user[roles][]', options_for_select(AdminUser::ROLES.map {|x| [t(x), x] }, @admin_user.roles.try(:first)), class: 'form-control selectize' %hr .row - .col-md-12.text-right - = button_tag(t('save'), class: 'btn btn-primary') + .col-md-8.text-right + = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/api_users/_form.haml b/app/views/admin/api_users/_form.haml index 9d1a635a5..dd6fffe8c 100644 --- a/app/views/admin/api_users/_form.haml +++ b/app/views/admin/api_users/_form.haml @@ -1,38 +1,42 @@ -= form_for([:admin, @api_user], multipart: true) do |f| - - if @api_user.errors.any? - - @api_user.errors.each do |attr, err| - = err - %br - - if @api_user.errors.any? - %hr += form_for([:admin, @api_user], multipart: true, html: {class: 'form-horizontal'}) do |f| + = render 'shared/full_errors', object: @api_user .row - .col-md-12 + .col-md-8 .form-group - = f.label :username - = f.text_field(:username, class: 'form-control') + .col-md-4.control-label + = f.label :username + .col-md-7 + = f.text_field(:username, class: 'form-control') .form-group - = f.label :password - = f.text_field(:password, class: 'form-control') + .col-md-4.control-label + = f.label :password + .col-md-7 + = f.text_field(:password, class: 'form-control') .form-group - = f.label :identity_code - = f.text_field(:identity_code, class: 'form-control') + .col-md-4.control-label + = f.label :identity_code + .col-md-7 + = f.text_field(:identity_code, class: 'form-control') .form-group .form-group.has-feedback.js-typeahead-container - = f.label :registrar_typeahead, t('registrar') - = f.text_field(:registrar_typeahead, class: 'form-control js-registrar-typeahead', placeholder: t('registrar'), autocomplete: 'off') - %span.glyphicon.glyphicon-ok.form-control-feedback.js-typeahead-ok.hidden - %span.glyphicon.glyphicon-remove.form-control-feedback.js-typeahead-remove - = f.hidden_field(:registrar_id, class: 'js-registrar-id') - .form-group - .checkbox - %label{for: 'api_user_active'} - = f.check_box(:active) - = t('active') + .col-md-4.control-label + = f.label :registrar_typeahead, t(:registrar), class: 'required' + .col-md-7 + = f.text_field(:registrar_typeahead, + class: 'form-control js-registrar-typeahead typeahead required', + placeholder: t(:registrar), autocomplete: 'off') + %span.glyphicon.glyphicon-ok.form-control-feedback.js-typeahead-ok.hidden + %span.glyphicon.glyphicon-remove.form-control-feedback.js-typeahead-remove + = f.hidden_field(:registrar_id, class: 'js-registrar-id') + .checkbox + %label{for: 'api_user_active'} + = f.check_box(:active) + = t(:active) %hr .row - .col-md-12.text-right - = button_tag(t('save'), class: 'btn btn-primary') + .col-md-8.text-right + = button_tag(t(:save), class: 'btn btn-primary') :coffee Autocomplete.bindAdminRegistrarSearch(); diff --git a/app/views/admin/bank_statements/new.haml b/app/views/admin/bank_statements/new.haml index 0957b2dc2..265e99e7e 100644 --- a/app/views/admin/bank_statements/new.haml +++ b/app/views/admin/bank_statements/new.haml @@ -6,11 +6,13 @@ = render 'shared/full_errors', object: @bank_statement .row - .col-md-12.text-left + .col-md-8 .form-group - = f.label :th6_file - = f.file_field :th6_file + .col-md-4.control-label + = f.label :th6_file + .col-md-8 + = f.file_field :th6_file %hr .row - .col-md-12.text-right + .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/certificates/new.haml b/app/views/admin/certificates/new.haml index 5e7194cb2..fce193413 100644 --- a/app/views/admin/certificates/new.haml +++ b/app/views/admin/certificates/new.haml @@ -1,20 +1,17 @@ = render 'shared/title', name: t(:upload_csr) = form_for([:admin, @api_user, @certificate], multipart: true) do |f| - - if @certificate.errors.any? - - @certificate.errors.each do |attr, err| - = err - %br - - if @certificate.errors.any? - %hr + = render 'shared/full_errors', object: f.object .row - .col-md-12.text-left + .col-md-8 .form-group - = f.label :csr, t(:certificate_signing_req) - = f.file_field :csr + .col-md-4.control-label= f.label :username + = f.label :csr, t(:certificate_signing_req) + .col-md-8 + = f.file_field :csr %hr .row - .col-md-12.text-right + .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/registrars/_form.haml b/app/views/admin/registrars/_form.haml index 3a1a275b9..b54eb01e5 100644 --- a/app/views/admin/registrars/_form.haml +++ b/app/views/admin/registrars/_form.haml @@ -1,10 +1,5 @@ -= form_for([:admin, @registrar]) do |f| - - if @registrar.errors.any? - - @registrar.errors.full_messages.each do |err| - = err - %br - - if @registrar.errors.any? - %hr += form_for([:admin, @registrar], html: {class: 'form-horizontal'}) do |f| + = render 'shared/full_errors', object: @registrar .row .col-md-8 @@ -13,48 +8,68 @@ .pull-left= t(:general) .panel-body .form-group - .col-md-3.control-label + .col-md-4.control-label = f.label :name .col-md-7 = f.text_field(:name, class: 'form-control') - .form-group - = f.label :reg_no - = f.text_field(:reg_no, class: 'form-control') - / EIS does not want VAT - / .form-group - / = f.label :vat_no - / = f.text_field(:vat_no, class: 'form-control') - .form-group - = f.label :email - = f.text_field(:email, class: 'form-control') - .form-group - = f.label :phone - = f.text_field(:phone, class: 'form-control') - .form-group - = f.label :billing_email - = f.text_field(:billing_email, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :reg_no + .col-md-7 + = f.text_field(:reg_no, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :vat_no + .col-md-7 + = f.text_field(:vat_no, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :phone + .col-md-7 + = f.text_field(:phone, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :email + .col-md-7 + = f.text_field(:email, class: 'form-control', email: true) + .form-group + .col-md-4.control-label + = f.label :billing_email + .col-md-7 + = f.text_field(:billing_email, class: 'form-control', email: true) + .row .col-md-8 - .form-group - = f.label :street - = f.text_field(:street, class: 'form-control') - .form-group - = f.label :city - = f.text_field(:city, class: 'form-control') - .form-group - = f.label :state - = f.text_field(:state, class: 'form-control') - .form-group - = f.label :zip - = f.text_field(:zip, class: 'form-control') - .form-group - = f.label :country_code - = f.text_field :country_code, class: 'form-control' - / EIS does not want Billing Address - / .form-group - / = f.label :billing_address - / = f.text_field(:billing_address, class: 'form-control') - / %p.help-block= t('address_help') + .panel.panel-default + .panel-heading.clearfix + .pull-left= t(:address) + .panel-body + .form-group + .col-md-4.control-label + = f.label :street + .col-md-7 + = f.text_field(:street, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :city + .col-md-7 + = f.text_field(:city, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :state + .col-md-7 + = f.text_field(:state, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :zip + .col-md-7 + = f.text_field(:zip, class: 'form-control') + .form-group + .col-md-4.control-label + = f.label :country_code, t(:country) + .col-md-7 + = f.select(:country_code, + SortedCountry.all_options(f.object.country_code), {}, class: 'form-control') %hr .row .col-md-8.text-right diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml index 1d169851f..c52bf3783 100644 --- a/app/views/admin/settings/index.haml +++ b/app/views/admin/settings/index.haml @@ -2,12 +2,12 @@ = form_tag [:admin, :settings] do .row - .col-md-12 + .col-md-8 .table-responsive %table.table.table-hover.table-bordered.table-condensed %thead %tr - %th{class: 'col-xs-9'} + %th{class: 'col-xs-4'} = t(:setting) %th{class: 'col-xs-2'} = t(:value) @@ -21,6 +21,7 @@ = check_box_tag("[settings][#{x.var}]", true, x.value) - else %td= text_field_tag("[settings][#{x.var}]", x.value) + %hr .row - .col-md-12.text-right + .col-md-8.text-right %button.btn.btn-primary=t(:save) diff --git a/app/views/admin/zonefile_settings/edit.haml b/app/views/admin/zonefile_settings/edit.haml index df0caeeca..5f58cb040 100644 --- a/app/views/admin/zonefile_settings/edit.haml +++ b/app/views/admin/zonefile_settings/edit.haml @@ -2,49 +2,52 @@ = form_for [:admin, @zonefile_setting], html: { class: 'form-horizontal' } do |f| .row - .col-md-12 + .col-md-8 #domain-statuses - .errors - - if f.object.errors.any? - - f.object.errors.full_messages.each do |x| - = x - %br - - if f.object.errors.any? - %hr + = render 'shared/full_errors', object: f.object + .form-group - = f.label :origin, class: 'col-md-2 control-label' - .col-md-10 + .col-md-4.control-label + = f.label :origin + .col-md-8 = f.text_field :origin, class: 'form-control', disabled: true .form-group - = f.label :ttl, class: 'col-md-2 control-label' - .col-md-10 + .col-md-4.control-label + = f.label :ttl + .col-md-8 = f.text_field :ttl, class: 'form-control' .form-group - = f.label :refresh, class: 'col-md-2 control-label' - .col-md-10 + .col-md-4.control-label + = f.label :refresh + .col-md-8 = f.text_field :refresh, class: 'form-control' .form-group - = f.label :retry, class: 'col-md-2 control-label' - .col-md-10 + .col-md-4.control-label + = f.label :retry + .col-md-8 = f.text_field :retry, class: 'form-control' .form-group - = f.label :expire, class: 'col-md-2 control-label' - .col-md-10 + .col-md-4.control-label + = f.label :expire + .col-md-8 = f.text_field :expire, class: 'form-control' .form-group - = f.label :minimum_ttl, class: 'col-md-2 control-label' - .col-md-10 + .col-md-4.control-label + = f.label :minimum_ttl + .col-md-8 = f.text_field :minimum_ttl, class: 'form-control' .form-group - = f.label :email, class: 'col-md-2 control-label' - .col-md-10 - = f.text_field :email, class: 'form-control' + .col-md-4.control-label + = f.label :email + .col-md-8 + = f.text_field :email, class: 'form-control', email: true + %hr .row - .col-md-12.text-right + .col-md-8.text-right %button.btn.btn-primary= t(:save) diff --git a/app/views/layouts/admin/application.haml b/app/views/layouts/admin/application.haml index 9d7b42836..b6d679bf1 100644 --- a/app/views/layouts/admin/application.haml +++ b/app/views/layouts/admin/application.haml @@ -11,7 +11,7 @@ %title= t(:admin_head_title) = csrf_meta_tags = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'application', 'data-turbolinks-track' => true + = javascript_include_tag 'admin-manifest', 'data-turbolinks-track' => true = favicon_link_tag 'favicon.ico' %body{:style => env_style} / Static navbar diff --git a/app/views/layouts/registrar/application.haml b/app/views/layouts/registrar/application.haml index e1825802e..a5798e85e 100644 --- a/app/views/layouts/registrar/application.haml +++ b/app/views/layouts/registrar/application.haml @@ -12,7 +12,7 @@ %title= t(:registrar_head_title) = csrf_meta_tags = stylesheet_link_tag 'registrar-manifest', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'application', 'data-turbolinks-track' => true + = javascript_include_tag 'registrar-manifest', 'data-turbolinks-track' => true = favicon_link_tag 'favicon.ico' %body / Fixed navbar diff --git a/app/views/registrar/contacts/_form.haml b/app/views/registrar/contacts/_form.haml index 559855c46..697306848 100644 --- a/app/views/registrar/contacts/_form.haml +++ b/app/views/registrar/contacts/_form.haml @@ -18,6 +18,6 @@ .row .col-md-8.text-right - if @contact.persisted? - = button_tag(t(:save), class: 'btn btn-primary') + = button_tag t(:save), class: 'btn btn-primary' - else - = button_tag(t(:create), class: 'btn btn-primary') + = button_tag t(:create), class: 'btn btn-primary' diff --git a/app/views/registrar/contacts/edit.haml b/app/views/registrar/contacts/edit.haml index 5d35dadda..bfbcf21e9 100644 --- a/app/views/registrar/contacts/edit.haml +++ b/app/views/registrar/contacts/edit.haml @@ -1,5 +1,5 @@ = render 'shared/title', name: "#{t(:edit)}: #{@contact.name}" -= form_for(@contact, url: registrar_contact_path(@contact), += form_for(@contact, url: registrar_contact_path(@contact), html: {class: 'form-horizontal js-contact-form'}) do |f| - render 'form', f: f diff --git a/app/views/registrar/contacts/form_partials/_address.haml b/app/views/registrar/contacts/form_partials/_address.haml index 236e4147c..8737bffa3 100644 --- a/app/views/registrar/contacts/form_partials/_address.haml +++ b/app/views/registrar/contacts/form_partials/_address.haml @@ -6,19 +6,19 @@ .col-md-3.control-label = f.label :street, t(:street) + '*' .col-md-7 - = f.text_field :street, class: 'form-control' + = f.text_field :street, class: 'form-control', required: true .form-group .col-md-3.control-label = f.label :city, t(:city) + '*' .col-md-7 - = f.text_field :city, class: 'form-control' + = f.text_field :city, class: 'form-control', required: true .form-group .col-md-3.control-label = f.label :zip, t(:zip) + '*' .col-md-7 - = f.text_field :zip, class: 'form-control' + = f.text_field :zip, class: 'form-control', required: true .form-group .col-md-3.control-label @@ -30,4 +30,5 @@ .col-md-3.control-label = f.label :country_code, t(:country) + '*' .col-md-7 - = f.select(:country_code, SortedCountry.all_options(f.object.country_code)) + = f.select :country_code, + SortedCountry.all_options(f.object.country_code) diff --git a/app/views/registrar/contacts/form_partials/_general.haml b/app/views/registrar/contacts/form_partials/_general.haml index 54048de38..623d27c18 100644 --- a/app/views/registrar/contacts/form_partials/_general.haml +++ b/app/views/registrar/contacts/form_partials/_general.haml @@ -7,20 +7,20 @@ = f.label :ident_country_code, t(:country) + '*' .col-md-7 = f.select(:ident_country_code, SortedCountry.all_options(f.object.ident_country_code), {}, - class: 'js-ident-country-code') + class: 'js-ident-country-code', required: true) .form-group .col-md-3.control-label = f.label :ident_type, t(:type) + '*' .col-md-7 = f.select(:ident_type, Depp::Contact::SELECTION_TYPES, { selected: f.object.ident_type }, - class: 'js-ident-type') + class: 'js-ident-type', required: true) .form-group .col-md-3.control-label = f.label :ident, t(:ident) + '*' .col-md-7 - = f.text_field :ident, class: 'form-control' + = f.text_field :ident, class: 'form-control', required: true - tip_visibility = f.object.ident_type == 'birthday' ? '' : 'display: none' .js-ident-tip{ style: tip_visibility } = t(:birthday_format) @@ -33,18 +33,19 @@ .col-md-3.control-label = f.label :name, t(:name) + '*' .col-md-7 - = f.text_field :name, class: 'form-control' + = f.text_field :name, class: 'form-control', required: true .form-group .col-md-3.control-label = f.label :email, t(:email) + '*' .col-md-7 - = f.text_field :email, class: 'form-control' + = f.text_field :email, class: 'form-control', required: true, email: true .form-group .col-md-3.control-label = f.label :phone, t(:phone) + '*' .col-md-7 - = f.text_field(:phone, class: 'form-control', placeholder: '+372.12323344') + = f.text_field :phone, class: 'form-control', + placeholder: '+372.12323344', required: true diff --git a/app/views/registrar/deposits/new.haml b/app/views/registrar/deposits/new.haml index a271e6fff..6211c2e4f 100644 --- a/app/views/registrar/deposits/new.haml +++ b/app/views/registrar/deposits/new.haml @@ -2,21 +2,27 @@ = link_to(t(:back_to_billing), registrar_invoices_path, class: 'btn btn-default') = render 'shared/title', name: t(:add_deposit) -= form_for([:registrar, @deposit], method: :post) do |f| += form_for([:registrar, @deposit], method: :post, html: { class: 'form-horizontal' }) do |f| + = render 'shared/full_errors', object: @deposit + .row - .col-md-4.col-md-offset-4 - = render 'shared/full_errors', object: @deposit + .col-md-8 .form-group - = f.label :amount - .input-group - = f.text_field :amount, class: 'form-control' - .input-group-addon - EUR + .col-md-4.control-label + = f.label :amount, class: 'required' + .col-md-7 + .input-group + = f.text_field :amount, class: 'form-control', required: true + .input-group-addon + EUR .form-group - = f.label :description - = f.text_area :description, class: 'form-control' + .col-md-4.control-label + = f.label :description + .col-md-7 + = f.text_area :description, class: 'form-control' - .row - .col-md-12.text-right - = button_tag(t(:add), class: 'btn btn-primary') + %hr + .row + .col-md-8.text-right + = button_tag(t(:add), class: 'btn btn-primary') diff --git a/app/views/registrar/domains/_form.haml b/app/views/registrar/domains/_form.haml index 0bba02de2..aff2166bc 100644 --- a/app/views/registrar/domains/_form.haml +++ b/app/views/registrar/domains/_form.haml @@ -13,9 +13,10 @@ .pull-left= t(:legal_document) .panel-body .form-group - = label_tag 'domain[legal_document]', t('legal_document'),class: 'col-md-3 control-label' - .col-md-9 - = file_field_tag 'domain[legal_document]' + .col-md-3.control-label + = label_tag 'domain[legal_document]', t('legal_document'), class: 'required' + .col-md-7 + = file_field_tag 'domain[legal_document]', required: true .col-md-4 %p.domain-general-help= t(:domain_general_help).html_safe %p.domain-admin-contact-help= t(:domain_admin_contact_help).html_safe diff --git a/app/views/registrar/domains/delete.haml b/app/views/registrar/domains/delete.haml index 6e4782254..ab83cd813 100644 --- a/app/views/registrar/domains/delete.haml +++ b/app/views/registrar/domains/delete.haml @@ -7,10 +7,10 @@ = t(:legal_document) .panel-body .form-group - .col-md-3.control-label - = label_tag 'domain[legal_document]', t('legal_document') - .col-md-7 - = file_field_tag 'domain[legal_document]' + .col-md-4.control-label + = label_tag 'domain[legal_document]', t('legal_document'), class: 'required' + .col-md-6 + = file_field_tag 'domain[legal_document]', required: true = hidden_field_tag 'domain[name]', params[:domain_name] %hr .row diff --git a/app/views/registrar/domains/form_partials/_contacts.haml b/app/views/registrar/domains/form_partials/_contacts.haml index 20e7675b9..47c66ff6d 100644 --- a/app/views/registrar/domains/form_partials/_contacts.haml +++ b/app/views/registrar/domains/form_partials/_contacts.haml @@ -2,20 +2,23 @@ - @domain_params['contacts_attributes'].each do |k, v| .panel.panel-default .panel-heading.clearfix - .pull-left= t('contact') + .pull-left= t(:contact) .pull-right - = link_to(t('add_another'), '#', class: 'btn btn-primary btn-xs add-domain-contact') - = link_to(t('delete'), '#', class: 'btn btn-danger btn-xs destroy') + = link_to(t(:add_another), '#', class: 'btn btn-primary btn-xs add-domain-contact') + = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs destroy') .panel-body .form-group - = label_tag "domain_contacts_attributes_#{k}_type", t('contact_type'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_contacts_attributes_#{k}_type", t(:contact_type), class: 'required' .col-md-7 = select_tag "domain[contacts_attributes][#{k}][type]", options_for_select(['admin', 'tech'], v['type']), {class: 'form-control'} .form-group - = label_tag "domain_contacts_attributes_#{k}_code", t('contact_code'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_contacts_attributes_#{k}_code", t(:contact_code), class: 'required' .col-md-7.has-feedback - = text_field_tag("domain[contacts_attributes][#{k}][code]", v['code'], class: 'form-control', placeholder: t('contact_code'), autocomplete: 'off') + = text_field_tag("domain[contacts_attributes][#{k}][code]", v['code'], + class: 'form-control', placeholder: t(:contact_code), autocomplete: 'off', required: true) :coffee $("#domain-contacts").nestedAttributes bindAddTo: $(".add-domain-contact") diff --git a/app/views/registrar/domains/form_partials/_dnskeys.haml b/app/views/registrar/domains/form_partials/_dnskeys.haml index 1db448d11..cd08bacea 100644 --- a/app/views/registrar/domains/form_partials/_dnskeys.haml +++ b/app/views/registrar/domains/form_partials/_dnskeys.haml @@ -2,51 +2,71 @@ - @domain_params['dnskeys_attributes'].each do |k, v| .panel.panel-default .panel-heading.clearfix - .pull-left= t('dnskey') + .pull-left= t(:dnskey) .pull-right - = link_to(t('add_another'), '#', class: 'btn btn-primary btn-xs add-dnskey') - = link_to(t('delete'), '#', class: 'btn btn-danger btn-xs destroy') + = link_to(t(:add_another), '#', class: 'btn btn-primary btn-xs add-dnskey') + = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs destroy') .panel-body - if ENV['show_ds_data_fields'] == 'true' .form-group - = label_tag "domain_dnskeys_attributes_#{k}_ds_key_tag", t('ds_key_tag'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_ds_key_tag", t(:ds_key_tag) .col-md-7 - = text_field_tag "domain[dnskeys_attributes][#{k}][ds_key_tag]", v['ds_key_tag'], {class: 'form-control'} + = text_field_tag "domain[dnskeys_attributes][#{k}][ds_key_tag]", v['ds_key_tag'], + {class: 'form-control'} .form-group - = label_tag "domain_dnskeys_attributes_#{k}_ds_alg", t('ds_algorithm'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_ds_alg", t(:ds_algorithm) .col-md-7 - = select_tag "domain[dnskeys_attributes][#{k}][ds_alg]", options_for_select(Depp::Dnskey::ALGORITHMS, v['ds_alg']), {class: 'form-control'} + = select_tag "domain[dnskeys_attributes][#{k}][ds_alg]", + options_for_select(Depp::Dnskey::ALGORITHMS, v['ds_alg']), {class: 'form-control'} .form-group - = label_tag "domain_dnskeys_attributes_#{k}_ds_digest_type", t('ds_digest_type'), class: 'col-md-2 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_ds_digest_type", t(:ds_digest_type) .col-md-7 - = select_tag "domain[dnskeys_attributes][#{k}][ds_digest_type]", options_for_select(Depp::Dnskey::DS_DIGEST_TYPES, v['ds_digest_type']), {class: 'form-control'} + = select_tag "domain[dnskeys_attributes][#{k}][ds_digest_type]", + options_for_select(Depp::Dnskey::DS_DIGEST_TYPES, v['ds_digest_type']), + {class: 'form-control'} .form-group - = label_tag "domain_dnskeys_attributes_#{k}_ds_digest", t('ds_digest'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_ds_digest", t(:ds_digest) .col-md-7 - = text_field_tag "domain[dnskeys_attributes][#{k}][ds_digest]", v['ds_digest'], {class: 'form-control'} + = text_field_tag "domain[dnskeys_attributes][#{k}][ds_digest]", v['ds_digest'], + {class: 'form-control'} .form-group - = label_tag "domain_dnskeys_attributes_#{k}_flags", t('flags'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_flags", t(:flags) .col-md-7 - = select_tag "domain[dnskeys_attributes][#{k}][flags]", options_for_select(Depp::Dnskey::FLAGS, v['flags']), {class: 'form-control'} + = select_tag "domain[dnskeys_attributes][#{k}][flags]", + options_for_select(Depp::Dnskey::FLAGS, v['flags']), + { class: 'form-control' } .form-group - = label_tag "domain_dnskeys_attributes_#{k}_protocol", t('protocol'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_protocol", t(:protocol) .col-md-7 - = select_tag "domain[dnskeys_attributes][#{k}][protocol]", options_for_select(Depp::Dnskey::PROTOCOLS, v['protocol']), {class: 'form-control'} + = select_tag "domain[dnskeys_attributes][#{k}][protocol]", + options_for_select(Depp::Dnskey::PROTOCOLS, v['protocol']), + { class: 'form-control' } .form-group - = label_tag "domain_dnskeys_attributes_#{k}_alg", t('alg'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_alg", t(:alg) .col-md-7 - = select_tag "domain[dnskeys_attributes][#{k}][alg]", options_for_select(Depp::Dnskey::ALGORITHMS, v['alg']), {class: 'form-control'} + = select_tag "domain[dnskeys_attributes][#{k}][alg]", + options_for_select(Depp::Dnskey::ALGORITHMS, v['alg']), { class: 'form-control' } .form-group - = label_tag "domain_dnskeys_attributes_#{k}_public_key", t('public_key'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_dnskeys_attributes_#{k}_public_key", t(:public_key) .col-md-7 - = text_field_tag "domain[dnskeys_attributes][#{k}][public_key]", v['public_key'], class: 'form-control' + = text_field_tag "domain[dnskeys_attributes][#{k}][public_key]", v['public_key'], + class: 'form-control' + :coffee $("#dnskeys").nestedAttributes bindAddTo: $(".add-dnskey") diff --git a/app/views/registrar/domains/form_partials/_general.haml b/app/views/registrar/domains/form_partials/_general.haml index bce8ef3b8..ac342f79f 100644 --- a/app/views/registrar/domains/form_partials/_general.haml +++ b/app/views/registrar/domains/form_partials/_general.haml @@ -1,19 +1,24 @@ .general-tab.panel.panel-default .panel-body .form-group - = label_tag :domain_name, t('name'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_name, t(:name), class: 'required' .col-md-7 - readonly = params[:domain_name] ? true : false - = text_field_tag('domain[name]', @domain_params[:name], class: 'form-control', readonly: readonly) + = text_field_tag('domain[name]', @domain_params[:name], + class: 'form-control', readonly: readonly, required: true) - unless params[:domain_name] .form-group - = label_tag :domain_period, t('period'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_period, t(:period), class: 'required' .col-md-7 = select_tag 'domain[period]', options_for_select(Depp::Domain::PERIODS, @domain_params[:period]), { class: 'form-control' } .form-group - = label_tag :domain_registrant, t('registrant'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_registrant, t(:registrant), class: 'required' .col-md-7 - = text_field_tag('domain[registrant]', @domain_params[:registrant], class: 'form-control', placeholder: t('contact_code'), autocomplete: 'off') + = text_field_tag('domain[registrant]', @domain_params[:registrant], + class: 'form-control', placeholder: t(:contact_code), autocomplete: 'off', required: true) diff --git a/app/views/registrar/domains/form_partials/_nameservers.haml b/app/views/registrar/domains/form_partials/_nameservers.haml index 0fbbc519a..84d1359f7 100644 --- a/app/views/registrar/domains/form_partials/_nameservers.haml +++ b/app/views/registrar/domains/form_partials/_nameservers.haml @@ -2,23 +2,29 @@ - @domain_params['nameservers_attributes'].each do |k, v| .panel.panel-default .panel-heading.clearfix - .pull-left= t('nameserver') + .pull-left= t(:nameserver) .pull-right - = link_to(t('add_another'), '#', class: 'btn btn-primary btn-xs add-nameserver') - = link_to(t('delete'), '#', class: 'btn btn-danger btn-xs destroy') + = link_to(t(:add_another), '#', class: 'btn btn-primary btn-xs add-nameserver') + = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs destroy') .panel-body .form-group - = label_tag "domain_nameservers_attributes_#{k}_hostname", t('hostname'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_nameservers_attributes_#{k}_hostname", t(:hostname), class: 'required' .col-md-7 - = text_field_tag "domain[nameservers_attributes][#{k}][hostname]", v['hostname'], class: 'form-control' + = text_field_tag "domain[nameservers_attributes][#{k}][hostname]", v['hostname'], + class: 'form-control', required: true .form-group - = label_tag "domain_nameservers_attributes_#{k}_ipv4", t('ipv4'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_nameservers_attributes_#{k}_ipv4", t(:ipv4) .col-md-7 - = text_field_tag "domain[nameservers_attributes][#{k}][ipv4]", v['ipv4'], class: 'form-control' + = text_field_tag "domain[nameservers_attributes][#{k}][ipv4]", v['ipv4'], + class: 'form-control', ipv4: true .form-group - = label_tag "domain_nameservers_attributes_#{k}_ipv6", t('ipv6'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag "domain_nameservers_attributes_#{k}_ipv6", t(:ipv6) .col-md-7 - = text_field_tag "domain[nameservers_attributes][#{k}][ipv6]", v['ipv6'], class: 'form-control' + = text_field_tag "domain[nameservers_attributes][#{k}][ipv6]", v['ipv6'], + class: 'form-control', ipv6: true :coffee $("#nameservers").nestedAttributes bindAddTo: $(".add-nameserver") diff --git a/app/views/registrar/domains/renew_index.haml b/app/views/registrar/domains/renew_index.haml index e9cfd7c31..aa61ab889 100644 --- a/app/views/registrar/domains/renew_index.haml +++ b/app/views/registrar/domains/renew_index.haml @@ -4,18 +4,27 @@ .col-md-8 = form_tag renew_registrar_domains_path, class: 'form-horizontal', method: :get do .form-group - = label_tag :domain_name, t(:name), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_name, t(:name), class: 'required' .col-md-7 - = text_field_tag :domain_name, params[:domain_name], class: 'form-control', placeholder: t('domain_name'), autocomplete: 'off' + = text_field_tag :domain_name, params[:domain_name], + class: 'form-control', placeholder: t('domain_name'), autocomplete: 'off', required: true + .form-group - = label_tag :cur_exp_date, t(:cur_exp_date), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :cur_exp_date, t(:cur_exp_date), class: 'required' .col-md-7 - = text_field_tag :cur_exp_date, params[:cur_exp_date], class: 'form-control', placeholder: 'yyyy-mm-dd', autocomplete: 'off' + = text_field_tag :cur_exp_date, params[:cur_exp_date], + class: 'form-control', placeholder: 'yyyy-mm-dd', autocomplete: 'off', required: true + .form-group - = label_tag :domain_period, t(:period), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_period, t(:period), class: 'required' .col-md-7 = select_tag :period, options_for_select(Depp::Domain::PERIODS, params[:period]), { class: 'form-control' } + + %hr .form-group .col-md-10.text-right %button.btn.btn-primary= t(:renew) diff --git a/app/views/registrar/domains/transfer_index.haml b/app/views/registrar/domains/transfer_index.haml index bcc3f5110..05e7c2722 100644 --- a/app/views/registrar/domains/transfer_index.haml +++ b/app/views/registrar/domains/transfer_index.haml @@ -4,19 +4,24 @@ .col-md-8 = form_tag transfer_registrar_domains_path, class: 'form-horizontal', method: :post, multipart: true do .form-group - = label_tag :domain_name, t('name'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_name, t(:name), class: 'required' .col-md-7 - = text_field_tag :domain_name, params[:domain_name], class: 'form-control', placeholder: t('domain_name'), autocomplete: 'off', autofocus: true + = text_field_tag :domain_name, params[:domain_name], class: 'form-control', + placeholder: t(:domain_name), autocomplete: 'off', autofocus: true, required: true .form-group - = label_tag :password, t('password'), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :password, t(:password), class: 'required' .col-md-7 - = text_field_tag :password, params[:password], class: 'form-control', autocomplete: 'off' + = text_field_tag :password, params[:password], + class: 'form-control', autocomplete: 'off', required: true .form-group - = label_tag 'legal_document', t('legal_document'),class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag 'legal_document', t(:legal_document), class: 'required' .col-md-7 - = file_field_tag 'legal_document' + = file_field_tag 'legal_document', required: true .form-group .col-md-10.text-right - %button.btn.btn-primary{ name: 'query' }= t('query') - %button.btn.btn-primary{ name: 'approve' }= t('approve') - %button.btn.btn-primary{ name: 'reject' }= t('reject') + %button.btn.btn-primary{ name: 'query' }= t(:query) + %button.btn.btn-primary{ name: 'approve' }= t(:approve) + %button.btn.btn-primary{ name: 'reject' }= t(:reject) diff --git a/app/views/registrar/keyrelays/show.haml b/app/views/registrar/keyrelays/show.haml index 572ebed35..d0f3aa8c5 100644 --- a/app/views/registrar/keyrelays/show.haml +++ b/app/views/registrar/keyrelays/show.haml @@ -4,47 +4,65 @@ .col-md-8 = form_tag registrar_keyrelay_path, class: 'form-horizontal', method: :post, multipart: true do .form-group - = label_tag :domain_name, t(:domain_name), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :domain_name, t(:domain_name), class: 'required' .col-md-7 - = text_field_tag :domain_name, params[:domain_name], class: 'form-control', autocomplete: 'off' + = text_field_tag :domain_name, params[:domain_name], + class: 'form-control', autocomplete: 'off', required: true .form-group - = label_tag :password, t(:password), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :password, t(:password), class: 'required' .col-md-7 - = text_field_tag :password, params[:password], class: 'form-control', autocomplete: 'off' + = text_field_tag :password, params[:password], + class: 'form-control', autocomplete: 'off', required: true .form-group - = label_tag :expiry_relative, t(:expiry_relative), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :expiry_relative, t(:expiry_relative), class: 'required' .col-md-7 - = text_field_tag :expiry_relative, params[:expiry_relative], class: 'form-control', autocomplete: 'off' + = text_field_tag :expiry_relative, params[:expiry_relative], + class: 'form-control', autocomplete: 'off', required: true .form-group - = label_tag :expiry_absolute, t(:expiry_absolute), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :expiry_absolute, t(:expiry_absolute), class: 'required' .col-md-7 - = text_field_tag :expiry_absolute, params[:expiry_absolute], class: 'form-control', autocomplete: 'off' + = text_field_tag :expiry_absolute, params[:expiry_absolute], + class: 'form-control', autocomplete: 'off', required: true .form-group - = label_tag :key_data_flags, t(:flag), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :key_data_flags, t(:flag), class: 'required' .col-md-7 - = select_tag :key_data_flags, options_for_select(Depp::Dnskey::FLAGS, params['key_data_flags']), {class: 'form-control'} + = select_tag :key_data_flags, + options_for_select(Depp::Dnskey::FLAGS, params['key_data_flags']), {class: 'form-control'} .form-group - = label_tag :key_data_protocol, t(:protocol), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :key_data_protocol, t(:protocol), class: 'required' .col-md-7 - = select_tag :key_data_protocol, options_for_select(Depp::Dnskey::PROTOCOLS, params['key_data_protocol']), {class: 'form-control'} + = select_tag :key_data_protocol, + options_for_select(Depp::Dnskey::PROTOCOLS, params['key_data_protocol']), + {class: 'form-control'} .form-group - = label_tag :key_data_alg, t(:algorithm), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :key_data_alg, t(:algorithm), class: 'required' .col-md-7 - = select_tag :key_data_alg, options_for_select(Depp::Dnskey::ALGORITHMS, params['key_data_alg']), {class: 'form-control'} + = select_tag :key_data_alg, + options_for_select(Depp::Dnskey::ALGORITHMS, params['key_data_alg']), {class: 'form-control'} .form-group - = label_tag :key_data_public_key, t(:public_key), class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :key_data_public_key, t(:public_key), class: 'required' .col-md-7 - = text_field_tag :key_data_public_key, params['key_data_public_key'], class: 'form-control' + = text_field_tag :key_data_public_key, params['key_data_public_key'], + class: 'form-control', required: true .form-group - = label_tag :legal_document, t(:legal_document),class: 'col-md-3 control-label' + .col-md-3.control-label + = label_tag :legal_document, t(:legal_document) .col-md-7 = file_field_tag :legal_document diff --git a/app/views/registrar/sessions/login_mid.haml b/app/views/registrar/sessions/login_mid.haml index 4a81ffa33..9a09a47ec 100644 --- a/app/views/registrar/sessions/login_mid.haml +++ b/app/views/registrar/sessions/login_mid.haml @@ -2,8 +2,10 @@ .form-signin.col-md-4.center-block.text-center %h2.form-signin-heading.text-center= t(:log_in_with_mid) %hr - = form_for @user, url: registrar_mid_path, html: {class: 'form-signin'} do |f| - = f.text_field :phone, class: 'form-control', placeholder: t(:phone_no), autocomplete: 'off' + = form_for @user, url: registrar_mid_path, auto_html5_validation: false, + html: {class: 'form-signin'} do |f| + = f.text_field :phone, class: 'form-control', + placeholder: t(:phone_no), autocomplete: 'off', required: true %button.btn.btn-lg.btn-primary.btn-block.js-login{:type => 'submit'}= t(:log_in) - if ['development', 'alpha'].include?(Rails.env) diff --git a/config/application.rb b/config/application.rb index 2fbb4c10b..d9f724bb6 100644 --- a/config/application.rb +++ b/config/application.rb @@ -39,7 +39,8 @@ module Registry # Precompile additional assets config.assets.precompile += %w(*.svg *.eot *.woff *.ttf) - config.assets.precompile += %w(admin-manifest.css) + config.assets.precompile += %w(admin-manifest.css admin-manifest.js) + config.assets.precompile += %w(registrar-manifest.css registrar-manifest.js) # Active Record used to suppresses errors raised within # `after_rollback`/`after_commit` callbacks and only printed them to the logs. diff --git a/config/initializers/autolabel.rb b/config/initializers/autolabel.rb new file mode 100644 index 000000000..2f962ef61 --- /dev/null +++ b/config/initializers/autolabel.rb @@ -0,0 +1,24 @@ +class ActionView::Helpers::FormBuilder + alias :orig_label :label + + # add a 'required' CSS class to the field label if the field is required + 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 + + 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 + + self.orig_label(method, content, options || {}, &block) + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 7f8aee0ff..466cf4256 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -641,7 +641,7 @@ en: m_id: 'M-ID' destroyed: It was successfully deleted. not_found: Not found - no_connection_to_registry: Connection issue to the registry server! Please try again later. + no_connection_to_registry: Connection issue to the registry EPP or REPP server! Please try again later. domain_not_found: 'Domain was not found' new_contact: 'New contact' add_deposit: 'Add deposit'