[FIX] website: copy paste from website
Pasting from the website to the website could for example copy t-field="..." which then would easily add an error if e.g a field is copied to an area where it is not available. This fix strip the data-oe-... attributes of nodes added to the DOM when pasting. closes #7653 opw-644968
This commit is contained in:
parent
c838a27dea
commit
e7e9eb987b
|
@ -1924,6 +1924,11 @@
|
||||||
subtree: true,
|
subtree: true,
|
||||||
attributeOldValue: true,
|
attributeOldValue: true,
|
||||||
};
|
};
|
||||||
|
var pasting = false;
|
||||||
|
$(document).on('paste', '[contenteditable]', function() {
|
||||||
|
pasting = true;
|
||||||
|
setTimeout(function(){ pasting = false; }, 0);
|
||||||
|
});
|
||||||
var observer = new website.Observer(function (mutations) {
|
var observer = new website.Observer(function (mutations) {
|
||||||
// NOTE: Webkit does not fire DOMAttrModified => webkit browsers
|
// NOTE: Webkit does not fire DOMAttrModified => webkit browsers
|
||||||
// relying on JsMutationObserver shim (Chrome < 18, Safari < 6)
|
// relying on JsMutationObserver shim (Chrome < 18, Safari < 6)
|
||||||
|
@ -1960,6 +1965,7 @@
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
fixup_browser_crap(m.addedNodes);
|
fixup_browser_crap(m.addedNodes);
|
||||||
}, 0);
|
}, 0);
|
||||||
|
if (pasting) { remove_oe_attributes(m.addedNodes); }
|
||||||
// Remove ignorable nodes from addedNodes or removedNodes,
|
// Remove ignorable nodes from addedNodes or removedNodes,
|
||||||
// if either set remains non-empty it's considered to be an
|
// if either set remains non-empty it's considered to be an
|
||||||
// impactful change. Otherwise it's ignored.
|
// impactful change. Otherwise it's ignored.
|
||||||
|
@ -1980,6 +1986,16 @@
|
||||||
.uniq()
|
.uniq()
|
||||||
.each(function (node) { $(node).trigger('content_changed'); })
|
.each(function (node) { $(node).trigger('content_changed'); })
|
||||||
});
|
});
|
||||||
|
function remove_oe_attributes(nodes) {
|
||||||
|
_.chain(nodes).filter(function(node){ return node.nodeType === 1 }).each(function(node){
|
||||||
|
_.each(_.toArray(node.attributes), function(attr){
|
||||||
|
if(attr.nodeName.indexOf('data-oe-') === 0) {
|
||||||
|
node.removeAttribute(attr.nodeName)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
remove_oe_attributes(node.childNodes);
|
||||||
|
});
|
||||||
|
};
|
||||||
function remove_mundane_nodes(nodes) {
|
function remove_mundane_nodes(nodes) {
|
||||||
if (!nodes || !nodes.length) { return []; }
|
if (!nodes || !nodes.length) { return []; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue