From 904fa04e697d4ded30173c82b65246029e12dff9 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Mon, 21 Sep 2020 13:30:44 +0200 Subject: [PATCH] OO-4878: show a message if the lock cannot be take over --- .../htmleditor/HTMLEditorController.java | 32 +++++++++++++------ .../_i18n/LocalStrings_de.properties | 1 + .../_i18n/LocalStrings_en.properties | 1 + .../org/olat/core/util/coordinate/Locker.java | 19 ----------- 4 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java index 05fbfbc6010..46e4587bceb 100644 --- a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java +++ b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java @@ -218,18 +218,12 @@ public class HTMLEditorController extends FormBasicController implements Activat lock = CoordinatorManager.getInstance().getCoordinator().getLocker() .acquireLock(lockResourceable, getIdentity(), lockToken, getWindow()); - VelocityContainer vc = (VelocityContainer) flc.getComponent(); - if (!lock.isSuccess()) { - vc.contextPut("locked", Boolean.TRUE); - String fullname = userManager.getUserDisplayName(lock.getOwner()); - vc.contextPut("lockOwner", fullname); - vc.contextPut("lockOwnerSameUser", Boolean.valueOf(lock.isDifferentWindows())); + if (lock.isSuccess()) { + unsetLockError(); + } else { + setLockedError(lock); editable = false; return; - } else { - vc.contextPut("locked", Boolean.FALSE); - vc.contextRemove("lockOwner"); - vc.contextRemove("lockOwnerSameUser"); } } // Parse the content of the page @@ -240,6 +234,20 @@ public class HTMLEditorController extends FormBasicController implements Activat } } + private void unsetLockError() { + flc.contextPut("locked", Boolean.FALSE); + flc.contextRemove("lockOwner"); + flc.contextRemove("lockOwnerSameUser"); + flc.setDirty(true); + } + + private void setLockedError(LockResult lockResult) { + flc.contextPut("locked", Boolean.TRUE); + String fullname = userManager.getUserDisplayName(lockResult.getOwner()); + flc.contextPut("lockOwner", fullname); + flc.contextPut("lockOwnerSameUser", Boolean.valueOf(lockResult.isDifferentWindows())); + } + public Object getUserObject() { return userObject; } @@ -269,6 +277,10 @@ public class HTMLEditorController extends FormBasicController implements Activat .acquireLock(lockResourceable, getIdentity(), lockToken, getWindow()); if(reacquiredLock.isSuccess()) { lock = reacquiredLock; + unsetLockError(); + } else { + setLockedError(reacquiredLock); + editable = false; } } } diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_de.properties index 4afe78379d7..f2f3f3a5dc8 100644 --- a/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_de.properties @@ -1,4 +1,5 @@ #Fri Jun 19 17:34:51 CEST 2009 +acquireownbuttontext=Ubernehmen und editieren error.lock.lost=Sie haben den Lock verloren. error.pageeditedby=Die Seite wird zurzeit von Benutzer {0} bearbeitet. Versuchen Sie es sp\u00E4ter noch einmal. lastModified=Zuletzt ge\u00E4ndert diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_en.properties index 406a81531ef..775001fa4e6 100644 --- a/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/editor/htmleditor/_i18n/LocalStrings_en.properties @@ -1,4 +1,5 @@ #Fri Jan 22 19:30:49 CET 2010 +acquireownbuttontext=Take over and edit error.lock.lost=You have lost the lock. error.pageeditedby=This page is currently edited by user {0}. Please try again later. lastModified=Last modified diff --git a/src/main/java/org/olat/core/util/coordinate/Locker.java b/src/main/java/org/olat/core/util/coordinate/Locker.java index 9143c50ddc8..6974a29186e 100644 --- a/src/main/java/org/olat/core/util/coordinate/Locker.java +++ b/src/main/java/org/olat/core/util/coordinate/Locker.java @@ -83,25 +83,6 @@ public interface Locker { * @return */ public LockEntry getLockEntry(OLATResourceable ores, String locksubkey); - - /** - * - * acquires a persistent lock. - * - * @param ores - * @param ident - * @param locksubkey may not be longer than 30 chars - * @return the LockResult of this lock trial. - */ - //public LockResult aquirePersistentLock(OLATResourceable ores, Identity ident, String locksubkey); - - - /** - * releases a persistent lock. - * - * @param le the LockResult which stems from the lock acquired previously - */ - //public void releasePersistentLock(LockResult le); /** * for admin purposes only. -- GitLab