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() {
|
onmatch : function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.closest('form').bind('beforesave', function() {
|
this.closest('form').bind('beforesave', function() {
|
||||||
tinyMCE.triggerSave();
|
if(typeof tinyMCE == 'undefined') return;
|
||||||
// TinyMCE assigns value attr directly, which doesn't trigger change event
|
|
||||||
self.trigger('change');
|
// 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.
|
// Only works after TinyMCE.init() has been invoked, see $(window).bind() call below for details.
|
||||||
@ -223,14 +229,26 @@
|
|||||||
});
|
});
|
||||||
ed.render();
|
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();
|
this._super();
|
||||||
},
|
},
|
||||||
|
|
||||||
isChanged: function() {
|
isChanged: function() {
|
||||||
|
if(typeof tinyMCE == 'undefined') return;
|
||||||
|
|
||||||
return tinyMCE.getInstanceById(this.attr('id')).isDirty();
|
return tinyMCE.getInstanceById(this.attr('id')).isDirty();
|
||||||
},
|
},
|
||||||
|
|
||||||
resetChanged: function() {
|
resetChanged: function() {
|
||||||
|
if(typeof tinyMCE == 'undefined') return;
|
||||||
|
|
||||||
var inst = tinyMCE.getInstanceById(this.attr('id'));
|
var inst = tinyMCE.getInstanceById(this.attr('id'));
|
||||||
if (inst) inst.startContent = tinymce.trim(inst.getContent({format : 'raw', no_events : 1}));
|
if (inst) inst.startContent = tinymce.trim(inst.getContent({format : 'raw', no_events : 1}));
|
||||||
},
|
},
|
||||||
@ -243,6 +261,7 @@
|
|||||||
this._super();
|
this._super();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}(jQuery));
|
}(jQuery));
|
Loading…
Reference in New Issue
Block a user