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 05fbfbc601094204c3e5fb52a8398f507e4ca55b..46e4587bceb0cca1b51d3cf7eaa1960ae446c7e0 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 4afe78379d7c6dbdb3f0440a120e0073b6a82b98..f2f3f3a5dc85b8102b3dfffbe29c6f3a3ca1a28a 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 406a81531ef353bdd1ef82e870fea5faf3685219..775001fa4e66fc4067e66b073efe06ca7b809129 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 9143c50ddc8da51f309b37239c646882c71ac1a5..6974a29186e507c451a4a59837757413e48ccda8 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.