diff --git a/src/main/java/org/olat/core/commons/contextHelp/ContextHelpLayoutControllerCreator.java b/src/main/java/org/olat/core/commons/contextHelp/ContextHelpLayoutControllerCreator.java index 2552a1c6c8b5ba6e14eeaf0efbfc09cc4c5ecd25..4fefb88dab9d9be90fbe7966461ee896e34dacc4 100644 --- a/src/main/java/org/olat/core/commons/contextHelp/ContextHelpLayoutControllerCreator.java +++ b/src/main/java/org/olat/core/commons/contextHelp/ContextHelpLayoutControllerCreator.java @@ -28,7 +28,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayout; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; @@ -74,12 +74,12 @@ class ContextHelpLayoutControllerCreator implements BaseFullWebappPopupLayout { } @Override - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl) { - TopNavController topnavCtr = null; + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl) { + LockableController topnavCtr = null; // ----------- topnav, optional (e.g. for imprint, logout) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.ContextHelpTopNavControllerCreator")) { ControllerCreator topnavControllerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.ContextHelpTopNavControllerCreator"); - topnavCtr = (TopNavController)topnavControllerCreator.createController(ureq, wControl); + topnavCtr = (LockableController)topnavControllerCreator.createController(ureq, wControl); } return topnavCtr; } @@ -96,14 +96,14 @@ class ContextHelpLayoutControllerCreator implements BaseFullWebappPopupLayout { } @Override - public Controller createFooterController(UserRequest ureq, WindowControl control) { + public LockableController createFooterController(UserRequest ureq, WindowControl control) { Controller footerCtr = null; // ----------- footer, optional (e.g. for copyright, powerd by) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.ContextHelpFooterControllerCreator")) { ControllerCreator footerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.ContextHelpFooterControllerCreator"); footerCtr = footerCreator.createController(ureq, control); } - return footerCtr; + return (LockableController)footerCtr; } }; } diff --git a/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java b/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java index 8f83be2a50a452741d60f46f654e62d2314014ad..1c9c0a79823b6147b83b0017031d2a367bc346c9 100644 --- a/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java +++ b/src/main/java/org/olat/core/commons/contextHelp/ContextHelpTopNavController.java @@ -25,7 +25,7 @@ import java.util.Locale; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.chiefcontrollers.LanguageChangedEvent; import org.olat.core.commons.fullWebApp.DefaultMinimalTopNavController; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.dispatcher.impl.StaticMediaDispatcher; import org.olat.core.gui.UserRequest; import org.olat.core.gui.Windows; @@ -65,7 +65,7 @@ import org.olat.search.ui.SearchInputController; * * @author Florian Gnaegi, frentix GmbH, http://www.frentix.com */ -public class ContextHelpTopNavController extends FormBasicController implements TopNavController { +public class ContextHelpTopNavController extends FormBasicController implements LockableController { static final OLATResourceable CHANGE_LANG_RESOURCE = OresHelper.createOLATResourceableType("ContextHelp:ChangeLanguageChannel"); private SingleSelection langSelection; diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java index 35f4100b1ad879599daf977265fd1a1026e26ade..b884bd7c3bd10f9a6af26593a419ade8fcf4b439 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -152,8 +152,8 @@ public class BaseFullWebappController extends BasicController implements ChiefCo private TransientAssessmentMode lockMode; // NEW FROM FullChiefController - private TopNavController topnavCtr; - private Controller footerCtr; + private LockableController topnavCtr; + private LockableController footerCtr; private UserToolsMenuController userToolsMenuCtrl; private SiteInstance curSite; private DTab curDTab; @@ -378,6 +378,7 @@ public class BaseFullWebappController extends BasicController implements ChiefCo // nav is not a controller part because it is a fundamental part of the BaseFullWebAppConroller. navSitesVc = createVelocityContainer("nav_sites"); navSitesVc.setDomReplacementWrapperRequired(false); + navSitesVc.contextPut("visible", Boolean.TRUE); mainVc.put("sitesComponent", navSitesVc); navTabsVc = createVelocityContainer("nav_tabs"); @@ -476,7 +477,6 @@ public class BaseFullWebappController extends BasicController implements ChiefCo mainVc.put("footerComponent", footerCmp); } - contentCtrl = baseFullWebappControllerParts.getContentController(ureq, getWindowControl()); if (contentCtrl != null) { listenTo(contentCtrl); @@ -1295,19 +1295,23 @@ public class BaseFullWebappController extends BasicController implements ChiefCo if(topnavCtr != null) { topnavCtr.lockResource(resource); } + if(footerCtr != null) { + footerCtr.lockResource(resource); + } + if(userToolsMenuCtrl != null) { userToolsMenuCtrl.lockResource(resource); } - if(navSitesVc.isVisible()) { - navSitesVc.setVisible(false); - } for(int i=dtabsControllers.size(); i-->0; ) { DTab tab = dtabs.get(i); if(!lockResource.getResourceableId().equals(tab.getOLATResourceable().getResourceableId())) { removeDTab(null, tab); } } + navSitesVc.contextPut("visible", Boolean.FALSE); + navSitesVc.setDirty(true); + navTabsVc.setDirty(true); } private void unlockResource() { @@ -1315,10 +1319,15 @@ public class BaseFullWebappController extends BasicController implements ChiefCo if(topnavCtr != null) { topnavCtr.unlockResource(); } + if(footerCtr != null) { + footerCtr.unlockResource(); + } if(userToolsMenuCtrl != null) { userToolsMenuCtrl.unlockResource(); } - navSitesVc.setVisible(true); + navSitesVc.contextPut("visible", Boolean.TRUE); + navSitesVc.setDirty(true); + navTabsVc.setDirty(true); } private boolean asyncLockResource(TransientAssessmentMode mode) { diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappControllerParts.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappControllerParts.java index 163f501b566d51f0fd9448a66c06fd8aa2c38444..c684e4dcdd50c528b2dcc8e20f7a752a01e6d435 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappControllerParts.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappControllerParts.java @@ -69,7 +69,7 @@ public interface BaseFullWebappControllerParts { * @param wControl * @return */ - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl); + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl); /** * footer controller (user count, logged in user, logo, verson info, etc) @@ -77,6 +77,6 @@ public interface BaseFullWebappControllerParts { * @param wControl * @return */ - public Controller createFooterController(UserRequest ureq, WindowControl wControl); + public LockableController createFooterController(UserRequest ureq, WindowControl wControl); } diff --git a/src/main/java/org/olat/core/commons/fullWebApp/TopNavController.java b/src/main/java/org/olat/core/commons/fullWebApp/LockableController.java similarity index 95% rename from src/main/java/org/olat/core/commons/fullWebApp/TopNavController.java rename to src/main/java/org/olat/core/commons/fullWebApp/LockableController.java index 0e4239b647d97195d5e556fd6afba659c94e1db8..fabf969e4a1d36b5636b01d76c12bff5c29a716b 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/TopNavController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/LockableController.java @@ -28,7 +28,7 @@ import org.olat.core.id.OLATResourceable; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public interface TopNavController extends Controller { +public interface LockableController extends Controller { public void lockResource(OLATResourceable resource); diff --git a/src/main/java/org/olat/core/commons/fullWebApp/_content/nav_sites.html b/src/main/java/org/olat/core/commons/fullWebApp/_content/nav_sites.html index 5bed533bc977e6aab730bdc730e7afb713aed0dc..b5f3bd4b56e1d39905777b46c1dacb7524a35d46 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/_content/nav_sites.html +++ b/src/main/java/org/olat/core/commons/fullWebApp/_content/nav_sites.html @@ -1,15 +1,14 @@ -## ---- START sites tabs --- <ul id="$r.getCId()" class="o_navbar_sites nav o_navbar-nav"> -#foreach ($site in $sites) - #set ($siteEl = $r.getComponent("$site")) - #set ($navel = $siteEl.userObject.getNavElement()) - <li class='#if($tabhelper.isSiteActive($siteEl.userObject)) active #end $!navel.getIconCSSClass()'> - $r.render("$site") - </li> +#if($visible) + #foreach ($site in $sites) + #set ($siteEl = $r.getComponent("$site")) + #set ($navel = $siteEl.userObject.getNavElement()) + <li class='#if($tabhelper.isSiteActive($siteEl.userObject)) active #end $!navel.getIconCSSClass()'> + $r.render("$site") + </li> + #end #end </ul> -## ---- END sites tabs --- - <script type="text/javascript"> /* <![CDATA[ */ jQuery(document).trigger("oo.nav.sites.modified"); diff --git a/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappMinimalLayoutControllerCreator.java b/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappMinimalLayoutControllerCreator.java index 174ad0d5a1f63384c2d63384c008b29aee126afd..edceb5edb881961fa4ec8f392256ee574a71c99f 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappMinimalLayoutControllerCreator.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappMinimalLayoutControllerCreator.java @@ -28,7 +28,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; @@ -57,29 +57,34 @@ class BaseFullWebappMinimalLayoutControllerCreator implements BaseFullWebappPopu /** * @see org.olat.core.commons.fullWebApp.popup.BaseFullWebappPopupLayout#getFullWebappParts() */ + @Override public BaseFullWebappControllerParts getFullWebappParts() { return new BaseFullWebappControllerParts() { - + + @Override public List<SiteInstance> getSiteInstances(UserRequest ureq, WindowControl control) { // no static sites return null; } - + + @Override public Controller getContentController(UserRequest ureq, WindowControl wControl) { // the content for the Pop-up Window return contentControllerCreator.createController(ureq, wControl); } - - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl) { - TopNavController topnavCtr = null; + + @Override + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl) { + LockableController topnavCtr = null; // ----------- topnav, optional (e.g. for imprint, logout) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.MinimalTopNavControllerCreator")) { ControllerCreator topnavControllerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.MinimalTopNavControllerCreator"); - topnavCtr = (TopNavController)topnavControllerCreator.createController(ureq, wControl); + topnavCtr = (LockableController)topnavControllerCreator.createController(ureq, wControl); } return topnavCtr; } - + + @Override public Controller createHeaderController(UserRequest ureq, WindowControl control) { Controller headerCtr = null; // ----------- header, optional (e.g. for logo, advertising ) ------------------ @@ -89,15 +94,16 @@ class BaseFullWebappMinimalLayoutControllerCreator implements BaseFullWebappPopu } return headerCtr; } - - public Controller createFooterController(UserRequest ureq, WindowControl control) { + + @Override + public LockableController createFooterController(UserRequest ureq, WindowControl control) { Controller footerCtr = null; // ----------- footer, optional (e.g. for copyright, powerd by) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.MinimalFooterControllerCreator")) { ControllerCreator footerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.MinimalFooterControllerCreator"); footerCtr = footerCreator.createController(ureq, control); } - return footerCtr; + return (LockableController)footerCtr; } }; } diff --git a/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappPrintLayoutControllerCreator.java b/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappPrintLayoutControllerCreator.java index bf2a85ebdcbf53747622aae4634f01b39f928199..2adbda284d8ee7a089f967c80855c58ff14d2e2c 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappPrintLayoutControllerCreator.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/popup/BaseFullWebappPrintLayoutControllerCreator.java @@ -22,7 +22,7 @@ package org.olat.core.commons.fullWebApp.popup; import java.util.List; import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; @@ -59,7 +59,7 @@ class BaseFullWebappPrintLayoutControllerCreator implements BaseFullWebappPopupL } @Override - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl) { + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl) { return null; } @@ -69,7 +69,7 @@ class BaseFullWebappPrintLayoutControllerCreator implements BaseFullWebappPopupL } @Override - public Controller createFooterController(UserRequest ureq, WindowControl control) { + public LockableController createFooterController(UserRequest ureq, WindowControl control) { return null; } }; diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java index 0e36a7b695017e475ee02065a6610e63b4f3204e..1c538576569f3704ab31138f031ef123ae2bd0ff 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java @@ -49,13 +49,18 @@ public class DefaultFlexiColumnModel implements FlexiColumnModel { this(headerKey, columnIndex, false, null); } + public DefaultFlexiColumnModel(String headerKey, int columnIndex, boolean sortable, String sortKey) { + this(true, headerKey, columnIndex, sortable, sortKey, FlexiColumnModel.ALIGNMENT_LEFT, new TextFlexiCellRenderer()); + } + public DefaultFlexiColumnModel(String headerKey, int columnIndex, FlexiCellRenderer renderer) { this(true, headerKey, columnIndex, false, null, FlexiColumnModel.ALIGNMENT_LEFT, renderer); } - public DefaultFlexiColumnModel(String headerKey, int columnIndex, boolean sortable, String sortKey) { - this(true, headerKey, columnIndex, sortable, sortKey, FlexiColumnModel.ALIGNMENT_LEFT, new TextFlexiCellRenderer()); + public DefaultFlexiColumnModel(String headerKey, int columnIndex, boolean sortable, String sortKey, FlexiCellRenderer renderer) { + this(true, headerKey, columnIndex, sortable, sortKey, FlexiColumnModel.ALIGNMENT_LEFT, renderer); } + public DefaultFlexiColumnModel(boolean defVisible, String headerKey, int columnIndex, boolean sortable, String sortKey) { this(defVisible, headerKey, columnIndex, sortable, sortKey, FlexiColumnModel.ALIGNMENT_LEFT, new TextFlexiCellRenderer()); } diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java index 5908996910385d1ad1cc46bcc937ccf2b29bb3cc..d93d30f83f6a5e9186f26513c38791d8df9ccd3a 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java @@ -33,6 +33,8 @@ import javax.servlet.http.HttpServletRequest; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.IdentityRef; import org.olat.core.commons.persistence.DB; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; import org.olat.core.util.Encoder; import org.olat.core.util.IPUtils; import org.olat.core.util.StringHelper; @@ -67,6 +69,8 @@ import org.springframework.stereotype.Service; @Service("assessmentModeManager") public class AssessmentModeManagerImpl implements AssessmentModeManager { + private static final OLog log = Tracing.createLoggerFor(AssessmentModeManagerImpl.class); + @Autowired private DB dbInstance; @Autowired @@ -338,6 +342,7 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { @Override public boolean isSafelyAllowed(HttpServletRequest request, String safeExamBrowserKeys) { boolean safe = false; + boolean debug = log.isDebug(); if(StringHelper.containsNonWhitespace(safeExamBrowserKeys)) { String safeExamHash = request.getHeader("x-safeexambrowser-requesthash"); String url = request.getRequestURL().toString(); @@ -347,6 +352,9 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { if(safeExamHash != null && safeExamHash.equals(hash)) { safe = true; } + if(debug) { + log.debug((safeExamHash.equals(hash) ? "Success" : "Failed") + " : " + safeExamHash +" (Header) " + hash + " (Calculated)"); + } } } else { safe = true; diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java index 9048a5ff6c293410018067f47e03335b448c85c3..c505505c1180b01413aae04c602f2454c521bb38 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java @@ -145,8 +145,8 @@ public class UserCourseInformationsManagerImpl extends BasicManager implements U @Override public void execute() { try { - UltraLightInfos ulInfos = getUserCourseInformationsKey(courseResourceableId, identity); - if(ulInfos == null) { + UltraLightInfos reloadedUlInfos = getUserCourseInformationsKey(courseResourceableId, identity); + if(reloadedUlInfos == null) { OLATResource courseResource = resourceManager.findResourceable(courseResourceableId, "CourseModule"); UserCourseInfosImpl infos = new UserCourseInfosImpl(); infos.setIdentity(identity); @@ -157,8 +157,8 @@ public class UserCourseInformationsManagerImpl extends BasicManager implements U infos.setVisit(1); infos.setResource(courseResource); dbInstance.getCurrentEntityManager().persist(infos); - } else if(strict || needUpdate(ulInfos)) { - UserCourseInfosImpl infos = loadById(ulInfos.getKey()); + } else if(strict || needUpdate(reloadedUlInfos)) { + UserCourseInfosImpl infos = loadById(reloadedUlInfos.getKey()); if(infos != null) { infos.setVisit(infos.getVisit() + 1); infos.setRecentLaunch(new Date()); diff --git a/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java b/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java index b43259848ae3a8866220b089d4f65e54110f4204..f568f2414aa7ce54145d35fc9a722c7d644f053e 100644 --- a/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java +++ b/src/main/java/org/olat/course/assessment/model/AssessmentModeImpl.java @@ -56,7 +56,7 @@ import org.olat.repository.RepositoryEntry; @Table(name="o_as_mode_course") @NamedQueries({ @NamedQuery(name="assessmentModeById", query="select mode from courseassessmentmode mode where mode.key=:modeKey"), - @NamedQuery(name="assessmentModeByRepoEntry", query="select mode from courseassessmentmode mode where mode.repositoryEntry.key=:entryKey") + @NamedQuery(name="assessmentModeByRepoEntry", query="select mode from courseassessmentmode mode where mode.repositoryEntry.key=:entryKey order by mode.begin desc") }) public class AssessmentModeImpl implements Persistable, AssessmentMode { diff --git a/src/main/java/org/olat/course/assessment/ui/AssessmentModeListController.java b/src/main/java/org/olat/course/assessment/ui/AssessmentModeListController.java index a8e59cd1de484f694d7b399c39f182540a58d703..ae8ff80ca6f4687b51a1f29881a3edad951d1bb7 100644 --- a/src/main/java/org/olat/course/assessment/ui/AssessmentModeListController.java +++ b/src/main/java/org/olat/course/assessment/ui/AssessmentModeListController.java @@ -114,16 +114,16 @@ public class AssessmentModeListController extends FormBasicController implements //add the table FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.status.i18nKey(), Cols.status.ordinal(), - new ModeStatusCellRenderer())); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal())); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.begin.i18nKey(), Cols.begin.ordinal())); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.end.i18nKey(), Cols.end.ordinal())); + true, Cols.status.name(), new ModeStatusCellRenderer())); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal(), true, Cols.name.name())); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.begin.i18nKey(), Cols.begin.ordinal(), true, Cols.begin.name())); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.end.i18nKey(), Cols.end.ordinal(), true, Cols.end.name())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.leadTime.i18nKey(), Cols.leadTime.ordinal(), - new TimeCellRenderer(getTranslator()))); + true, Cols.leadTime.name(), new TimeCellRenderer(getTranslator()))); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.followupTime.i18nKey(), Cols.followupTime.ordinal(), - new TimeCellRenderer(getTranslator()))); + true, Cols.followupTime.name(), new TimeCellRenderer(getTranslator()))); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.target.i18nKey(), Cols.target.ordinal(), - new TargetAudienceCellRenderer(getTranslator()))); + true, Cols.target.name(), new TargetAudienceCellRenderer(getTranslator()))); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("start", Cols.start.ordinal(), "start", new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("start"), "start"), null))); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("stop", Cols.stop.ordinal(), "stop", diff --git a/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModel.java b/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModel.java index 80a51c7c7b21e5eb258cacb753c34765b3798ec6..b9160a1320f6c02ed1e797327d271a46243d4749 100644 --- a/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModel.java +++ b/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModel.java @@ -21,8 +21,10 @@ package org.olat.course.assessment.ui; import java.util.List; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel; import org.olat.course.assessment.AssessmentMode; import org.olat.course.assessment.AssessmentModeCoordinationService; import org.olat.course.assessment.model.TransientAssessmentMode; @@ -33,7 +35,7 @@ import org.olat.course.assessment.model.TransientAssessmentMode; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class AssessmentModeListModel extends DefaultFlexiTableDataModel<AssessmentMode> { +public class AssessmentModeListModel extends DefaultFlexiTableDataModel<AssessmentMode> implements SortableFlexiTableDataModel<AssessmentMode> { private final AssessmentModeCoordinationService coordinationService; @@ -50,6 +52,11 @@ public class AssessmentModeListModel extends DefaultFlexiTableDataModel<Assessme @Override public Object getValueAt(int row, int col) { AssessmentMode mode = getObject(row); + return getValueAt(mode, col); + } + + @Override + public Object getValueAt(AssessmentMode mode, int col) { switch(Cols.values()[col]) { case status: return mode.getStatus(); case name: return mode.getName(); @@ -76,6 +83,14 @@ public class AssessmentModeListModel extends DefaultFlexiTableDataModel<Assessme return null; } + @Override + public void sort(SortKey orderBy) { + if(orderBy != null) { + List<AssessmentMode> views = new AssessmentModeListModelSort(orderBy, this, null).sort(); + super.setObjects(views); + } + } + public boolean updateModeStatus(TransientAssessmentMode modeToUpdate) { boolean updated = false; diff --git a/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModelSort.java b/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModelSort.java new file mode 100644 index 0000000000000000000000000000000000000000..1e30ade2a26e2c583f2a5f4ca20ce4b7884f4b2e --- /dev/null +++ b/src/main/java/org/olat/course/assessment/ui/AssessmentModeListModelSort.java @@ -0,0 +1,73 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.assessment.ui; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Locale; + +import org.olat.core.commons.persistence.SortKey; +import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate; +import org.olat.course.assessment.AssessmentMode; +import org.olat.course.assessment.AssessmentMode.Status; +import org.olat.course.assessment.ui.AssessmentModeListModel.Cols; + +/** + * + * Initial date: 30.01.2015<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class AssessmentModeListModelSort extends SortableFlexiTableModelDelegate<AssessmentMode> { + + public AssessmentModeListModelSort(SortKey orderBy, SortableFlexiTableDataModel<AssessmentMode> tableModel, Locale locale) { + super(orderBy, tableModel, locale); + } + + @Override + protected void sort(List<AssessmentMode> rows) { + int columnIndex = getColumnIndex(); + Cols column = Cols.values()[columnIndex]; + switch(column) { + case status: Collections.sort(rows, new StatusComparator()); break; + default: { + super.sort(rows); + } + } + } + + private static class StatusComparator implements Comparator<AssessmentMode> { + @Override + public int compare(AssessmentMode o1, AssessmentMode o2) { + Status s1 = o1.getStatus(); + Status s2 = o2.getStatus(); + + if(s1 == null) { + if(s2 == null) return 0; + return -1; + } + if(s2 == null) return 1; + + return s1.ordinal() - s2.ordinal(); + } + } +} diff --git a/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html b/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html index 4302cfa2e9d558a039d7f117d803c62b91ad0f07..91bfb6984b2f2e9c833262aa224bd646f3d489b3 100644 --- a/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html +++ b/src/main/java/org/olat/course/assessment/ui/_content/choose_mode.html @@ -2,10 +2,10 @@ #foreach($mode in $guards.list) <h2>$mode.name <small>$r.translate("current.mode.course", $mode.displayName)</small></h2> <p><em>$r.translate("current.mode.datetimes", $mode.begin, $mode.end)</em> - #if(!$mode.leadTime.empty) + #if($mode.leadTime && !$mode.leadTime.empty) <br/><em>$r.translate("current.mode.leadtime", $mode.leadTime)</em> #end - #if(!$mode.followupTime.empty) + #if($mode.followupTime && !$mode.followupTime.empty) <br/><em>$r.translate("current.mode.followuptime", $mode.followupTime)</em> #end </p> diff --git a/src/main/java/org/olat/gui/control/OlatDmzTopNavController.java b/src/main/java/org/olat/gui/control/OlatDmzTopNavController.java index 75864c0e707017a64cca8e75ef7cf57cb094433b..f0660329ac1cfdc4b4f381758848d3d1f1b3394d 100644 --- a/src/main/java/org/olat/gui/control/OlatDmzTopNavController.java +++ b/src/main/java/org/olat/gui/control/OlatDmzTopNavController.java @@ -24,13 +24,12 @@ */ package org.olat.gui.control; -import org.olat.core.CoreSpringFactory; import org.olat.core.commons.chiefcontrollers.LanguageChooserController; import org.olat.core.commons.contextHelp.ContextHelpModule; import org.olat.core.commons.controllers.impressum.ImpressumDmzMainController; import org.olat.core.commons.controllers.impressum.ImpressumInformations; import org.olat.core.commons.controllers.impressum.ImpressumModule; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.commons.services.help.HelpLinkSPI; import org.olat.core.commons.services.help.HelpModule; import org.olat.core.gui.UserRequest; @@ -48,7 +47,7 @@ import org.olat.core.gui.control.generic.popup.PopupBrowserWindow; import org.olat.core.id.OLATResourceable; import org.springframework.beans.factory.annotation.Autowired; -public class OlatDmzTopNavController extends BasicController implements TopNavController { +public class OlatDmzTopNavController extends BasicController implements LockableController { private static final Boolean contextHelpEnabled = Boolean.valueOf(ContextHelpModule.isContextHelpEnabled()); private Link impressumLink; @@ -72,23 +71,19 @@ public class OlatDmzTopNavController extends BasicController implements TopNavCo impressumLink.setAjaxEnabled(false); impressumLink.setTarget("_blank"); - // help on login page vc.contextPut("isContextHelpEnabled", contextHelpEnabled); if (helpModule.isHelpEnabled()) { - HelpModule helpModule = CoreSpringFactory.getImpl(HelpModule.class); HelpLinkSPI provider = helpModule.getHelpProvider(); Component helpLink = provider.getHelpPageLink(ureq, translate("help.manual"), translate("help.manual"), "o_icon o_icon-wf o_icon_manual", null, "Login page"); vc.put("topnav.help", helpLink); - } //choosing language languageChooserC = new LanguageChooserController(getWindowControl(), ureq, "_top_nav_dmz_lang_chooser"); //DOKU:pb:2008-01 listenTo(languageChooserC); not necessary as LanguageChooser sends a MultiUserEvent //which is catched by the BaseFullWebappController. This one is then - //responsible to recreate the GUI with the new Locale - // + //responsible to recreate the GUI with the new Locale vc.put("languageChooser", languageChooserC.getInitialComponent()); putInitialPanel(vc); } @@ -117,6 +112,7 @@ public class OlatDmzTopNavController extends BasicController implements TopNavCo } } + @Override protected void doDispose() { if (languageChooserC != null) { languageChooserC.dispose(); diff --git a/src/main/java/org/olat/gui/control/OlatFooterController.java b/src/main/java/org/olat/gui/control/OlatFooterController.java index 82f607334fbb3f128a60c67d0e60d3eeb16af04f..eb5e0f772ce5e764a471bd6de6ddb322699b334c 100644 --- a/src/main/java/org/olat/gui/control/OlatFooterController.java +++ b/src/main/java/org/olat/gui/control/OlatFooterController.java @@ -32,6 +32,7 @@ import org.olat.core.commons.controllers.impressum.ImpressumInformations; import org.olat.core.commons.controllers.impressum.ImpressumMainController; import org.olat.core.commons.controllers.impressum.ImpressumModule; import org.olat.core.commons.fullWebApp.BaseFullWebappController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.Windows; import org.olat.core.gui.components.Component; @@ -47,6 +48,7 @@ import org.olat.core.gui.control.creator.ControllerCreator; import org.olat.core.gui.control.generic.popup.PopupBrowserWindow; import org.olat.core.helpers.Settings; import org.olat.core.id.Identity; +import org.olat.core.id.OLATResourceable; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.WebappHelper; @@ -67,11 +69,14 @@ import org.springframework.beans.factory.annotation.Autowired; * * @author patrickb */ -public class OlatFooterController extends BasicController { +public class OlatFooterController extends BasicController implements LockableController { - private Link impressumLink; + private final Link impressumLink; private final VelocityContainer olatFootervc; + private ShareLinkController shareLinkCtr; + @Autowired + private SocialModule socialModule; @Autowired private LayoutModule layoutModule; @Autowired @@ -92,11 +97,9 @@ public class OlatFooterController extends BasicController { olatFootervc.put("userCounter", userCounter); // share links - SocialModule socialModule = CoreSpringFactory.getImpl(SocialModule.class); if (socialModule.isShareEnabled() && socialModule.getEnabledShareLinkButtons().size() > 0) { - Controller shareLinkCtr = new ShareLinkController(ureq, wControl); - listenTo(shareLinkCtr); // for auto-dispose - // push to view + shareLinkCtr = new ShareLinkController(ureq, wControl); + listenTo(shareLinkCtr); olatFootervc.put("shareLink", shareLinkCtr.getInitialComponent()); } @@ -107,7 +110,6 @@ public class OlatFooterController extends BasicController { impressumLink.setAjaxEnabled(false); impressumLink.setTarget("_blank"); - // Push information about user if (!isGuest && ureq.getUserSession().isAuthenticated()) { olatFootervc.contextPut("loggedIn", Boolean.TRUE); @@ -138,6 +140,20 @@ public class OlatFooterController extends BasicController { // } + @Override + public void lockResource(OLATResourceable resource) { + if(shareLinkCtr != null) { + olatFootervc.remove(shareLinkCtr.getInitialComponent()); + } + } + + @Override + public void unlockResource() { + if(shareLinkCtr != null) { + olatFootervc.put("shareLink", shareLinkCtr.getInitialComponent()); + } + } + @Override public void event(UserRequest ureq, Component source, Event event) { if(impressumLink == source) { @@ -147,6 +163,7 @@ public class OlatFooterController extends BasicController { protected void doOpenImpressum(UserRequest ureq) { ControllerCreator impressumControllerCreator = new ControllerCreator() { + @Override public Controller createController(UserRequest lureq, WindowControl lwControl) { return new ImpressumMainController(lureq, lwControl); } @@ -159,5 +176,4 @@ public class OlatFooterController extends BasicController { } popupBrowserWindow.open(ureq); } - } diff --git a/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java b/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java index 054c6884a6b619b1068c49784e51ea8fc3c5110c..be0f8bd7c57711c5496b648df5a96361c2bbf8dc 100644 --- a/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java +++ b/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java @@ -31,7 +31,7 @@ import org.olat.core.CoreSpringFactory; import org.olat.core.commons.controllers.impressum.ImpressumInformations; import org.olat.core.commons.controllers.impressum.ImpressumMainController; import org.olat.core.commons.controllers.impressum.ImpressumModule; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.commons.services.help.HelpLinkSPI; import org.olat.core.commons.services.help.HelpModule; import org.olat.core.gui.UserRequest; @@ -55,7 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired; * * @author patrickb */ -public class OlatGuestTopNavController extends BasicController implements TopNavController { +public class OlatGuestTopNavController extends BasicController implements LockableController { private Link loginLink, impressumLink; diff --git a/src/main/java/org/olat/gui/control/OlatMinimalTopNavController.java b/src/main/java/org/olat/gui/control/OlatMinimalTopNavController.java index c642fa2030ba51464bd1e861f70a18208f66e9f8..bc3769157b268f537fb2abbe871ff155a00cf21c 100644 --- a/src/main/java/org/olat/gui/control/OlatMinimalTopNavController.java +++ b/src/main/java/org/olat/gui/control/OlatMinimalTopNavController.java @@ -24,7 +24,7 @@ */ package org.olat.gui.control; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.dispatcher.impl.StaticMediaDispatcher; import org.olat.core.gui.UserRequest; import org.olat.core.gui.Windows; @@ -48,7 +48,7 @@ import org.olat.core.id.OLATResourceable; * Initial Date: 15.02.2008 <br> * @author patrickb */ -public class OlatMinimalTopNavController extends BasicController implements TopNavController { +public class OlatMinimalTopNavController extends BasicController implements LockableController { private final Link closeLink; diff --git a/src/main/java/org/olat/gui/control/OlatTopNavController.java b/src/main/java/org/olat/gui/control/OlatTopNavController.java index 4ec1c07a4eba90f3f8442cfd54ea4f112891f76a..a8248d0a310a5de8b8a43811839be0619262c557 100644 --- a/src/main/java/org/olat/gui/control/OlatTopNavController.java +++ b/src/main/java/org/olat/gui/control/OlatTopNavController.java @@ -27,7 +27,7 @@ import java.util.Set; import org.olat.admin.user.tools.UserTool; import org.olat.admin.user.tools.UserToolExtension; import org.olat.admin.user.tools.UserToolsModule; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.dispatcher.DispatcherModule; import org.olat.core.extensions.ExtManager; import org.olat.core.gui.UserRequest; @@ -56,7 +56,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class OlatTopNavController extends BasicController implements TopNavController { +public class OlatTopNavController extends BasicController implements LockableController { private Link loginLink; private VelocityContainer topNavVC; diff --git a/src/main/java/org/olat/gui/control/UserToolsMenuController.java b/src/main/java/org/olat/gui/control/UserToolsMenuController.java index de9cb5434ee587120e3040b706f4ad9d1d8ae83f..28bb5b49b9ec78757543792279e2bb24bd738be7 100644 --- a/src/main/java/org/olat/gui/control/UserToolsMenuController.java +++ b/src/main/java/org/olat/gui/control/UserToolsMenuController.java @@ -29,7 +29,7 @@ import org.olat.admin.user.tools.UserToolCategory; import org.olat.admin.user.tools.UserToolExtension; import org.olat.admin.user.tools.UserToolsModule; import org.olat.basesecurity.AuthHelper; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -48,7 +48,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class UserToolsMenuController extends BasicController implements TopNavController { +public class UserToolsMenuController extends BasicController implements LockableController { private static final String ACTION_LOGOUT = "logout"; diff --git a/src/main/java/org/olat/login/AuthBFWCParts.java b/src/main/java/org/olat/login/AuthBFWCParts.java index 11726e0d28054d1bd1bbad3db1b4ec45afe1ef8c..dd7e310d52348529fd82ca276c73b4f2b8d0f4c9 100644 --- a/src/main/java/org/olat/login/AuthBFWCParts.java +++ b/src/main/java/org/olat/login/AuthBFWCParts.java @@ -29,7 +29,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; @@ -53,14 +53,14 @@ public class AuthBFWCParts implements BaseFullWebappControllerParts { * @see org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts#createFooterController(org.olat.core.gui.UserRequest, org.olat.core.gui.control.WindowControl) */ @Override - public Controller createFooterController(UserRequest ureq, WindowControl wControl) { + public LockableController createFooterController(UserRequest ureq, WindowControl wControl) { Controller footerCtr = null; // ----------- footer, optional (e.g. for copyright, powerd by) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.FooterControllerCreator")) { ControllerCreator footerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.FooterControllerCreator"); footerCtr = footerCreator.createController(ureq, wControl); } - return footerCtr; + return (LockableController)footerCtr; } /** @@ -81,14 +81,14 @@ public class AuthBFWCParts implements BaseFullWebappControllerParts { * @see org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts#createTopNavController(org.olat.core.gui.UserRequest, org.olat.core.gui.control.WindowControl) */ @Override - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl) { + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl) { Controller topnavCtr = null; // ----------- topnav, optional (e.g. for imprint, logout) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.TopNavControllerCreator")) { ControllerCreator topnavControllerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.TopNavControllerCreator"); topnavCtr = topnavControllerCreator.createController(ureq, wControl); } - return (TopNavController)topnavCtr; + return (LockableController)topnavCtr; } /** diff --git a/src/main/java/org/olat/login/DmzBFWCParts.java b/src/main/java/org/olat/login/DmzBFWCParts.java index 5f04f4447d714562f9c648a2d79c147ffee63a3a..b76d908a60baa5b416e655766b1a3702c0b61e2d 100644 --- a/src/main/java/org/olat/login/DmzBFWCParts.java +++ b/src/main/java/org/olat/login/DmzBFWCParts.java @@ -28,7 +28,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; @@ -46,7 +46,7 @@ public class DmzBFWCParts implements BaseFullWebappControllerParts { private boolean showTopNav = true; // default @Override - public Controller createFooterController(UserRequest ureq, WindowControl wControl) { + public LockableController createFooterController(UserRequest ureq, WindowControl wControl) { Controller footerCtr = null; // ----------- footer, optional (e.g. for copyright, powered by) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.DMZFooterControllerCreator")) { @@ -55,7 +55,7 @@ public class DmzBFWCParts implements BaseFullWebappControllerParts { } else { footerCtr = new OlatFooterController(ureq,wControl); } - return footerCtr; + return (LockableController)footerCtr; } @Override @@ -70,12 +70,12 @@ public class DmzBFWCParts implements BaseFullWebappControllerParts { } @Override - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl) { + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl) { if (showTopNav) { - TopNavController topNavCtr = null; + LockableController topNavCtr = null; if (CoreSpringFactory.containsBean("fullWebApp.DMZTopNavControllerCreator")) { ControllerCreator headerControllerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.DMZTopNavControllerCreator"); - topNavCtr = (TopNavController)headerControllerCreator.createController(ureq, wControl); + topNavCtr = (LockableController)headerControllerCreator.createController(ureq, wControl); } return topNavCtr; } else { diff --git a/src/main/java/org/olat/login/GuestBFWCParts.java b/src/main/java/org/olat/login/GuestBFWCParts.java index adc2be7d853d638181e3622845126fea9e07a381..eb58f28bfc1093d46bce206be8e5b9d432755c04 100644 --- a/src/main/java/org/olat/login/GuestBFWCParts.java +++ b/src/main/java/org/olat/login/GuestBFWCParts.java @@ -29,7 +29,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts; -import org.olat.core.commons.fullWebApp.TopNavController; +import org.olat.core.commons.fullWebApp.LockableController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; @@ -55,7 +55,7 @@ public class GuestBFWCParts implements BaseFullWebappControllerParts { * @see org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts#createFooterController(org.olat.core.gui.UserRequest, org.olat.core.gui.control.WindowControl) */ @Override - public Controller createFooterController(UserRequest ureq, WindowControl wControl) { + public LockableController createFooterController(UserRequest ureq, WindowControl wControl) { Controller footerCtr = null; // ----------- footer, optional (e.g. for copyright, powered by) ------------------ if (CoreSpringFactory.containsBean("fullWebApp.GuestFooterControllerCreator")) { @@ -64,7 +64,7 @@ public class GuestBFWCParts implements BaseFullWebappControllerParts { } else { footerCtr = new OlatFooterController(ureq,wControl); } - return footerCtr; + return (LockableController)footerCtr; } /** @@ -85,12 +85,12 @@ public class GuestBFWCParts implements BaseFullWebappControllerParts { * @see org.olat.core.commons.fullWebApp.BaseFullWebappControllerParts#createTopNavController(org.olat.core.gui.UserRequest, org.olat.core.gui.control.WindowControl) */ @Override - public TopNavController createTopNavController(UserRequest ureq, WindowControl wControl) { + public LockableController createTopNavController(UserRequest ureq, WindowControl wControl) { if (showTopNav) { - TopNavController topNavCtr = null; + LockableController topNavCtr = null; if (CoreSpringFactory.containsBean("fullWebApp.GuestTopNavControllerCreator")) { ControllerCreator headerControllerCreator = (ControllerCreator) CoreSpringFactory.getBean("fullWebApp.GuestTopNavControllerCreator"); - topNavCtr = (TopNavController)headerControllerCreator.createController(ureq, wControl); + topNavCtr = (LockableController)headerControllerCreator.createController(ureq, wControl); } return topNavCtr; } else { diff --git a/src/main/java/org/olat/social/shareLink/ShareLinkController.java b/src/main/java/org/olat/social/shareLink/ShareLinkController.java index a3896fb5bb80df9372eee8e6bc8bc4af4288c099..bf2ef1706e3b03e6821066c4937a7b519e485824 100644 --- a/src/main/java/org/olat/social/shareLink/ShareLinkController.java +++ b/src/main/java/org/olat/social/shareLink/ShareLinkController.java @@ -60,7 +60,7 @@ import org.olat.social.SocialModule; */ public class ShareLinkController extends BasicController { - private VelocityContainer shareLinkVC; + private final VelocityContainer shareLinkVC; /** * Standard constructor for the share link controller @@ -70,22 +70,17 @@ public class ShareLinkController extends BasicController { public ShareLinkController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); // For simplicity we use only one velocity template - this.shareLinkVC = createVelocityContainer("shareLink"); + shareLinkVC = createVelocityContainer("shareLink"); // Add the OpenOLAT base URL from the config shareLinkVC.contextPut("baseURL", Settings.getServerContextPathURI()); // Load configured share link buttons from the SocialModule configuration SocialModule socialModule = (SocialModule) CoreSpringFactory.getBean("socialModule"); - this.shareLinkVC.contextPut("shareLinks", socialModule.getEnabledShareLinkButtons()); + shareLinkVC.contextPut("shareLinks", socialModule.getEnabledShareLinkButtons()); // Tell if user is logged in - this.shareLinkVC.contextPut("isUser", ureq.getUserSession().isAuthenticated() && !ureq.getUserSession().getRoles().isGuestOnly()); - // - putInitialPanel(this.shareLinkVC); + shareLinkVC.contextPut("isUser", ureq.getUserSession().isAuthenticated() && !ureq.getUserSession().getRoles().isGuestOnly()); + putInitialPanel(shareLinkVC); } - - /* (non-Javadoc) - * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event) - */ @Override protected void event(UserRequest ureq, Component source, Event event) { if (source == shareLinkVC && event.getCommand().equals("setLandingPage") && ureq.getUserSession().isAuthenticated()) { @@ -107,12 +102,8 @@ public class ShareLinkController extends BasicController { } } - /* (non-Javadoc) - * @see org.olat.core.gui.control.DefaultController#doDispose() - */ @Override protected void doDispose() { // nothing to do } - }