From 3eb1284cbab0f5ccb3742608a7e25bf5e14246ae Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 16 Jul 2014 09:40:55 +0200 Subject: [PATCH] OO-665: add a specific security callback for reflexion to be more precise --- .../flexible/impl/_content/form_vertical.html | 31 ++++++++++++------- .../olat/portfolio/EPSecurityCallback.java | 2 ++ .../portfolio/EPSecurityCallbackFactory.java | 14 ++++++--- .../portfolio/EPSecurityCallbackImpl.java | 12 +++++-- .../portfolio/EPSecurityCallbackOwner.java | 5 +++ .../edit/EPReflexionWrapperController.java | 11 +++---- .../EPArtefactViewOptionsLinkController.java | 4 +-- .../EPMultipleArtefactsAsTableController.java | 2 +- .../ui/structel/_content/mapview.html | 2 +- 9 files changed, 54 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html index 2e0b27339c3..4f3c396e1dd 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html @@ -1,15 +1,24 @@ <fieldset #if(!$!f.domReplacementWrapperRequired) id="$r.getCId()" #end class="o_form form #if ($off_css_class) $off_css_class #end $f.getContainerCssClass()" role="form"> -#if ($off_title || $off_chelp_package) - <legend> - #if ($off_chelp_package) - $r.contextHelpWithWrapper("$off_chelp_package","$off_chelp_page","$off_chelp_hover") - #end - #if ($off_icon) - <i class="$off_icon"> </i> - #end - $!off_title -</legend> -#end +#if ($off_title && $off_chelp_package) + <legend> + #if ($off_chelp_package) + $r.contextHelpWithWrapper("$off_chelp_package","$off_chelp_page","$off_chelp_hover") + #end + #if ($off_icon) + <i class="$off_icon"> </i> + #end + $!off_title + </legend> +#elseif ($off_title) + <legend> + #if ($off_icon) + <i class="$off_icon"> </i> + #end + $!off_title + </legend> +#elseif ($off_chelp_package) + <div class="clearfix">$r.contextHelpWithWrapper("$off_chelp_package","$off_chelp_page","$off_chelp_hover")</div> +#end #if ($off_desc) <div class="o_desc">$off_desc</div> #end #if ($off_warn) <div class="o_warning">$off_warn</div> #end diff --git a/src/main/java/org/olat/portfolio/EPSecurityCallback.java b/src/main/java/org/olat/portfolio/EPSecurityCallback.java index 9b2e2ac9594..1de04d4562a 100644 --- a/src/main/java/org/olat/portfolio/EPSecurityCallback.java +++ b/src/main/java/org/olat/portfolio/EPSecurityCallback.java @@ -37,6 +37,8 @@ public interface EPSecurityCallback { public boolean canEditStructure(); + public boolean canEditReflexion(); + public boolean canShareMap(); public boolean canAddArtefact(); diff --git a/src/main/java/org/olat/portfolio/EPSecurityCallbackFactory.java b/src/main/java/org/olat/portfolio/EPSecurityCallbackFactory.java index 7fbd350a2fe..889ce46bfe7 100644 --- a/src/main/java/org/olat/portfolio/EPSecurityCallbackFactory.java +++ b/src/main/java/org/olat/portfolio/EPSecurityCallbackFactory.java @@ -57,11 +57,12 @@ public class EPSecurityCallbackFactory { public static boolean isLockNeeded(EPSecurityCallback secCallback) { return secCallback.canAddArtefact() || secCallback.canAddPage() || secCallback.canAddStructure() - || secCallback.canEditStructure(); + || secCallback.canEditStructure() || secCallback.canEditReflexion(); } public static EPSecurityCallback updateAfterFailedLock(EPSecurityCallback secCallback) { boolean canEditStructure = false; + boolean canEditReflexion = false; boolean canShare = secCallback.canShareMap(); boolean canAddArtefact = false; boolean canRemoveArtefactFromStruct = false; @@ -73,7 +74,7 @@ public class EPSecurityCallbackFactory { boolean restrictionsEnabled = secCallback.isRestrictionsEnabled(); boolean isOwner = secCallback.isOwner(); - return new EPSecurityCallbackImpl(canEditStructure, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, + return new EPSecurityCallbackImpl(canEditStructure, canEditReflexion, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, canView, canCommentAndRate, canSubmitAssess, restrictionsEnabled, isOwner); } @@ -89,6 +90,7 @@ public class EPSecurityCallbackFactory { boolean isVisible = ePFMgr.isMapVisible(ureq.getIdentity(), map.getOlatResource()); boolean canEditStructure = isOwner; + boolean canEditReflexion = isOwner; boolean canShare = isOwner; boolean canAddArtefact = isOwner; boolean canRemoveArtefactFromStruct = isOwner; @@ -99,7 +101,7 @@ public class EPSecurityCallbackFactory { boolean canSubmitAssess = false; boolean restrictionsEnabled = false; - return new EPSecurityCallbackImpl(canEditStructure, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, + return new EPSecurityCallbackImpl(canEditStructure, canEditReflexion, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, canView, canCommentAndRate, canSubmitAssess, restrictionsEnabled, isOwner); } @@ -117,6 +119,7 @@ public class EPSecurityCallbackFactory { boolean open = !StructureStatusEnum.CLOSED.equals(map.getStatus()); boolean canEditStructure = false; + boolean canEditReflexion = isOwner && open; boolean canShare = (isOwner || isCoach); boolean canAddArtefact = isOwner && open; boolean canRemoveArtefactFromStruct = isOwner && open; @@ -127,7 +130,7 @@ public class EPSecurityCallbackFactory { boolean canSubmitAssess = isOwner; boolean restrictionsEnabled = true; - return new EPSecurityCallbackImpl(canEditStructure, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, + return new EPSecurityCallbackImpl(canEditStructure, canEditReflexion, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, canView, canCommentAndRate, canSubmitAssess, restrictionsEnabled, isOwner); } @@ -151,6 +154,7 @@ public class EPSecurityCallbackFactory { boolean open = !StructureStatusEnum.CLOSED.equals(map.getStatus()); boolean canEditStructure = (isOwner || isAdmin) && open; + boolean canEditReflexion = (isOwner) && open; boolean canShare = false; boolean canAddArtefact = false; // (isOwner || isAdmin) && open; boolean canRemoveArtefactFromStruct = (isOwner || isAdmin) && open; @@ -161,7 +165,7 @@ public class EPSecurityCallbackFactory { boolean canSubmitAssess = false; boolean restrictionsEnabled = true;//for author - return new EPSecurityCallbackImpl(canEditStructure, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, + return new EPSecurityCallbackImpl(canEditStructure, canEditReflexion, canShare, canAddArtefact, canRemoveArtefactFromStruct, canAddStructure, canAddPage, canView, canCommentAndRate, canSubmitAssess, restrictionsEnabled, isOwner); } } diff --git a/src/main/java/org/olat/portfolio/EPSecurityCallbackImpl.java b/src/main/java/org/olat/portfolio/EPSecurityCallbackImpl.java index ad74cd0fac9..a082358d145 100644 --- a/src/main/java/org/olat/portfolio/EPSecurityCallbackImpl.java +++ b/src/main/java/org/olat/portfolio/EPSecurityCallbackImpl.java @@ -32,6 +32,7 @@ package org.olat.portfolio; public class EPSecurityCallbackImpl implements EPSecurityCallback { private final boolean canEditStructure; + private final boolean canEditReflexion; private final boolean canShare; private final boolean canAddArtefact; private final boolean canRemoveArtefactFromStruct; @@ -45,6 +46,7 @@ public class EPSecurityCallbackImpl implements EPSecurityCallback { public EPSecurityCallbackImpl(boolean canEdit, boolean canView) { this.canEditStructure = canEdit; + this.canEditReflexion = canEdit; this.canShare = canEdit; this.canAddArtefact = canEdit; this.canRemoveArtefactFromStruct = canEdit; @@ -57,9 +59,10 @@ public class EPSecurityCallbackImpl implements EPSecurityCallback { this.isOwner = false;//TODO } - protected EPSecurityCallbackImpl(boolean canEditStructure, boolean canShare, boolean canAddArtefact, boolean canRemoveArtefactFromStruct, boolean canAddStructure, boolean canAddPage, + protected EPSecurityCallbackImpl(boolean canEditStructure, boolean canEditReflexion, boolean canShare, boolean canAddArtefact, boolean canRemoveArtefactFromStruct, boolean canAddStructure, boolean canAddPage, boolean canView, boolean canCommentAndRate, boolean canSubmitAssess, boolean restrictionsEnabled, boolean isOwner) { this.canEditStructure = canEditStructure; + this.canEditReflexion = canEditReflexion; this.canShare = canShare; this.canAddArtefact = canAddArtefact; this.canRemoveArtefactFromStruct = canRemoveArtefactFromStruct; @@ -88,7 +91,12 @@ public class EPSecurityCallbackImpl implements EPSecurityCallback { public boolean canEditStructure() { return canEditStructure; } - + + @Override + public boolean canEditReflexion() { + return canEditReflexion; + } + @Override public boolean canShareMap() { return canShare; diff --git a/src/main/java/org/olat/portfolio/EPSecurityCallbackOwner.java b/src/main/java/org/olat/portfolio/EPSecurityCallbackOwner.java index bf4357b8fd2..c04eef21a7a 100644 --- a/src/main/java/org/olat/portfolio/EPSecurityCallbackOwner.java +++ b/src/main/java/org/olat/portfolio/EPSecurityCallbackOwner.java @@ -60,6 +60,11 @@ public class EPSecurityCallbackOwner implements EPSecurityCallback { return canEdit(); } + @Override + public boolean canEditReflexion() { + return canEdit(); + } + @Override public boolean canShareMap() { return canEdit(); diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/edit/EPReflexionWrapperController.java b/src/main/java/org/olat/portfolio/ui/artefacts/edit/EPReflexionWrapperController.java index 07f95b36e4a..2fcffd2ab49 100644 --- a/src/main/java/org/olat/portfolio/ui/artefacts/edit/EPReflexionWrapperController.java +++ b/src/main/java/org/olat/portfolio/ui/artefacts/edit/EPReflexionWrapperController.java @@ -19,7 +19,6 @@ */ package org.olat.portfolio.ui.artefacts.edit; -import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.control.Controller; @@ -28,7 +27,6 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; -import org.olat.core.gui.translator.Translator; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.portfolio.EPSecurityCallback; @@ -42,6 +40,7 @@ import org.olat.portfolio.ui.artefacts.collect.EPReflexionChangeEvent; import org.olat.portfolio.ui.artefacts.view.EPArtefactViewController; import org.olat.portfolio.ui.artefacts.view.EPReflexionViewController; import org.olat.portfolio.ui.structel.EPStructureChangeEvent; +import org.springframework.beans.factory.annotation.Autowired; /** * Description:<br> @@ -53,7 +52,7 @@ import org.olat.portfolio.ui.structel.EPStructureChangeEvent; * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com */ public class EPReflexionWrapperController extends BasicController { - + @Autowired private EPFrontendManager ePFMgr; private Controller reflexionCtrl; private boolean mapClosed; @@ -65,7 +64,6 @@ public class EPReflexionWrapperController extends BasicController { public EPReflexionWrapperController(UserRequest ureq, WindowControl wControl, EPSecurityCallback secCallback, AbstractArtefact artefact, PortfolioStructure struct) { super(ureq, wControl); - ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager"); if (struct != null && struct.getRoot() instanceof PortfolioStructureMap) { mapClosed = StructureStatusEnum.CLOSED.equals(((PortfolioStructureMap) struct.getRoot()).getStatus()); } else { @@ -74,8 +72,7 @@ public class EPReflexionWrapperController extends BasicController { this.secCallback = secCallback; this.artefact = artefact; this.struct = struct; - Translator pt = Util.createPackageTranslator(EPArtefactViewController.class, ureq.getLocale(), getTranslator()); - setTranslator(pt); + setTranslator(Util.createPackageTranslator(EPArtefactViewController.class, ureq.getLocale(), getTranslator())); init(ureq); } @@ -84,7 +81,7 @@ public class EPReflexionWrapperController extends BasicController { removeAsListenerAndDispose(reflexionCtrl); String title = ""; boolean artClosed = ePFMgr.isArtefactClosed(artefact); - if (mapClosed || !secCallback.canEditStructure() || (artClosed && struct == null)) { + if (mapClosed || !secCallback.canEditReflexion() || (artClosed && struct == null)) { // reflexion cannot be edited, view only! reflexionCtrl = new EPReflexionViewController(ureq, getWindowControl(), artefact, struct); } else { diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewOptionsLinkController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewOptionsLinkController.java index 55a3251a3cf..7af264a341d 100644 --- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewOptionsLinkController.java +++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewOptionsLinkController.java @@ -31,11 +31,11 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.portfolio.EPSecurityCallback; -import org.olat.portfolio.EPUIFactory; import org.olat.portfolio.manager.EPFrontendManager; import org.olat.portfolio.model.artefacts.AbstractArtefact; import org.olat.portfolio.model.structel.PortfolioStructure; import org.olat.portfolio.ui.artefacts.collect.EPCollectStepForm04; +import org.olat.portfolio.ui.artefacts.edit.EPReflexionWrapperController; import org.olat.portfolio.ui.structel.EPStructureChangeEvent; import org.springframework.beans.factory.annotation.Autowired; @@ -104,7 +104,7 @@ public class EPArtefactViewOptionsLinkController extends BasicController { showMoveTree(ureq); } else if (source == reflexionLink) { closeArtefactOptionsCallout(); - reflexionCtrl = EPUIFactory.getReflexionPopup(ureq, getWindowControl(), secCallback, artefact, struct); + reflexionCtrl = new EPReflexionWrapperController(ureq, getWindowControl(), secCallback, artefact, struct); listenTo(reflexionCtrl); } } diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java index 9a1de35fb30..7366ddb4033 100644 --- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java +++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java @@ -159,7 +159,7 @@ public class EPMultipleArtefactsAsTableController extends BasicController implem StaticColumnDescriptor staticDescr; if(!artefactChooseMode) { - if(mapClosed || !secCallback.canEditStructure()) { // change link-description in row, when map is closed or viewed by another person + if(mapClosed || !secCallback.canEditReflexion()) { // change link-description in row, when map is closed or viewed by another person staticDescr = new StaticColumnDescriptor(CMD_REFLEXION, "table.header.reflexion", translate("table.header.view")); } else { staticDescr = new StaticColumnDescriptor(CMD_REFLEXION, "table.header.reflexion", translate("table.row.reflexion")); diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html b/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html index 59b86c055b1..3b5cbe28809 100644 --- a/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html +++ b/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html @@ -26,7 +26,7 @@ <div class="o_struct_submit_assess_btn">$r.render("map.submit.assess")</div> #end #if($closed) - <div class="o_artefact_closed"><span title=" $r.translate("map.is.closed.hint") "> </span></div> + <div><i class="o_icon o_artefact_closed" title=" $r.translate("map.is.closed.hint") "> </i></div> #end </div> <h1>$r.escapeHtml($map.title)</h1> -- GitLab