Skip to content
Snippets Groups Projects
Commit 9f58e5a2 authored by srosse's avatar srosse
Browse files

no-jira: window fire close window event, use it for OnlyOffice editor

parent 42c539ce
No related branches found
No related tags found
No related merge requests found
...@@ -30,6 +30,7 @@ import org.olat.core.commons.services.doceditor.onlyoffice.OnlyOfficeService; ...@@ -30,6 +30,7 @@ import org.olat.core.commons.services.doceditor.onlyoffice.OnlyOfficeService;
import org.olat.core.commons.services.vfs.VFSMetadata; import org.olat.core.commons.services.vfs.VFSMetadata;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component; import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.Window;
import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Event; import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
...@@ -66,7 +67,9 @@ public class OnlyOfficeEditorController extends BasicController { ...@@ -66,7 +67,9 @@ public class OnlyOfficeEditorController extends BasicController {
final DocEditorConfigs configs, Access runAccess) { final DocEditorConfigs configs, Access runAccess) {
super(ureq, wControl); super(ureq, wControl);
access = runAccess; access = runAccess;
wControl.getWindowBackOffice().getWindow().addListener(this);
if (Mode.EDIT == access.getMode() && !onlyOfficeService.isEditLicenseAvailable()) { if (Mode.EDIT == access.getMode() && !onlyOfficeService.isEditLicenseAvailable()) {
access = docEditorService.updateMode(access, Mode.VIEW); access = docEditorService.updateMode(access, Mode.VIEW);
showWarning("editor.warning.no.edit.license"); showWarning("editor.warning.no.edit.license");
...@@ -113,11 +116,18 @@ public class OnlyOfficeEditorController extends BasicController { ...@@ -113,11 +116,18 @@ public class OnlyOfficeEditorController extends BasicController {
@Override @Override
protected void event(UserRequest ureq, Component source, Event event) { protected void event(UserRequest ureq, Component source, Event event) {
// if(event == Window.CLOSE_WINDOW) {
deleteAccess();
}
} }
@Override @Override
protected void doDispose() { protected void doDispose() {
deleteAccess();
getWindowControl().getWindowBackOffice().getWindow().removeListener(this);
}
private void deleteAccess() {
if (access != null) { if (access != null) {
log.info("Document (key={}) closed with ONLYOFFICE ({}) by {}", openVfsMetadataKey, openMode, log.info("Document (key={}) closed with ONLYOFFICE ({}) by {}", openVfsMetadataKey, openMode,
getIdentity()); getIdentity());
......
...@@ -145,6 +145,8 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { ...@@ -145,6 +145,8 @@ public class Window extends AbstractComponent implements CustomCSSDelegate {
public static final Event AFTER_VALIDATING = new Event("before_validate"); public static final Event AFTER_VALIDATING = new Event("before_validate");
public static final Event CLOSE_WINDOW = new Event("close-window");
/** /**
* fired just before the targetcomponent.dispatch takes places * fired just before the targetcomponent.dispatch takes places
...@@ -306,6 +308,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { ...@@ -306,6 +308,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate {
/** /**
* @see org.olat.core.gui.components.Component#dispatchRequest(org.olat.core.gui.UserRequest) * @see org.olat.core.gui.components.Component#dispatchRequest(org.olat.core.gui.UserRequest)
*/ */
@Override
protected void doDispatchRequest(UserRequest ureq) { protected void doDispatchRequest(UserRequest ureq) {
dispatchRequest(ureq, false); dispatchRequest(ureq, false);
} }
...@@ -320,8 +323,9 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { ...@@ -320,8 +323,9 @@ public class Window extends AbstractComponent implements CustomCSSDelegate {
final String timestampID = ureq.getTimestampID() == null ? "1" : ureq.getTimestampID(); final String timestampID = ureq.getTimestampID() == null ? "1" : ureq.getTimestampID();
final String componentID = ureq.getComponentID(); final String componentID = ureq.getComponentID();
final boolean closeWindow = "close-window".equals(ureq.getParameter("cid")); final boolean closeWindow = "close-window".equals(ureq.getParameter("cid"));
if(!closeWindow) {
setMarkToBeRemoved(false); setMarkToBeRemoved(false);
}
// case windowId timestamp componentId // case windowId timestamp componentId
// -------------------------------------------- // --------------------------------------------
...@@ -432,9 +436,10 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { ...@@ -432,9 +436,10 @@ public class Window extends AbstractComponent implements CustomCSSDelegate {
forceReload = dispatchResult.isForceReload(); forceReload = dispatchResult.isForceReload();
if (isDebugLog) { if (isDebugLog) {
long durationAfterDoDispatchToComponent = System.currentTimeMillis() - debug_start; long durationAfterDoDispatchToComponent = System.currentTimeMillis() - debug_start;
log.debug("Perf-Test: Window durationAfterDoDispatchToComponent=" + durationAfterDoDispatchToComponent); log.debug("Perf-Test: Window durationAfterDoDispatchToComponent={}", durationAfterDoDispatchToComponent);
} }
if(closeWindow) { if(closeWindow) {
fireEvent(ureq, CLOSE_WINDOW);
ureq.getHttpResp().setStatus(HttpServletResponse.SC_NOT_MODIFIED); ureq.getHttpResp().setStatus(HttpServletResponse.SC_NOT_MODIFIED);
return; return;
} }
...@@ -649,6 +654,9 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { ...@@ -649,6 +654,9 @@ public class Window extends AbstractComponent implements CustomCSSDelegate {
inline = true; inline = true;
validate = true; validate = true;
wbackofficeImpl.fireCycleEvent(BEFORE_RENDER_ONLY); wbackofficeImpl.fireCycleEvent(BEFORE_RENDER_ONLY);
if(closeWindow) {
fireEvent(ureq, CLOSE_WINDOW);
}
} else if (validatingCausedRerendering && timestampID.equals("-1")) { } else if (validatingCausedRerendering && timestampID.equals("-1")) {
// the first request after the 302 redirect cause by a component validation // the first request after the 302 redirect cause by a component validation
// -> just rerender, but clear the flag for further async media requests // -> just rerender, but clear the flag for further async media requests
...@@ -722,6 +730,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { ...@@ -722,6 +730,7 @@ public class Window extends AbstractComponent implements CustomCSSDelegate {
debugMsg.append("disp_comp:").append(diff).append(LOG_SEPARATOR); debugMsg.append("disp_comp:").append(diff).append(LOG_SEPARATOR);
} }
if(closeWindow) { if(closeWindow) {
fireEvent(ureq, CLOSE_WINDOW);
ureq.getHttpResp().setStatus(HttpServletResponse.SC_NOT_MODIFIED); ureq.getHttpResp().setStatus(HttpServletResponse.SC_NOT_MODIFIED);
return; return;
} }
......
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