Skip to content
Snippets Groups Projects
Commit e683da1d authored by srosse's avatar srosse
Browse files
parents f65eb240 a7b91dfd
No related branches found
No related tags found
No related merge requests found
...@@ -52,7 +52,9 @@ import org.olat.modules.ceditor.ui.component.ContentEditorContainerComponent; ...@@ -52,7 +52,9 @@ import org.olat.modules.ceditor.ui.component.ContentEditorContainerComponent;
import org.olat.modules.ceditor.ui.component.ContentEditorFragment; import org.olat.modules.ceditor.ui.component.ContentEditorFragment;
import org.olat.modules.ceditor.ui.component.ContentEditorFragmentComponent; import org.olat.modules.ceditor.ui.component.ContentEditorFragmentComponent;
import org.olat.modules.ceditor.ui.event.AddElementEvent; import org.olat.modules.ceditor.ui.event.AddElementEvent;
import org.olat.modules.ceditor.ui.event.ChangePartEvent;
import org.olat.modules.ceditor.ui.event.CloseElementsEvent; import org.olat.modules.ceditor.ui.event.CloseElementsEvent;
import org.olat.modules.ceditor.ui.event.ClosePartEvent;
import org.olat.modules.ceditor.ui.event.DeleteElementEvent; import org.olat.modules.ceditor.ui.event.DeleteElementEvent;
import org.olat.modules.ceditor.ui.event.DropToEditorEvent; import org.olat.modules.ceditor.ui.event.DropToEditorEvent;
import org.olat.modules.ceditor.ui.event.DropToPageElementEvent; import org.olat.modules.ceditor.ui.event.DropToPageElementEvent;
...@@ -171,6 +173,12 @@ public class PageEditorV2Controller extends BasicController { ...@@ -171,6 +173,12 @@ public class PageEditorV2Controller extends BasicController {
cleanUp(); cleanUp();
} else if(cmc == source) { } else if(cmc == source) {
cleanUp(); cleanUp();
} else if(event instanceof ChangePartEvent) {
ChangePartEvent cpe = (ChangePartEvent)event;
doSaveElement(ureq, cpe.getElement());
} else if(event instanceof ClosePartEvent) {
ClosePartEvent cpe = (ClosePartEvent)event;
doCloseEditor(ureq, cpe.getElement());
} }
super.event(ureq, source, event); super.event(ureq, source, event);
} }
...@@ -211,6 +219,18 @@ public class PageEditorV2Controller extends BasicController { ...@@ -211,6 +219,18 @@ public class PageEditorV2Controller extends BasicController {
} }
} }
private void doCloseEditor(UserRequest ureq, PageElement element) {
new ComponentTraverser((comp, uureq) -> {
if(comp instanceof ContentEditorFragment) {
ContentEditorFragment elementCmp = (ContentEditorFragment)comp;
if(elementCmp.getElementId().equals(element.getId()) && elementCmp.isEditMode()) {
elementCmp.setEditMode(false);
}
}
return true;
}, editorCmp, false).visitAll(ureq);
}
private void doCloseEditionEvent(UserRequest ureq, String elementId) { private void doCloseEditionEvent(UserRequest ureq, String elementId) {
new ComponentTraverser((comp, uureq) -> { new ComponentTraverser((comp, uureq) -> {
if(comp instanceof ContentEditorFragment) { if(comp instanceof ContentEditorFragment) {
...@@ -361,6 +381,11 @@ public class PageEditorV2Controller extends BasicController { ...@@ -361,6 +381,11 @@ public class PageEditorV2Controller extends BasicController {
return fragment; return fragment;
} }
private void doSaveElement(UserRequest ureq, PageElement element) {
doCloseEditor(ureq, element);
fireEvent(ureq, Event.CHANGED_EVENT);
}
private void doSaveElement(UserRequest ureq, ContentEditorFragment fragment) { private void doSaveElement(UserRequest ureq, ContentEditorFragment fragment) {
fragment.setEditMode(false); fragment.setEditMode(false);
fireEvent(ureq, Event.CHANGED_EVENT); fireEvent(ureq, Event.CHANGED_EVENT);
......
...@@ -56,7 +56,8 @@ public class ContentEditorComponentRenderer extends AbstractContentEditorCompone ...@@ -56,7 +56,8 @@ public class ContentEditorComponentRenderer extends AbstractContentEditorCompone
sb.append("<script>\n") sb.append("<script>\n")
.append("jQuery(function() {\n") .append("jQuery(function() {\n")
.append(" jQuery('#o_c").append(cmp.getDispatchID()).append("').ceditor({\n") .append(" jQuery('#o_c").append(cmp.getDispatchID()).append("').ceditor({\n")
.append(" componentUrl: '").append(renderer.getUrlBuilder().getJavascriptURI()).append("'\n") .append(" componentUrl: '").append(renderer.getUrlBuilder().getJavascriptURI()).append("',\n")
.append(" csrfToken: '").append(renderer.getCsrfToken()).append("'\n")
.append(" });\n") .append(" });\n")
.append("});\n") .append("});\n")
.append("</script>"); .append("</script>");
......
...@@ -37,7 +37,7 @@ import org.olat.modules.ceditor.PageEditorSecurityCallback; ...@@ -37,7 +37,7 @@ import org.olat.modules.ceditor.PageEditorSecurityCallback;
import org.olat.modules.ceditor.PageElement; import org.olat.modules.ceditor.PageElement;
import org.olat.modules.ceditor.PageElementHandler; import org.olat.modules.ceditor.PageElementHandler;
import org.olat.modules.ceditor.ui.FullEditorSecurityCallback; import org.olat.modules.ceditor.ui.FullEditorSecurityCallback;
import org.olat.modules.ceditor.ui.PageEditorController; import org.olat.modules.ceditor.ui.PageEditorV2Controller;
import org.olat.modules.forms.handler.ContainerHandler; import org.olat.modules.forms.handler.ContainerHandler;
import org.olat.modules.forms.handler.DisclaimerHandler; import org.olat.modules.forms.handler.DisclaimerHandler;
import org.olat.modules.forms.handler.FileUploadHandler; import org.olat.modules.forms.handler.FileUploadHandler;
...@@ -73,7 +73,7 @@ public class EvaluationFormEditorController extends BasicController { ...@@ -73,7 +73,7 @@ public class EvaluationFormEditorController extends BasicController {
private final boolean restrictedEdit; private final boolean restrictedEdit;
private final boolean restrictedEditWeight; private final boolean restrictedEditWeight;
private PageEditorController pageEditCtrl; private PageEditorV2Controller pageEditCtrl;
public EvaluationFormEditorController(UserRequest ureq, WindowControl wControl, File formFile, DataStorage storage, public EvaluationFormEditorController(UserRequest ureq, WindowControl wControl, File formFile, DataStorage storage,
boolean restrictedEdit, boolean restrictedEditWeight) { boolean restrictedEdit, boolean restrictedEditWeight) {
...@@ -92,7 +92,7 @@ public class EvaluationFormEditorController extends BasicController { ...@@ -92,7 +92,7 @@ public class EvaluationFormEditorController extends BasicController {
mainVC = createVelocityContainer("editor"); mainVC = createVelocityContainer("editor");
PageEditorSecurityCallback secCallback = restrictedEdit ? new RestrictedEditorSecurityCallback() : new FullEditorSecurityCallback(); PageEditorSecurityCallback secCallback = restrictedEdit ? new RestrictedEditorSecurityCallback() : new FullEditorSecurityCallback();
pageEditCtrl = new PageEditorController(ureq, getWindowControl(), new FormPageEditorProvider(), secCallback, getTranslator()); pageEditCtrl = new PageEditorV2Controller(ureq, getWindowControl(), new FormPageEditorProvider(), secCallback, getTranslator());
listenTo(pageEditCtrl); listenTo(pageEditCtrl);
mainVC.put("page", pageEditCtrl.getInitialComponent()); mainVC.put("page", pageEditCtrl.getInitialComponent());
......
...@@ -28,21 +28,23 @@ ...@@ -28,21 +28,23 @@
if(typeof editor === "undefined") { if(typeof editor === "undefined") {
editor = new ContentEditor(this.get(0), options); editor = new ContentEditor(this.get(0), options);
this.data("data-oo-ceditor", editor); this.data("data-oo-ceditor", editor);
jQuery('#o_main_wrapper').css('z-index', 5);
} else {// if the same DOM element exists } else {// if the same DOM element exists
editor.initWindowListener(); editor.initWindowListener(editor.settings);
editor.initInteractJs(editor.settings);
} }
initInteractJs();
return editor; return editor;
}; };
var ContentEditor = function(container, params) { var ContentEditor = function(container, params) {
this.settings = $.extend({ this.settings = $.extend({
componentUrl: '' componentUrl: '',
csrfToken: ''
}, params); }, params);
initWindowListener(); initWindowListener(this.settings);
this.container = container; this.container = container;
initInteractJs(); initInteractJs(this.settings);
}; };
function isTop(target, y) { function isTop(target, y) {
...@@ -64,8 +66,9 @@ ...@@ -64,8 +66,9 @@
return parseInt(style.height) + parseInt(style.marginTop) + parseInt(style.marginBottom); return parseInt(style.height) + parseInt(style.marginTop) + parseInt(style.marginBottom);
} }
function initInteractJs() { function initInteractJs(settings) {
var position = { x: 0, y: 0 } var position = { x: 0, y: 0 };
var $settings = settings;
function setPositionClass(target, top) { function setPositionClass(target, top) {
if(top) { if(top) {
...@@ -114,7 +117,7 @@ ...@@ -114,7 +117,7 @@
setPositionClass(event.target, top); setPositionClass(event.target, top);
}, },
drop: function(event) { drop: function(event) {
drop(event, event.target, event.relatedTarget); drop($settings, event, event.target, event.relatedTarget);
} }
}, },
checker: function (dragEvent, event, dropped, dropzone, dropElement, draggable, draggableElement) { checker: function (dragEvent, event, dropped, dropzone, dropElement, draggable, draggableElement) {
...@@ -133,7 +136,7 @@ ...@@ -133,7 +136,7 @@
return null; return null;
} }
function initWindowListener() { function initWindowListener(settings) {
if(o_info.contentEditorWindowListener === undefined || o_info.contentEditorWindowListener == null) { if(o_info.contentEditorWindowListener === undefined || o_info.contentEditorWindowListener == null) {
o_info.contentEditorWindowListener = function(e) { o_info.contentEditorWindowListener = function(e) {
var componentUrl = jQuery(".o_page_content_editor").data("oo-content-editor-url"); var componentUrl = jQuery(".o_page_content_editor").data("oo-content-editor-url");
...@@ -159,9 +162,9 @@ ...@@ -159,9 +162,9 @@
if(parts.length == 1) { if(parts.length == 1) {
var element = jQuery(parts.get(0)); var element = jQuery(parts.get(0));
var elementUrl = element.data("oo-content-editor-url"); var elementUrl = element.data("oo-content-editor-url");
o_XHREvent(elementUrl, false, false, 'cid', 'edit_fragment', 'fragment', element.data('oo-page-fragment')); o_XHREvent(elementUrl, false, false, '_csrf', settings.csrfToken, 'cid', 'edit_fragment', 'fragment', element.data('oo-page-fragment'));
} else if(!edited) { } else if(!edited) {
o_XHREvent(componentUrl, false, false, 'cid', 'close_edit_fragment'); o_XHREvent(componentUrl, false, false, '_csrf', settings.csrfToken, 'cid', 'close_edit_fragment');
} }
} }
} }
...@@ -170,7 +173,7 @@ ...@@ -170,7 +173,7 @@
} }
} }
function drop(event, target, source) { function drop(settings, event, target, source) {
var draggedId = jQuery(source).data('oo-page-fragment'); var draggedId = jQuery(source).data('oo-page-fragment');
var slotId = null; var slotId = null;
...@@ -193,7 +196,7 @@ ...@@ -193,7 +196,7 @@
componentUrl = jQuery(target).closest(".o_page_content_editor") componentUrl = jQuery(target).closest(".o_page_content_editor")
} }
o_XHREvent(componentUrl, false, false, "cid", "drop_fragment", "fragment", targetId, "dragged", draggedId, "source", draggedId, "target", targetId, "container", containerId, "slot", slotId, "position", position); o_XHREvent(componentUrl, false, false, "_csrf", settings.csrfToken, "cid", "drop_fragment", "fragment", targetId, "dragged", draggedId, "source", draggedId, "target", targetId, "container", containerId, "slot", slotId, "position", position);
} }
}(jQuery)); }(jQuery));
\ No newline at end of file
...@@ -308,14 +308,17 @@ div.o_page_content_editor .gu-mirror, .o_page_content_editor .gu-transit { ...@@ -308,14 +308,17 @@ div.o_page_content_editor .gu-mirror, .o_page_content_editor .gu-transit {
content: ''; content: '';
} }
.o_page_part.oo-dragging { .oo-dragging {
opacity: 0.4; z-index: 4;
background-color: white; }
.o_page_part.oo-dragging, .o_page_fragment_edit.oo-dragging .o_page_part {
opacity: 0.6;
background-color: rgba(255, 255, 255, 0.6);
border: $o-panel-placeholder-border-width dotted $o-editor-drag-accepted-color; border: $o-panel-placeholder-border-width dotted $o-editor-drag-accepted-color;
box-shadow: 0px 0px 20px #aaa; box-shadow: 0px 0px 20px #aaa;
} }
.gu-transit { .gu-transit {
border: $o-panel-placeholder-border-width dotted $o-editor-drag-accepted-color; border: $o-panel-placeholder-border-width dotted $o-editor-drag-accepted-color;
opacity: 0.4; opacity: 0.4;
......
source diff could not be displayed: it is too large. Options to address this: view the blob.
source diff could not be displayed: it is too large. Options to address this: view the blob.
source diff could not be displayed: it is too large. Options to address this: view the blob.
source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment