diff --git a/pom.xml b/pom.xml index 394019085d6dac160bff4836ab398fef7215882d..9dfd357e5a12693eb76b3d8b4df234e13a0a3256 100644 --- a/pom.xml +++ b/pom.xml @@ -154,6 +154,8 @@ <exclude>**/fullcalendar/*</exclude> <exclude>**/paella/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> + <exclude>**/openolat/jquery.contenteditor.v2.js</exclude> + <exclude>**/interactjs/*</exclude> </excludes> </configuration> </execution> @@ -190,6 +192,8 @@ <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/paella/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> + <exclude>**/openolat/jquery.contenteditor.v2.js</exclude> + <exclude>**/interactjs/*</exclude> </excludes> </configuration> </execution> @@ -315,6 +319,8 @@ <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/paella/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> + <exclude>**/openolat/jquery.contenteditor.v2.js</exclude> + <exclude>**/interactjs/*</exclude> </excludes> </configuration> </execution> @@ -355,6 +361,8 @@ <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/paella/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> + <exclude>**/openolat/jquery.contenteditor.v2.js</exclude> + <exclude>**/interactjs/*</exclude> </excludes> </configuration> </execution> diff --git a/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorComponent.java b/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorComponent.java index 5e23ed658de37f06010828c50ada3c810320fd02..f43f31f3bd145a5b21a0e9c6e47b92c7710f302d 100644 --- a/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorComponent.java +++ b/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorComponent.java @@ -85,13 +85,15 @@ public class ContentEditorComponent extends FormBaseComponentImpl implements Com public void setRootComponents(List<ContentEditorFragment> components) { rootComponents = new ArrayList<>(components); for(ContentEditorFragment component:components) { - component.setTranslator(getTranslator()); + if(getTranslator() != null) { + component.setTranslator(getTranslator()); + } } setDirty(true); } public void addRootComponent(ContentEditorFragment component) { - if(rootComponents.contains(component)) return; + if(rootComponents.contains(component) || !checkAdd(component)) return; rootComponents.add(component); setDirty(true); @@ -101,6 +103,8 @@ public class ContentEditorComponent extends FormBaseComponentImpl implements Com } public void addRootComponent(int index, ContentEditorFragment component) { + if(!checkAdd(component)) return; + if(index >= 0 && index < rootComponents.size()) { rootComponents.add(index, component); } else { @@ -112,6 +116,14 @@ public class ContentEditorComponent extends FormBaseComponentImpl implements Com } } + private boolean checkAdd(ContentEditorFragment componentToAdd) { + if(componentToAdd == this) { + setDirty(true);// add to itself forbidden + return false; + } + return true; + } + public boolean removeRootComponent(ContentEditorFragment component) { boolean removed = rootComponents.remove(component); if(removed) { diff --git a/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorContainerComponent.java b/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorContainerComponent.java index d268c1549e48bffa83d110b43f02acf4aa0688e7..ec487f492fc4d14fdae88b6a92f05b1a96ea08fc 100644 --- a/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorContainerComponent.java +++ b/src/main/java/org/olat/modules/ceditor/ui/component/ContentEditorContainerComponent.java @@ -177,6 +177,8 @@ public class ContentEditorContainerComponent extends FormBaseComponentImpl imple } public void setElementAt(ContentEditorFragment component, int column, String sibling) { + if(!checkAdd(component)) return; + editorPart.setElementAt(component.getElementId(), column, sibling); addComponent(component); setDirty(true); @@ -199,11 +201,22 @@ public class ContentEditorContainerComponent extends FormBaseComponentImpl imple } public void addElement(ContentEditorFragment newComponent, ContentEditorFragment collocator, PageElementTarget target) { + if(!checkAdd(newComponent)) return; + editorPart.addElement(newComponent.getElementId(), collocator.getElementId(), target); addComponent(newComponent); setDirty(true); } + private boolean checkAdd(ContentEditorFragment componentToAdd) { + if(componentToAdd == this) { + log.warn("Add container to itself: {}", componentToAdd); + setDirty(true); + return false; + } + return true; + } + private void doDropFragment(UserRequest ureq) { String sourceId = ureq.getParameter("source"); String slotId = ureq.getParameter("slot"); @@ -253,7 +266,8 @@ public class ContentEditorContainerComponent extends FormBaseComponentImpl imple } public void addComponent(ContentEditorFragment fragmentCmp) { - if(fragmentCmp == null) return; + if(fragmentCmp == null || components.contains(fragmentCmp)) return; + components.add(fragmentCmp); if(getTranslator() != null) { fragmentCmp.setTranslator(getTranslator());