diff --git a/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java b/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java index 48e542a5c3b825e482234ce39fc4b16d57f510ea..12b8f9c78d010e8608edb3e58af2c231e8f196c5 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java @@ -438,17 +438,22 @@ public class FolderRunController extends BasicController implements Activateable private void enableDisableQuota(UserRequest ureq) { //prevent a timing condition if the user logout while a thumbnail is generated if (ureq.getUserSession() == null || ureq.getUserSession().getRoles() == null) { - folderContainer.contextPut("editQuota", Boolean.FALSE); return; - } else if (!ureq.getUserSession().getRoles().isOLATAdmin()) { - if (!ureq.getUserSession().getRoles().isInstitutionalResourceManager()) { - folderContainer.contextPut("editQuota", Boolean.FALSE); - return; - } + } + + Boolean newEditQuota = Boolean.FALSE; + if (ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isInstitutionalResourceManager()) { + // Only sys admins or institutonal resource managers can have the quota button + Quota q = VFSManager.isTopLevelQuotaContainer(folderComponent.getCurrentContainer()); + newEditQuota = (q == null)? Boolean.FALSE : Boolean.TRUE; } - Quota q = VFSManager.isTopLevelQuotaContainer(folderComponent.getCurrentContainer()); - folderContainer.contextPut("editQuota", (q == null)? Boolean.FALSE : Boolean.TRUE); + Boolean currentEditQuota = (Boolean) folderContainer.contextGet("editQuota"); + // Update the container only if a new value is available or no value is set to + // not make the component dirty after asynchronous thumbnail loading + if (currentEditQuota == null || !currentEditQuota.equals(newEditQuota)) { + folderContainer.contextPut("editQuota", newEditQuota); + } } /**