From 0ef6bd04753e77e8058954e5709d3c5fd58d8161 Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Wed, 24 Oct 2018 13:43:17 +0300 Subject: [PATCH 1/4] Fix airbrake configuration in test --- config/application-example.yml | 5 +++++ config/initializers/errbit.rb | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 config/initializers/errbit.rb diff --git a/config/application-example.yml b/config/application-example.yml index 83164b14a..6760e5ffe 100644 --- a/config/application-example.yml +++ b/config/application-example.yml @@ -152,3 +152,8 @@ same_site_session_cookies: 'false' # false|strict|lax test: payments_seb_bank_certificate: 'test/fixtures/files/seb_bank_cert.pem' payments_seb_seller_private: 'test/fixtures/files/seb_seller_key.pem' + +# Airbrake // Errbit: +airbrake_host: "https://your-errbit-host.ee" +airbrake_project_id: "1" +airbrake_project_key: "api_key" diff --git a/config/initializers/errbit.rb b/config/initializers/errbit.rb new file mode 100644 index 000000000..1219d45f9 --- /dev/null +++ b/config/initializers/errbit.rb @@ -0,0 +1,23 @@ +module Patches + module Airbrake + module SyncSender + def build_https(uri) + super.tap do |req| + req.verify_mode = OpenSSL::SSL::VERIFY_NONE + end + end + end + end +end + +Airbrake::SyncSender.prepend(::Patches::Airbrake::SyncSender) + +Airbrake.configure do |config| + config.host = ENV['airbrake_host'] + config.project_id = ENV['airbrake_project_id'] + config.project_key = ENV['airbrake_project_key'] + + # Uncomment for Rails apps + config.environment = Rails.env + config.ignore_environments = %w(development test) +end From d5d3d6393f18d12c449583e4a88fc1ec779edb8d Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Wed, 24 Oct 2018 13:59:16 +0300 Subject: [PATCH 2/4] Fix indentation error --- config/initializers/errbit.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/config/initializers/errbit.rb b/config/initializers/errbit.rb index 1219d45f9..46e7eb274 100644 --- a/config/initializers/errbit.rb +++ b/config/initializers/errbit.rb @@ -17,7 +17,6 @@ Airbrake.configure do |config| config.project_id = ENV['airbrake_project_id'] config.project_key = ENV['airbrake_project_key'] - # Uncomment for Rails apps - config.environment = Rails.env - config.ignore_environments = %w(development test) + config.environment = Rails.env + config.ignore_environments = %w(development test) end From c86bd96588653a5d2dbc0d77be10350d89961f1d Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Thu, 25 Oct 2018 10:29:02 +0300 Subject: [PATCH 3/4] Make airbrake environment configurable --- config/application-example.yml | 1 + config/initializers/errbit.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/application-example.yml b/config/application-example.yml index 6760e5ffe..7baa29740 100644 --- a/config/application-example.yml +++ b/config/application-example.yml @@ -155,5 +155,6 @@ test: # Airbrake // Errbit: airbrake_host: "https://your-errbit-host.ee" +# airbrake_env: "staging", defaults to Rails.env airbrake_project_id: "1" airbrake_project_key: "api_key" diff --git a/config/initializers/errbit.rb b/config/initializers/errbit.rb index 46e7eb274..3d4185834 100644 --- a/config/initializers/errbit.rb +++ b/config/initializers/errbit.rb @@ -17,6 +17,6 @@ Airbrake.configure do |config| config.project_id = ENV['airbrake_project_id'] config.project_key = ENV['airbrake_project_key'] - config.environment = Rails.env + config.environment = ENV['airbrake_env'] || Rails.env config.ignore_environments = %w(development test) end From 02f9e99428f94cbe2168224c6fd24c7faddba846 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 27 Oct 2018 16:18:29 +0300 Subject: [PATCH 4/4] Support IE11 Previously `let of` loop was used, which isn't supported in IE11. It seems it just fails when there is some JS syntax error (doesn't matter where exactly) and dataType: 'json' has no effect. Closes #982 --- app/assets/javascripts/admin-manifest.coffee | 4 ++++ .../javascripts/polyfills/node_list_for_each.js | 11 +++++++++++ app/assets/javascripts/registrant-manifest.coffee | 4 ++++ app/assets/javascripts/registrar-manifest.coffee | 4 ++++ app/assets/javascripts/spell_check.js | 10 ++++++---- app/assets/javascripts/text_field_trimmer.js | 10 ++++++---- 6 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 app/assets/javascripts/polyfills/node_list_for_each.js diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index dd99c1932..883070a7a 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -8,6 +8,10 @@ #= require jquery-ui/datepicker #= require select2 #= require jquery.doubleScroll + +# Load order does matter +#= require polyfills/node_list_for_each + #= require datepicker #= require spell_check #= require admin/application diff --git a/app/assets/javascripts/polyfills/node_list_for_each.js b/app/assets/javascripts/polyfills/node_list_for_each.js new file mode 100644 index 000000000..0b5a1aabe --- /dev/null +++ b/app/assets/javascripts/polyfills/node_list_for_each.js @@ -0,0 +1,11 @@ +// Needed mainly for IE11 +// https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach + +if (window.NodeList && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = function (callback, thisArg) { + thisArg = thisArg || window; + for (var i = 0; i < this.length; i++) { + callback.call(thisArg, this[i], i, this); + } + }; +} diff --git a/app/assets/javascripts/registrant-manifest.coffee b/app/assets/javascripts/registrant-manifest.coffee index 84f95374a..febc82e2b 100644 --- a/app/assets/javascripts/registrant-manifest.coffee +++ b/app/assets/javascripts/registrant-manifest.coffee @@ -4,5 +4,9 @@ #= require jquery-ui/datepicker #= require select2 #= require datepicker + +# Load order does matter +#= require polyfills/node_list_for_each + #= require spell_check #= require shared/general diff --git a/app/assets/javascripts/registrar-manifest.coffee b/app/assets/javascripts/registrar-manifest.coffee index f83d9f76e..fd0ec3ca0 100644 --- a/app/assets/javascripts/registrar-manifest.coffee +++ b/app/assets/javascripts/registrar-manifest.coffee @@ -6,6 +6,10 @@ #= require jquery-ui/datepicker #= require select2 #= require datepicker + +# Load order does matter +#= require polyfills/node_list_for_each + #= require spell_check #= require popover #= require text_field_trimmer diff --git a/app/assets/javascripts/spell_check.js b/app/assets/javascripts/spell_check.js index 7c04ab071..9645f3487 100644 --- a/app/assets/javascripts/spell_check.js +++ b/app/assets/javascripts/spell_check.js @@ -1,11 +1,13 @@ -(function() { +(function () { function disableSpellCheck() { let selector = 'input[type=text], textarea'; let textFields = document.querySelectorAll(selector); - for (let field of textFields) { - field.spellcheck = false; - } + textFields.forEach( + function (field, _currentIndex, _listObj) { + field.spellcheck = false; + } + ); } disableSpellCheck(); diff --git a/app/assets/javascripts/text_field_trimmer.js b/app/assets/javascripts/text_field_trimmer.js index 71cbc5295..4293be934 100644 --- a/app/assets/javascripts/text_field_trimmer.js +++ b/app/assets/javascripts/text_field_trimmer.js @@ -2,13 +2,15 @@ function trimTextFields() { let selector = 'input[type=text], input[type=search], input[type=email], textarea'; let textFields = document.querySelectorAll(selector); - let listener = function () { + let changeListener = function () { this.value = this.value.trim(); }; - for (let field of textFields) { - field.addEventListener('change', listener); - } + textFields.forEach( + function (field, currentIndex, listObj) { + field.addEventListener('change', changeListener); + } + ); } trimTextFields();