diff --git a/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java b/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java index bdfa5639f50db2c59cd77e48a7470807c3784c43..a785c153ecb119d3a221734c0a013a7aaca84484 100644 --- a/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java +++ b/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java @@ -32,6 +32,7 @@ import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.commons.info.model.InfoMessage; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.Window; import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.table.BaseTableDataModelWithoutFilter; @@ -76,6 +77,8 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle private TableController tableController; private VelocityContainer portletVC; + private boolean newInfos = false; + public InfoMessagePortletRunController(WindowControl wControl, UserRequest ureq, Translator trans, String portletName, int defaultMaxentries) { super(wControl, ureq, trans, portletName, defaultMaxentries); @@ -109,6 +112,8 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, getIdentity(), InfoMessageFrontendManager.oresFrontend); putInitialPanel(portletVC); + + getWindowControl().getWindowBackOffice().addCycleListener(this); } @Override @@ -120,6 +125,7 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle @Override public synchronized void doDispose() { + getWindowControl().getWindowBackOffice().removeCycleListener(this); CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, InfoMessageFrontendManager.oresFrontend); super.doDispose(); } @@ -127,7 +133,12 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle @Override public void event(Event event) { if("new_info_message".equals(event.getCommand())) { - reloadModel(sortingCriteria); + newInfos = true; + } else if (event == Window.BEFORE_INLINE_RENDERING) { + if(newInfos) { + reloadModel(sortingCriteria); + newInfos = false; + } } } diff --git a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java index b350a65781f26cd54271b866f1c1edc1396d7f83..9731e130a968cb76b7d238218275003718b9361f 100644 --- a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java +++ b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java @@ -194,7 +194,7 @@ public class InfoDisplayController extends FormBasicController { deleteLinks.clear(); List<InfoMessage> msgs = infoMessageManager.loadInfoMessageByResource(ores, resSubPath, businessPath, after, null, 0, maxResults); - List<InfoMessageForDisplay> infoDisplays = new ArrayList<InfoMessageForDisplay>(); + List<InfoMessageForDisplay> infoDisplays = new ArrayList<InfoMessageForDisplay>(msgs.size()); for(InfoMessage info:msgs) { previousDisplayKeys.add(info.getKey()); infoDisplays.add(createInfoMessageForDisplay(info)); diff --git a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java index fa571c4bf3288d8bc6eb73e55bf3a8701aef4b05..9cefe0e80b7be22a9d37c982d57fba24206a19ac 100644 --- a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java +++ b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java @@ -71,7 +71,7 @@ public class HomePortalControllerCreator extends AutoCreator { return new HomePortalController(ureq, lwControl); } - public class HomePortalController extends BasicController { + public static class HomePortalController extends BasicController { private final VelocityContainer welcome; private final Link portalBackButton;