[FIX] web_editor, website: allow to detect indirect clones
When cloning a snippet section thanks to the editor, the associated snippet options' `on_clone` methods are called. Now these methods receive a new argument `options`. The option this commit introduces is the `isCurrent` one. It allows the method to know if the snippet section it is associated to is the one that was cloned or if it is a child of the one that was cloned. This is useful to solve a known bug when cloning elements which have bootstrap columns: - When one column is cloned we want it to lose its col-*-offset-* classes so that the offset is not duplicated (only the column). - When a container with column children is cloned we do not want these column' offsets to be removed (we want the whole cloned container to be the same).
This commit is contained in:
@@ -1010,7 +1010,9 @@ data.Editor = Class.extend({
|
||||
this.$target.after($clone);
|
||||
this.buildingBlock.call_for_all_snippets($clone, function (editor, $snippet) {
|
||||
for (var i in editor.styles) {
|
||||
editor.styles[i].on_clone($snippet);
|
||||
editor.styles[i].on_clone($snippet, {
|
||||
isCurrent: ($snippet.is($clone)),
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
|
||||
@@ -265,9 +265,13 @@ options.registry["margin-x"] = options.registry.marginAndResize.extend({
|
||||
|
||||
return this.grid;
|
||||
},
|
||||
on_clone: function ($clone) {
|
||||
var _class = $clone.attr("class").replace(/\s*(col-lg-offset-|col-md-offset-)([0-9-]+)/g, '');
|
||||
$clone.attr("class", _class);
|
||||
on_clone: function ($clone, options) {
|
||||
// Below condition is added to remove offset of target element only
|
||||
// and not its children to avoid design alteration of a container / block.
|
||||
if (options.isCurrent) {
|
||||
var _class = $clone.attr("class").replace(/\s*(col-lg-offset-|col-md-offset-)([0-9-]+)/g, '');
|
||||
$clone.attr("class", _class);
|
||||
}
|
||||
return false;
|
||||
},
|
||||
on_resize: function (compass, beginClass, current) {
|
||||
|
||||
Reference in New Issue
Block a user