diff --git a/app/assets/javascripts/ckeditor/reinit.js b/app/assets/javascripts/ckeditor/reinit.js deleted file mode 100644 index 0ee51a90c..000000000 --- a/app/assets/javascripts/ckeditor/reinit.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).on("page:change", function() { - if (typeof(CKEDITOR) != "undefined"){ - for(name in CKEDITOR.instances){ - try{CKEDITOR.replace(name);}catch(err){}; - } - } -}); diff --git a/app/assets/javascripts/html_editor.js b/app/assets/javascripts/html_editor.js index 4325fa255..590a473ae 100644 --- a/app/assets/javascripts/html_editor.js +++ b/app/assets/javascripts/html_editor.js @@ -1,6 +1,11 @@ (function() { "use strict"; App.HTMLEditor = { + destroy: function() { + for (var name in CKEDITOR.instances) { + CKEDITOR.instances[name].destroy(); + } + }, initialize: function() { $("textarea.html-area").each(function() { if ($(this).hasClass("admin")) { @@ -11,4 +16,7 @@ }); } }; + + $(document).on("page:before-unload", App.HTMLEditor.destroy); + $(document).on("page:restore", App.HTMLEditor.initialize); }).call(this); diff --git a/spec/system/ckeditor_spec.rb b/spec/system/ckeditor_spec.rb index ea72ca4ca..d09732d97 100644 --- a/spec/system/ckeditor_spec.rb +++ b/spec/system/ckeditor_spec.rb @@ -51,4 +51,20 @@ describe "CKEditor" do expect(page).not_to have_link "Upload" expect(page).not_to have_link "Browse Server" end + + context "When navigating back to editor page using browser history back" do + scenario "display ckeditor unsaved contents", :js do + login_as(create(:administrator).user) + + visit new_admin_newsletter_path + fill_in_ckeditor "Email content", with: "This is an unsaved body" + click_link "Newsletters" + + expect(page).to have_link "New newsletter" + + go_back + + expect(page).to have_ckeditor "Email content", with: "This is an unsaved body" + end + end end