From 72d44a742d0e8eca5d9d655d732d7697a289b171 Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Thu, 4 Feb 2021 13:14:28 +0100
Subject: [PATCH] OO-5273: Release OnlyOffice edit license when window is
 closed

---
 .../onlyoffice/manager/OnlyOfficeServiceImpl.java    |  2 +-
 .../onlyoffice/ui/OnlyOfficeEditorController.java    | 12 +++++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/manager/OnlyOfficeServiceImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/manager/OnlyOfficeServiceImpl.java
index b1aba56d3dc..ac72c676ce8 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/manager/OnlyOfficeServiceImpl.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/manager/OnlyOfficeServiceImpl.java
@@ -293,7 +293,7 @@ public class OnlyOfficeServiceImpl implements OnlyOfficeService {
 		if (licenseEdit.intValue() <= 0) return false;
 		
 		Long accessCount = documentEditorServie.getAccessCount(OnlyOfficeEditor.TYPE, Mode.EDIT);
-		return accessCount < licenseEdit.intValue();
+		return accessCount <= licenseEdit.intValue();
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/ui/OnlyOfficeEditorController.java b/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/ui/OnlyOfficeEditorController.java
index a838c432e4e..13768de4941 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/ui/OnlyOfficeEditorController.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/onlyoffice/ui/OnlyOfficeEditorController.java
@@ -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.gui.UserRequest;
 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.control.Event;
 import org.olat.core.gui.control.WindowControl;
@@ -65,6 +66,8 @@ public class OnlyOfficeEditorController extends BasicController {
 			final DocEditorConfigs configs, Access runAccess) {
 		super(ureq, wControl);
 		access = runAccess;
+
+		wControl.getWindowBackOffice().getWindow().addListener(this);
 		
 		if (Mode.EDIT == access.getMode() && !onlyOfficeService.isEditLicenseAvailable()) {
 			access = docEditorService.updateMode(access, Mode.VIEW);
@@ -111,11 +114,14 @@ public class OnlyOfficeEditorController extends BasicController {
 		
 		putInitialPanel(mainVC);
 	}
-
+	
 	@Override
-	protected void event(UserRequest ureq, Component source, Event event) {
-		//
+	public void event(UserRequest ureq, Component source, Event event) {
+		if(event == Window.CLOSE_WINDOW) {
+			deleteAccess();
+		}
 	}
+	
 
 	@Override
 	protected void doDispose() {
-- 
GitLab