diff --git a/component/api/src/main/java/org/exoplatform/portal/config/model/Page.java b/component/api/src/main/java/org/exoplatform/portal/config/model/Page.java index e3506fbd9a..99867d0f6e 100644 --- a/component/api/src/main/java/org/exoplatform/portal/config/model/Page.java +++ b/component/api/src/main/java/org/exoplatform/portal/config/model/Page.java @@ -49,10 +49,22 @@ public class Page extends Container { private boolean showMaxWindow = false; + /** + * Whether to 'hide' shared layout or not even when the site 'displays' the + * shared layout + */ @Getter @Setter private boolean hideSharedLayout = false; + /** + * Whether to 'show' shared layout or not even when the site 'hides' the + * shared layout layout + */ + @Getter + @Setter + private boolean showSharedLayout = false; + private String type; private String link; @@ -74,6 +86,8 @@ public Page(PageData data) { this.ownerId = data.getOwnerId(); this.editPermission = data.getEditPermission(); this.showMaxWindow = data.isShowMaxWindow(); + this.hideSharedLayout = data.isHideSharedLayout(); + this.showSharedLayout = data.isShowSharedLayout(); this.type = data.getType(); this.link = data.getLink(); } @@ -180,6 +194,7 @@ public PageData build() { editPermission, showMaxWindow, hideSharedLayout, + showSharedLayout, type, link); } diff --git a/component/api/src/main/java/org/exoplatform/portal/mop/Utils.java b/component/api/src/main/java/org/exoplatform/portal/mop/Utils.java index 6d6e2745de..6cf57a2800 100644 --- a/component/api/src/main/java/org/exoplatform/portal/mop/Utils.java +++ b/component/api/src/main/java/org/exoplatform/portal/mop/Utils.java @@ -76,6 +76,7 @@ public static PageState toPageState(Page page) { page.getDescription(), page.isShowMaxWindow(), page.isHideSharedLayout(), + page.isShowSharedLayout(), page.getFactoryId(), page.getProfiles(), page.getAccessPermissions() != null ? Arrays.asList(page.getAccessPermissions()) : null, @@ -91,6 +92,7 @@ public static PageState toPageState(PageData page) { page.getDescription(), page.isShowMaxWindow(), page.isHideSharedLayout(), + page.isShowSharedLayout(), page.getFactoryId(), page.getProfiles(), page.getAccessPermissions(), diff --git a/component/api/src/main/java/org/exoplatform/portal/mop/page/PageContext.java b/component/api/src/main/java/org/exoplatform/portal/mop/page/PageContext.java index 3fefdf919c..5668fd3a66 100644 --- a/component/api/src/main/java/org/exoplatform/portal/mop/page/PageContext.java +++ b/component/api/src/main/java/org/exoplatform/portal/mop/page/PageContext.java @@ -10,83 +10,85 @@ @Data public class PageContext { - /** . */ - final PageKey key; + /** . */ + final PageKey key; - /** The new state if any. */ - PageState state; + /** The new state if any. */ + PageState state; - /** A data snapshot. */ - PageData data; + /** A data snapshot. */ + PageData data; - PageContext(PageData data) { - this.key = data.key; - this.state = null; - this.data = data; - } + PageContext(PageData data) { + this.key = data.key; + this.state = null; + this.data = data; + } - public PageContext(PageKey key, PageState state) { - this.key = key; - this.state = state; - this.data = null; - } + public PageContext(PageKey key, PageState state) { + this.key = key; + this.state = state; + this.data = null; + } - /** - * Returns the navigation key. - * - * @return the navigation key - */ - public PageKey getKey() { - return key; - } + /** + * Returns the navigation key. + * + * @return the navigation key + */ + public PageKey getKey() { + return key; + } - /** - * Returns the navigation state. - * - * @return the navigation state - */ - public PageState getState() { - if (state != null) { - return state; - } else if (data != null) { - return data.state; - } else { - return null; - } + /** + * Returns the navigation state. + * + * @return the navigation state + */ + public PageState getState() { + if (state != null) { + return state; + } else if (data != null) { + return data.state; + } else { + return null; } + } - /** - * Updates the page state the behavior is not the same wether or not the page is persistent: - * When the page is persistent, any state is allowed: - * - * - * @param state the new state - * @throws IllegalStateException when the state is cleared and the navigation is not persistent - */ - public void setState(PageState state) throws IllegalStateException { - if (data == null && state == null) { - throw new IllegalStateException("Cannot clear state on a transient page"); - } - this.state = state; + /** + * Updates the page state the behavior is not the same wether or not the page + * is persistent: When the page is persistent, any state is allowed: + * + * + * @param state the new state + * @throws IllegalStateException when the state is cleared and the navigation + * is not persistent + */ + public void setState(PageState state) throws IllegalStateException { + if (data == null && state == null) { + throw new IllegalStateException("Cannot clear state on a transient page"); } + this.state = state; + } - public void update(Page page) throws NullPointerException { - if (page == null) { - throw new NullPointerException(); - } - PageState s = getState(); - page.setTitle(s.displayName); - page.setDescription(s.description); - page.setFactoryId(s.factoryId); - page.setShowMaxWindow(s.showMaxWindow); - page.setHideSharedLayout(s.hideSharedLayout); - - List permisssions = s.accessPermissions; - page.setAccessPermissions(permisssions != null ? permisssions.toArray(new String[permisssions.size()]) : null); - page.setEditPermission(getState().editPermission); + public void update(Page page) throws NullPointerException { + if (page == null) { + throw new NullPointerException(); } + PageState s = getState(); + page.setTitle(s.getDisplayName()); + page.setDescription(s.getDescription()); + page.setFactoryId(s.getFactoryId()); + page.setShowMaxWindow(s.isShowMaxWindow()); + page.setHideSharedLayout(s.isHideSharedLayout()); + page.setShowSharedLayout(s.isShowSharedLayout()); + List permisssions = s.getAccessPermissions(); + page.setAccessPermissions(permisssions == null ? null : permisssions.toArray(new String[permisssions.size()])); + page.setEditPermission(s.getEditPermission()); + } } diff --git a/component/api/src/main/java/org/exoplatform/portal/mop/page/PageState.java b/component/api/src/main/java/org/exoplatform/portal/mop/page/PageState.java index 1f9be6f35d..a11d1c3c98 100644 --- a/component/api/src/main/java/org/exoplatform/portal/mop/page/PageState.java +++ b/component/api/src/main/java/org/exoplatform/portal/mop/page/PageState.java @@ -1,78 +1,58 @@ package org.exoplatform.portal.mop.page; import java.io.Serializable; -import java.util.*; - -import org.exoplatform.commons.utils.Safe; - -import lombok.Getter; -import lombok.Setter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.exoplatform.portal.mop.PageType; -/** - * An immutable page state class, modifying an existing state should use the - * {@link Builder} builder class to rebuild a new immutable state object. - * - * @author Julien Viet - */ +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor public class PageState implements Serializable { private static final long serialVersionUID = 7874166775312871923L; - /** . */ - @Getter - @Setter private String storageId; - /** . */ - final String editPermission; + private boolean showMaxWindow; - /** . */ - final boolean showMaxWindow; + private boolean hideSharedLayout; - /** . */ - @Getter - final boolean hideSharedLayout; + private boolean showSharedLayout; - final String profiles; + private String profiles; - /** . */ - final String factoryId; + private String factoryId; - /** . */ - final String displayName; + private String displayName; - /** . */ - final String description; + private String description; - /** . */ - final String type; + private String type; - /** . */ - final String link; + private String link; - /** . */ - final List accessPermissions; + private String editPermission; - public PageState(String displayName, // NOSONAR - String description, - boolean showMaxWindow, - String factoryId, - List accessPermissions, - String editPermission, - String type, - String link) { - this(displayName, - description, - showMaxWindow, - false, - factoryId, - null, - accessPermissions, - editPermission, - type, - link); + private List accessPermissions; + + public PageState(PageState pageState) { + this(pageState.storageId, + pageState.showMaxWindow, + pageState.hideSharedLayout, + pageState.showSharedLayout, + pageState.profiles, + pageState.factoryId, + pageState.displayName, + pageState.description, + pageState.type, + pageState.link, + pageState.editPermission, + pageState.accessPermissions); } public PageState(String displayName, // NOSONAR @@ -81,13 +61,14 @@ public PageState(String displayName, // NOSONAR String factoryId, List accessPermissions, String editPermission) { - this(displayName, description, showMaxWindow, false, factoryId, accessPermissions, editPermission); + this(displayName, description, showMaxWindow, false, false, factoryId, accessPermissions, editPermission); } public PageState(String displayName, // NOSONAR String description, boolean showMaxWindow, boolean hideSharedLayout, + boolean showSharedLayout, String factoryId, String profiles, List accessPermissions, @@ -97,6 +78,7 @@ public PageState(String displayName, // NOSONAR this.editPermission = editPermission; this.showMaxWindow = showMaxWindow; this.hideSharedLayout = hideSharedLayout; + this.showSharedLayout = showSharedLayout; this.factoryId = factoryId; this.profiles = profiles; this.displayName = displayName; @@ -110,12 +92,14 @@ public PageState(String displayName, // NOSONAR String description, boolean showMaxWindow, boolean hideSharedLayout, + boolean showSharedLayout, String factoryId, List accessPermissions, String editPermission) { this.editPermission = editPermission; this.showMaxWindow = showMaxWindow; this.hideSharedLayout = hideSharedLayout; + this.showSharedLayout = showSharedLayout; this.factoryId = factoryId; this.profiles = null; this.displayName = displayName; @@ -125,73 +109,11 @@ public PageState(String displayName, // NOSONAR this.link = null; } - public String getEditPermission() { - return editPermission; - } - - public boolean getShowMaxWindow() { - return showMaxWindow; - } - - public String getFactoryId() { - return factoryId; - } - - public String getDisplayName() { - return displayName; - } - - public String getDescription() { - return description; - } - - public String getProfiles() { - return profiles; - } - - public List getAccessPermissions() { - return accessPermissions; - } - - public String getType() { - return type; - } - - public String getLink() { - return link; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof PageState)) { - return false; - } - PageState that = (PageState) o; - return Safe.equals(editPermission, that.editPermission) && showMaxWindow == that.showMaxWindow - && Safe.equals(factoryId, that.factoryId) - && Safe.equals(displayName, that.displayName) - && Safe.equals(description, that.description) - && Safe.equals(accessPermissions, that.accessPermissions); - } - - @Override - public int hashCode() { - int result = editPermission != null ? editPermission.hashCode() : 0; - result = 31 * result + (showMaxWindow ? 1 : 0); - result = 31 * result + (factoryId != null ? factoryId.hashCode() : 0); - result = 31 * result + (displayName != null ? displayName.hashCode() : 0); - result = 31 * result + (description != null ? description.hashCode() : 0); - result = 31 * result + (accessPermissions != null ? accessPermissions.hashCode() : 0); - return result; - } - public Builder builder() { return new Builder(editPermission, showMaxWindow, hideSharedLayout, + showSharedLayout, factoryId, profiles, displayName, @@ -212,6 +134,9 @@ public static class Builder { /** . */ private boolean hideSharedLayout; + /** . */ + private boolean showSharedLayout; + /** . */ private String factoryId; @@ -235,6 +160,7 @@ public static class Builder { private Builder(String editPermission, // NOSONAR boolean showMaxWindow, boolean hideSharedLayout, + boolean showSharedLayout, String factoryId, String profiles, String displayName, @@ -244,7 +170,8 @@ private Builder(String editPermission, // NOSONAR String link) { this.editPermission = editPermission; this.showMaxWindow = showMaxWindow; - this.showMaxWindow = hideSharedLayout; + this.hideSharedLayout = hideSharedLayout; + this.showSharedLayout = showSharedLayout; this.factoryId = factoryId; this.profiles = profiles; this.displayName = displayName; @@ -273,12 +200,17 @@ public Builder showMaxWindow(boolean showMaxWindow) { this.showMaxWindow = showMaxWindow; return this; } - + public Builder hideSharedLayout(boolean hideSharedLayout) { this.hideSharedLayout = hideSharedLayout; return this; } + public Builder showSharedLayout(boolean showSharedLayout) { + this.showSharedLayout = showSharedLayout; + return this; + } + public Builder displayName(String displayName) { this.displayName = displayName; return this; @@ -314,6 +246,7 @@ public PageState build() { description, showMaxWindow, hideSharedLayout, + showSharedLayout, factoryId, profiles, accessPermissions, diff --git a/component/api/src/main/java/org/exoplatform/portal/pom/data/PageData.java b/component/api/src/main/java/org/exoplatform/portal/pom/data/PageData.java index c52ec2ab0e..e02c5f3a22 100644 --- a/component/api/src/main/java/org/exoplatform/portal/pom/data/PageData.java +++ b/component/api/src/main/java/org/exoplatform/portal/pom/data/PageData.java @@ -33,92 +33,96 @@ @NoArgsConstructor(force = true) public class PageData extends ContainerData { - public static final PageData NULL_OBJECT = new PageData(); - - private static final long serialVersionUID = 2741613958131096156L; - - /** . */ - private final PageKey key; - - /** . */ - private final String editPermission; - - /** . */ - private final boolean showMaxWindow; - - /** . */ - private final boolean hideSharedLayout; - - /** . */ - private final String type; - - /** . */ - private final String link; - - public PageData(String storageId, // NOSONAR - String id, - String name, - String icon, - String template, - String factoryId, - String title, - String description, - String width, - String height, - String cssClass, - String profiles, - List accessPermissions, - List children, - String ownerType, - String ownerId, - String editPermission, - boolean showMaxWindow, - boolean hideSharedLayout, - String type, - String link) { - super(storageId, - id, - name, - icon, - template, - factoryId, - title, - description, - width, - height, - cssClass, - profiles, - null, - null, - accessPermissions, - children); - - // - this.key = new PageKey(ownerType, ownerId, name); - this.editPermission = editPermission; - this.showMaxWindow = showMaxWindow; - this.hideSharedLayout = hideSharedLayout; - this.type= type; - this.link = link; - } - - public String getType() { - return type; - } - - public String getLink() { - return link; - } - - public String getOwnerType() { - return key.getType(); - } - - public String getOwnerId() { - return key.getId(); - } - - public boolean isNull() { - return key == null; - } + public static final PageData NULL_OBJECT = new PageData(); + + private static final long serialVersionUID = 2741613958131096156L; + + /** . */ + private final PageKey key; + + /** . */ + private final String editPermission; + + /** . */ + private final boolean showMaxWindow; + + /** . */ + private final boolean hideSharedLayout; + + private final boolean showSharedLayout; + + /** . */ + private final String type; + + /** . */ + private final String link; + + public PageData(String storageId, // NOSONAR + String id, + String name, + String icon, + String template, + String factoryId, + String title, + String description, + String width, + String height, + String cssClass, + String profiles, + List accessPermissions, + List children, + String ownerType, + String ownerId, + String editPermission, + boolean showMaxWindow, + boolean hideSharedLayout, + boolean showSharedLayout, + String type, + String link) { + super(storageId, + id, + name, + icon, + template, + factoryId, + title, + description, + width, + height, + cssClass, + profiles, + null, + null, + accessPermissions, + children); + + // + this.key = new PageKey(ownerType, ownerId, name); + this.editPermission = editPermission; + this.showMaxWindow = showMaxWindow; + this.hideSharedLayout = hideSharedLayout; + this.showSharedLayout = showSharedLayout; + this.type = type; + this.link = link; + } + + public String getType() { + return type; + } + + public String getLink() { + return link; + } + + public String getOwnerType() { + return key.getType(); + } + + public String getOwnerId() { + return key.getId(); + } + + public boolean isNull() { + return key == null; + } } diff --git a/component/management/src/main/java/org/gatein/api/PortalImpl.java b/component/management/src/main/java/org/gatein/api/PortalImpl.java index 6cd7602ad8..2de05b1b0f 100644 --- a/component/management/src/main/java/org/gatein/api/PortalImpl.java +++ b/component/management/src/main/java/org/gatein/api/PortalImpl.java @@ -281,10 +281,10 @@ public Page createPage(PageId pageId) throws EntityAlreadyExistsException { null, false, false, + false, null, null, - Arrays.asList(Util.from(Permission - .everyone())), + Arrays.asList(Util.from(Permission.everyone())), Util.from(edit)[0], PageType.PAGE.name(), null); diff --git a/component/management/src/test/java/org/gatein/api/AbstractApiTest.java b/component/management/src/test/java/org/gatein/api/AbstractApiTest.java index 094e2df4f3..5a25ca87e1 100644 --- a/component/management/src/test/java/org/gatein/api/AbstractApiTest.java +++ b/component/management/src/test/java/org/gatein/api/AbstractApiTest.java @@ -165,6 +165,7 @@ protected void createPage(SiteId siteId, String... pages) { "description", false, false, + false, null, null, Arrays.asList("Everyone"), diff --git a/component/portal/src/main/java/org/exoplatform/portal/jdbc/entity/PageEntity.java b/component/portal/src/main/java/org/exoplatform/portal/jdbc/entity/PageEntity.java index 1b5fa62a0e..267b1eaf4a 100644 --- a/component/portal/src/main/java/org/exoplatform/portal/jdbc/entity/PageEntity.java +++ b/component/portal/src/main/java/org/exoplatform/portal/jdbc/entity/PageEntity.java @@ -36,6 +36,8 @@ import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; import jakarta.persistence.Transient; +import lombok.Getter; +import lombok.Setter; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @@ -64,10 +66,15 @@ public class PageEntity extends ComponentEntity implements Serializable { @Column(name = "SHOW_MAX_WINDOW") private boolean showMaxWindow; - + @Column(name = "HIDE_SHARED_LAYOUT") private boolean hideSharedLayout; + @Getter + @Setter + @Column(name = "SHOW_SHARED_LAYOUT") + private boolean showSharedLayout; + @Column(name = "DISPLAY_NAME", length = 200) private String displayName; diff --git a/component/portal/src/main/java/org/exoplatform/portal/mop/storage/PageStorageImpl.java b/component/portal/src/main/java/org/exoplatform/portal/mop/storage/PageStorageImpl.java index 241ce015bb..458dfd4282 100644 --- a/component/portal/src/main/java/org/exoplatform/portal/mop/storage/PageStorageImpl.java +++ b/component/portal/src/main/java/org/exoplatform/portal/mop/storage/PageStorageImpl.java @@ -307,6 +307,7 @@ protected PageData buildPageData(PageEntity entity) { editPermission, // editPermission entity.isShowMaxWindow(), // showMaxWindow entity.isHideSharedLayout(), + entity.isShowSharedLayout(), entity.getPageType() != null ? entity.getPageType().name() : null, entity.getLink()); } @@ -347,8 +348,9 @@ private void applyPageContextToEntity(PageEntity entity, PageContext pageContext entity.setDescription(state.getDescription()); entity.setDisplayName(state.getDisplayName()); entity.setFactoryId(state.getFactoryId()); - entity.setShowMaxWindow(state.getShowMaxWindow()); + entity.setShowMaxWindow(state.isShowMaxWindow()); entity.setHideSharedLayout(state.isHideSharedLayout()); + entity.setShowSharedLayout(state.isShowSharedLayout()); entity.setPageType(!StringUtils.isBlank(state.getType()) ? PageType.valueOf(state.getType()) : PageType.PAGE); entity.setProfiles(state.getProfiles()); entity.setLink(state.getLink()); diff --git a/component/portal/src/main/resources/db/changelog/portal-rdbms.db.changelog-1.0.0.xml b/component/portal/src/main/resources/db/changelog/portal-rdbms.db.changelog-1.0.0.xml index 4c3930fb93..793ffe44b3 100644 --- a/component/portal/src/main/resources/db/changelog/portal-rdbms.db.changelog-1.0.0.xml +++ b/component/portal/src/main/resources/db/changelog/portal-rdbms.db.changelog-1.0.0.xml @@ -465,4 +465,10 @@ + + + + + + diff --git a/component/portal/src/test/java/org/exoplatform/portal/config/TestLoadedPOM.java b/component/portal/src/test/java/org/exoplatform/portal/config/TestLoadedPOM.java index 120fb8331b..823abd8d4c 100644 --- a/component/portal/src/test/java/org/exoplatform/portal/config/TestLoadedPOM.java +++ b/component/portal/src/test/java/org/exoplatform/portal/config/TestLoadedPOM.java @@ -298,7 +298,7 @@ public void testPage() throws Exception { assertEquals("test_factory_id", pageContext.getState().getFactoryId()); assertEquals(Arrays. asList("test_access_permissions"), pageContext.getState().getAccessPermissions()); assertEquals("test_edit_permission", pageContext.getState().getEditPermission()); - assertEquals(true, pageContext.getState().getShowMaxWindow()); + assertEquals(true, pageContext.getState().isShowMaxWindow()); // List children = page.getChildren(); diff --git a/component/portal/src/test/java/org/exoplatform/portal/config/TestSerialization.java b/component/portal/src/test/java/org/exoplatform/portal/config/TestSerialization.java index eb94c2a3fa..58a76dcd80 100644 --- a/component/portal/src/test/java/org/exoplatform/portal/config/TestSerialization.java +++ b/component/portal/src/test/java/org/exoplatform/portal/config/TestSerialization.java @@ -114,6 +114,7 @@ Arrays. asList(body), "foo16", true, true, + true, PageType.LINK.name(), "wwww.exo.com"); PageData clone = IOTools.clone(obj); @@ -138,6 +139,7 @@ Arrays. asList(body), assertEquals(obj.getEditPermission(), clone.getEditPermission()); assertEquals(obj.isShowMaxWindow(), clone.isShowMaxWindow()); assertEquals(obj.isHideSharedLayout(), clone.isHideSharedLayout()); + assertEquals(obj.isShowSharedLayout(), clone.isShowSharedLayout()); assertEquals(obj.getType(), clone.getType()); assertEquals(obj.getLink(), clone.getLink()); } diff --git a/component/portal/src/test/java/org/exoplatform/portal/mop/dao/PageDAOTest.java b/component/portal/src/test/java/org/exoplatform/portal/mop/dao/PageDAOTest.java index 93b9ee7903..60d454f00d 100644 --- a/component/portal/src/test/java/org/exoplatform/portal/mop/dao/PageDAOTest.java +++ b/component/portal/src/test/java/org/exoplatform/portal/mop/dao/PageDAOTest.java @@ -70,6 +70,7 @@ private PageEntity createInstance(String key, String displayName, String descrip entity.setDescription(description); entity.setShowMaxWindow(true); entity.setHideSharedLayout(true); + entity.setShowSharedLayout(true); entity.setFactoryId("testFactoryId"); entity.setPageBody("testPageBody"); entity.setPageType(PageType.PAGE); diff --git a/component/portal/src/test/java/org/exoplatform/portal/mop/storage/TestDataStorage.java b/component/portal/src/test/java/org/exoplatform/portal/mop/storage/TestDataStorage.java index 1aa6d9c54a..55c7a2df12 100644 --- a/component/portal/src/test/java/org/exoplatform/portal/mop/storage/TestDataStorage.java +++ b/component/portal/src/test/java/org/exoplatform/portal/mop/storage/TestDataStorage.java @@ -311,7 +311,7 @@ public void testSavePage() throws Exception { pageContext = pageService.loadPage(page.getPageKey()); assertEquals("MyTitle", pageContext.getState().getDisplayName()); - assertEquals(true, pageContext.getState().getShowMaxWindow()); + assertEquals(true, pageContext.getState().isShowMaxWindow()); assertEquals(true, pageContext.getState().isHideSharedLayout()); } diff --git a/webui/src/main/java/org/exoplatform/portal/webui/page/UIPage.java b/webui/src/main/java/org/exoplatform/portal/webui/page/UIPage.java index bbf9065070..4f6d689375 100644 --- a/webui/src/main/java/org/exoplatform/portal/webui/page/UIPage.java +++ b/webui/src/main/java/org/exoplatform/portal/webui/page/UIPage.java @@ -64,6 +64,10 @@ public class UIPage extends UIContainer { @Setter private boolean hideSharedLayout = false; + @Getter + @Setter + private boolean showSharedLayout = false; + public void normalizePortletWindowStates() { for (UIPortlet childUIPortlet : recursivelyFindUIPortlets(this)) { if (!WindowState.MINIMIZED.equals(childUIPortlet.getCurrentWindowState())) { diff --git a/webui/src/main/java/org/exoplatform/portal/webui/portal/UISharedLayout.java b/webui/src/main/java/org/exoplatform/portal/webui/portal/UISharedLayout.java index 201542eb62..d129ee86ee 100644 --- a/webui/src/main/java/org/exoplatform/portal/webui/portal/UISharedLayout.java +++ b/webui/src/main/java/org/exoplatform/portal/webui/portal/UISharedLayout.java @@ -48,13 +48,14 @@ public void processRender(WebuiRequestContext context) throws Exception { } public boolean isShowSharedLayout(PortalRequestContext requestContext) { - boolean showSharedLayout = !requestContext.isHideSharedLayout() && (Util.getUIPage() == null || !Util.getUIPage().isHideSharedLayout()); - if (requestContext.getUserPortalConfig() != null + boolean showSharedLayout = !hideSiteSharedLayout(requestContext) && !hidePageSharedLayout(); + if (requestContext.getUserPortalConfig() != null && requestContext.getUserPortalConfig().getPortalConfig() != null) { showSharedLayout = showSharedLayout && requestContext.getSiteType() != SiteType.GROUP_TEMPLATE && (requestContext.getSiteType() != SiteType.PORTAL - || requestContext.getUserPortalConfig().getPortalConfig().isDisplayed()); + || showSiteSharedLayout(requestContext) + || showPageSharedLayout()); } return showSharedLayout; } @@ -68,4 +69,20 @@ protected void processContainerRender(WebuiRequestContext context) throws Except super.processRender(context); } + private boolean hideSiteSharedLayout(PortalRequestContext requestContext) { + return requestContext.isHideSharedLayout(); + } + + private boolean showSiteSharedLayout(PortalRequestContext requestContext) { + return requestContext.getUserPortalConfig().getPortalConfig().isDisplayed(); + } + + private boolean hidePageSharedLayout() { + return Util.getUIPage() != null && Util.getUIPage().isHideSharedLayout(); + } + + private boolean showPageSharedLayout() { + return !hidePageSharedLayout() && Util.getUIPage() != null && Util.getUIPage().isShowSharedLayout(); + } + } diff --git a/webui/src/main/java/org/exoplatform/portal/webui/util/PortalDataMapper.java b/webui/src/main/java/org/exoplatform/portal/webui/util/PortalDataMapper.java index 7c2d80f60c..c97e113be2 100644 --- a/webui/src/main/java/org/exoplatform/portal/webui/util/PortalDataMapper.java +++ b/webui/src/main/java/org/exoplatform/portal/webui/util/PortalDataMapper.java @@ -131,6 +131,7 @@ public static void toUIPage(UIPage uiPage, Page model) { uiPage.setProfiles(model.getProfiles()); uiPage.setShowMaxWindow(model.isShowMaxWindow()); uiPage.setHideSharedLayout(model.isHideSharedLayout()); + uiPage.setShowSharedLayout(model.isShowSharedLayout()); List portlets = new ArrayList<>(); uiPage.findComponentOfType(portlets, UIPortlet.class);