mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
MINOR Fixed change detection false positives for TinyMCE in IE, use TinyMCE.isDirty() rather than string comparison
This commit is contained in:
parent
bf11a32336
commit
bad1b88942
@ -196,9 +196,15 @@
|
||||
onmatch : function() {
|
||||
var self = this;
|
||||
this.closest('form').bind('beforesave', function() {
|
||||
if(typeof tinyMCE == 'undefined') return;
|
||||
|
||||
// TinyMCE modifies input, so change tracking might get false
|
||||
// positives when comparing string values - don't save if the editor doesn't think its dirty.
|
||||
if(self.isChanged()) {
|
||||
tinyMCE.triggerSave();
|
||||
// TinyMCE assigns value attr directly, which doesn't trigger change event
|
||||
self.trigger('change');
|
||||
}
|
||||
});
|
||||
|
||||
// Only works after TinyMCE.init() has been invoked, see $(window).bind() call below for details.
|
||||
@ -223,14 +229,26 @@
|
||||
});
|
||||
ed.render();
|
||||
|
||||
// Handle editor de-registration by hooking into state changes.
|
||||
// TODO Move to onunmatch for less coupling (once we figure out how to work with detached DOM nodes in TinyMCE)
|
||||
$('.cms-container').bind('beforestatechange', function() {
|
||||
self.css('visibility', 'hidden');
|
||||
var ed = tinyMCE.get(self.attr('id'));
|
||||
if(ed) ed.remove();
|
||||
});
|
||||
|
||||
this._super();
|
||||
},
|
||||
|
||||
isChanged: function() {
|
||||
if(typeof tinyMCE == 'undefined') return;
|
||||
|
||||
return tinyMCE.getInstanceById(this.attr('id')).isDirty();
|
||||
},
|
||||
|
||||
resetChanged: function() {
|
||||
if(typeof tinyMCE == 'undefined') return;
|
||||
|
||||
var inst = tinyMCE.getInstanceById(this.attr('id'));
|
||||
if (inst) inst.startContent = tinymce.trim(inst.getContent({format : 'raw', no_events : 1}));
|
||||
},
|
||||
@ -243,6 +261,7 @@
|
||||
this._super();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}(jQuery));
|
Loading…
Reference in New Issue
Block a user