Files
nairobi/app/assets/javascripts/html_editor.js
Senén Rodero Rodríguez 3d0ce57f03 Destroy and intialize ckeditor on browser history back
When a page with ckeditor is restored from browser cache by using browser
history back feature application was trying to re-initialize it but this was
throwing some javascript errors that left ckeditor useless. The ckeditor user
interface seemed to be loaded correctly but editor contents was not shown
and ckeditor locked.

This solution is about destroying all ckeditor instances on page before
leaving it and force the reinitialization after Turbolinks restored the cache.
Inspiration here [1].

There is a similar patch to make it work with Turbolinks 5.x versions [2].

  [1] https://github.com/galetahub/ckeditor/issues/575#issuecomment-132757961
  [2] https://github.com/galetahub/ckeditor/issues/575#issuecomment-241185136
2020-05-11 11:15:45 +02:00

23 lines
673 B
JavaScript

(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")) {
CKEDITOR.replace(this.name, { language: $("html").attr("lang"), toolbar: "admin", height: 500 });
} else {
CKEDITOR.replace(this.name, { language: $("html").attr("lang") });
}
});
}
};
$(document).on("page:before-unload", App.HTMLEditor.destroy);
$(document).on("page:restore", App.HTMLEditor.initialize);
}).call(this);