List of usage examples for com.liferay.portal.kernel.service LayoutLocalServiceUtil getFriendlyURLLayout
public static com.liferay.portal.kernel.model.Layout getFriendlyURLLayout(long groupId, boolean privateLayout, String friendlyURL) throws com.liferay.portal.kernel.exception.PortalException
From source file:com.liferay.exportimport.content.processor.base.BaseTextExportImportContentProcessor.java
License:Open Source License
protected String replaceExportLayoutReferences(PortletDataContext portletDataContext, StagedModel stagedModel, String content) throws Exception { Group group = GroupLocalServiceUtil.getGroup(portletDataContext.getScopeGroupId()); StringBuilder sb = new StringBuilder(content); String[] patterns = { "href=", "[[" }; int beginPos = -1; int endPos = content.length(); int offset = 0; while (true) { if (beginPos > -1) { endPos = beginPos - 1;/*w ww . j a va 2 s .c om*/ } beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos); if (beginPos == -1) { break; } if (content.startsWith("href=", beginPos)) { offset = 5; char c = content.charAt(beginPos + offset); if ((c == CharPool.APOSTROPHE) || (c == CharPool.QUOTE)) { offset++; } } else if (content.charAt(beginPos) == CharPool.OPEN_BRACKET) { offset = 2; } endPos = StringUtil.indexOfAny(content, LAYOUT_REFERENCE_STOP_CHARS, beginPos + offset, endPos); if (endPos == -1) { continue; } String url = content.substring(beginPos + offset, endPos); if (url.endsWith(StringPool.SLASH)) { url = url.substring(0, url.length() - 1); } StringBundler urlSB = new StringBundler(6); try { url = replaceExportHostname(portletDataContext.getScopeGroupId(), url, urlSB); if (!url.startsWith(StringPool.SLASH)) { continue; } String pathContext = PortalUtil.getPathContext(); if (pathContext.length() > 1) { if (!url.startsWith(pathContext)) { continue; } urlSB.append(DATA_HANDLER_PATH_CONTEXT); url = url.substring(pathContext.length()); } if (!url.startsWith(StringPool.SLASH)) { continue; } int pos = url.indexOf(StringPool.SLASH, 1); String localePath = StringPool.BLANK; Locale locale = null; if (pos != -1) { localePath = url.substring(0, pos); locale = LocaleUtil.fromLanguageId(localePath.substring(1), true, false); } if (locale != null) { String urlWithoutLocale = url.substring(localePath.length()); if (urlWithoutLocale.startsWith(PRIVATE_GROUP_SERVLET_MAPPING) || urlWithoutLocale.startsWith(PRIVATE_USER_SERVLET_MAPPING) || urlWithoutLocale.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) { urlSB.append(localePath); url = urlWithoutLocale; } } boolean privateLayout = false; if (url.startsWith(PRIVATE_GROUP_SERVLET_MAPPING)) { urlSB.append(DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING); url = url.substring(PRIVATE_GROUP_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(PRIVATE_USER_SERVLET_MAPPING)) { urlSB.append(DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING); url = url.substring(PRIVATE_USER_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) { urlSB.append(DATA_HANDLER_PUBLIC_SERVLET_MAPPING); url = url.substring(PUBLIC_GROUP_SERVLET_MAPPING.length() - 1); } else { String urlSBString = urlSB.toString(); LayoutSet layoutSet = null; if (urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_SECURE_URL) || urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_URL)) { layoutSet = group.getPublicLayoutSet(); } else if (urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_SECURE_URL) || urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_URL)) { layoutSet = group.getPrivateLayoutSet(); } if (layoutSet == null) { continue; } privateLayout = layoutSet.isPrivateLayout(); LayoutFriendlyURL layoutFriendlyUrl = LayoutFriendlyURLLocalServiceUtil .fetchFirstLayoutFriendlyURL(group.getGroupId(), privateLayout, url); if (layoutFriendlyUrl == null) { continue; } if (privateLayout) { if (group.isUser()) { urlSB.append(DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING); } else { urlSB.append(DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING); } } else { urlSB.append(DATA_HANDLER_PUBLIC_SERVLET_MAPPING); } urlSB.append(DATA_HANDLER_GROUP_FRIENDLY_URL); continue; } long groupId = group.getGroupId(); Layout layout = LayoutLocalServiceUtil.fetchLayoutByFriendlyURL(groupId, privateLayout, url); if (layout != null) { Element entityElement = portletDataContext.getExportDataElement(stagedModel); portletDataContext.addReferenceElement(stagedModel, entityElement, layout, PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true); continue; } pos = url.indexOf(StringPool.SLASH, 1); String groupFriendlyURL = url; if (pos != -1) { groupFriendlyURL = url.substring(0, pos); } Group urlGroup = GroupLocalServiceUtil.fetchFriendlyURLGroup(group.getCompanyId(), groupFriendlyURL); if (urlGroup == null) { throw new NoSuchLayoutException(); } urlSB.append(DATA_HANDLER_GROUP_FRIENDLY_URL); // Append the UUID. This information will be used during the // import process when looking up the proper group for the link. urlSB.append(StringPool.AT); if (urlGroup.isStagedRemotely()) { String remoteGroupUuid = urlGroup.getTypeSettingsProperty("remoteGroupUUID"); if (Validator.isNotNull(remoteGroupUuid)) { urlSB.append(remoteGroupUuid); } } else if (urlGroup.isStaged()) { Group liveGroup = urlGroup.getLiveGroup(); urlSB.append(liveGroup.getUuid()); } else if (group.getGroupId() == urlGroup.getGroupId()) { urlSB.append(urlGroup.getFriendlyURL()); } else { urlSB.append(urlGroup.getUuid()); } urlSB.append(StringPool.AT); String siteAdminURL = GroupConstants.CONTROL_PANEL_FRIENDLY_URL + PropsValues.CONTROL_PANEL_LAYOUT_FRIENDLY_URL; if (url.endsWith(siteAdminURL)) { urlSB.append(DATA_HANDLER_SITE_ADMIN_URL); url = StringPool.BLANK; continue; } if (pos == -1) { url = StringPool.BLANK; continue; } url = url.substring(pos); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(urlGroup.getGroupId(), privateLayout, url); Element entityElement = portletDataContext.getExportDataElement(stagedModel); portletDataContext.addReferenceElement(stagedModel, entityElement, layout, PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true); } catch (Exception e) { if (e instanceof NoSuchLayoutException && !isValidateLayoutReferences()) { continue; } if (_log.isDebugEnabled()) { _log.debug(e, e); } else if (_log.isWarnEnabled()) { StringBundler exceptionSB = new StringBundler(6); exceptionSB.append("Unable to process layout URL "); exceptionSB.append(url); exceptionSB.append(" for staged model "); exceptionSB.append(stagedModel.getModelClassName()); exceptionSB.append(" with primary key "); exceptionSB.append(stagedModel.getPrimaryKeyObj()); _log.warn(exceptionSB.toString()); } } finally { if (urlSB.length() > 0) { urlSB.append(url); url = urlSB.toString(); } sb.replace(beginPos + offset, endPos, url); } } return sb.toString(); }
From source file:com.liferay.exportimport.content.processor.base.BaseTextExportImportContentProcessor.java
License:Open Source License
protected void validateLayoutReferences(long groupId, String content) throws PortalException { if (!isValidateLayoutReferences()) { return;/* ww w . java2 s. com*/ } Group group = GroupLocalServiceUtil.getGroup(groupId); String[] patterns = { "href=", "[[" }; int beginPos = -1; int endPos = content.length(); int offset = 0; while (true) { if (beginPos > -1) { endPos = beginPos - 1; } beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos); if (beginPos == -1) { break; } if (content.startsWith("href=", beginPos)) { offset = 5; char c = content.charAt(beginPos + offset); if ((c == CharPool.APOSTROPHE) || (c == CharPool.QUOTE)) { offset++; } } else if (content.charAt(beginPos) == CharPool.OPEN_BRACKET) { offset = 2; } endPos = StringUtil.indexOfAny(content, LAYOUT_REFERENCE_STOP_CHARS, beginPos + offset, endPos); if (endPos == -1) { continue; } String url = content.substring(beginPos + offset, endPos); endPos = url.indexOf(Portal.FRIENDLY_URL_SEPARATOR); if (endPos != -1) { url = url.substring(0, endPos); } if (url.endsWith(StringPool.SLASH)) { url = url.substring(0, url.length() - 1); } StringBundler urlSB = new StringBundler(1); url = replaceExportHostname(groupId, url, urlSB); if (!url.startsWith(StringPool.SLASH)) { continue; } String pathContext = PortalUtil.getPathContext(); if (pathContext.length() > 1) { if (!url.startsWith(pathContext)) { continue; } url = url.substring(pathContext.length()); } if (!url.startsWith(StringPool.SLASH)) { continue; } int pos = url.indexOf(StringPool.SLASH, 1); String localePath = StringPool.BLANK; Locale locale = null; if (pos != -1) { localePath = url.substring(0, pos); locale = LocaleUtil.fromLanguageId(localePath.substring(1), true, false); } if (locale != null) { String urlWithoutLocale = url.substring(localePath.length()); if (urlWithoutLocale.startsWith(PRIVATE_GROUP_SERVLET_MAPPING) || urlWithoutLocale.startsWith(PRIVATE_USER_SERVLET_MAPPING) || urlWithoutLocale.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) { url = urlWithoutLocale; } } boolean privateLayout = false; if (url.startsWith(PRIVATE_GROUP_SERVLET_MAPPING)) { url = url.substring(PRIVATE_GROUP_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(PRIVATE_USER_SERVLET_MAPPING)) { url = url.substring(PRIVATE_USER_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) { url = url.substring(PUBLIC_GROUP_SERVLET_MAPPING.length() - 1); } else { String urlSBString = urlSB.toString(); LayoutSet layoutSet = null; if (urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_SECURE_URL) || urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_URL)) { layoutSet = group.getPublicLayoutSet(); } else if (urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_SECURE_URL) || urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_URL)) { layoutSet = group.getPrivateLayoutSet(); } if (layoutSet == null) { continue; } privateLayout = layoutSet.isPrivateLayout(); } Layout layout = LayoutLocalServiceUtil.fetchLayoutByFriendlyURL(groupId, privateLayout, url); if (layout != null) { continue; } String siteAdminURL = GroupConstants.CONTROL_PANEL_FRIENDLY_URL + PropsValues.CONTROL_PANEL_LAYOUT_FRIENDLY_URL; if (url.endsWith(VirtualLayoutConstants.CANONICAL_URL_SEPARATOR + siteAdminURL)) { url = url.substring(url.indexOf(siteAdminURL)); } pos = url.indexOf(StringPool.SLASH, 1); String groupFriendlyURL = url; if (pos != -1) { groupFriendlyURL = url.substring(0, pos); } Group urlGroup = GroupLocalServiceUtil.fetchFriendlyURLGroup(group.getCompanyId(), groupFriendlyURL); if (urlGroup == null) { throw new NoSuchLayoutException(); } if (pos == -1) { continue; } url = url.substring(pos); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(urlGroup.getGroupId(), privateLayout, url); } }
From source file:com.liferay.exportimport.resources.importer.test.ResourcesImporterTest.java
License:Open Source License
protected void validateLayouts(Group importedGroup) throws Exception { long privateLayoutsCount = LayoutLocalServiceUtil.getLayoutsCount(importedGroup, true); Assert.assertEquals(1, privateLayoutsCount); long publicLayoutsCount = LayoutLocalServiceUtil.getLayoutsCount(importedGroup, false); Assert.assertEquals(9, publicLayoutsCount); Layout layout = LayoutLocalServiceUtil.getFriendlyURLLayout(importedGroup.getGroupId(), false, "/home"); Map<Locale, String> nameMap = layout.getNameMap(); Assert.assertTrue(nameMap.containsValue("Bienvenue")); Assert.assertTrue(layout.isTypePortlet()); LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType(); List<Portlet> portlets = layoutTypePortlet.getAllPortlets(); Assert.assertEquals(portlets.toString(), 7, portlets.size()); UnicodeProperties layoutTypeSettingsProperties = layout.getTypeSettingsProperties(); String nestedColumnIds = layoutTypeSettingsProperties.get(LayoutTypePortletConstants.NESTED_COLUMN_IDS); Assert.assertTrue((nestedColumnIds != null) && nestedColumnIds.contains("column-1") && nestedColumnIds.contains("column-2")); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(importedGroup.getGroupId(), false, "/layout-prototypes-page-1"); Assert.assertTrue(layout.isLayoutPrototypeLinkActive()); Assert.assertEquals("371647ba-3649-4039-bfe6-ae32cf404737", layout.getLayoutPrototypeUuid()); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(importedGroup.getGroupId(), false, "/layout-prototypes-page-2"); Assert.assertFalse(layout.isLayoutPrototypeLinkActive()); Assert.assertEquals("c98067d0-fc10-9556-7364-238d39693bc4", layout.getLayoutPrototypeUuid()); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(importedGroup.getGroupId(), false, "/url-page"); Assert.assertTrue(layout.isTypeURL()); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(importedGroup.getGroupId(), false, "/hidden-page"); Assert.assertTrue(layout.isHidden()); }
From source file:com.liferay.exportimport.test.LayoutSetPrototypePropagationTest.java
License:Open Source License
@Test public void testPortletPreferencesPropagationWithPreferencesUniquePerLayoutEnabled() throws Exception { Portlet portlet = PortletLocalServiceUtil.getPortletById(TestPropsValues.getCompanyId(), JournalContentPortletKeys.JOURNAL_CONTENT); boolean preferencesUniquePerLayout = portlet.getPreferencesUniquePerLayout(); try {/*ww w .java2 s. c o m*/ portlet.setPreferencesUniquePerLayout(false); _layoutSetPrototypeLayout = LayoutTestUtil.addLayout(_layoutSetPrototypeGroup, true, layoutPrototype, true); Map<String, String[]> preferenceMap = new HashMap<>(); preferenceMap.put("bulletStyle", new String[] { "Dots" }); String testPortletId1 = LayoutTestUtil.addPortletToLayout(TestPropsValues.getUserId(), _layoutSetPrototypeLayout, JournalContentPortletKeys.JOURNAL_CONTENT, "column-1", preferenceMap); preferenceMap.put("bulletStyle", new String[] { "Arrows" }); String testPortletId2 = LayoutTestUtil.addPortletToLayout(TestPropsValues.getUserId(), _layoutSetPrototypeLayout, JournalContentPortletKeys.JOURNAL_CONTENT, "column-2", preferenceMap); propagateChanges(group); Layout layout = LayoutLocalServiceUtil.getFriendlyURLLayout(group.getGroupId(), false, _layoutSetPrototypeLayout.getFriendlyURL()); PortletPreferences testPortletIdPortletPreferences = PortletPreferencesFactoryUtil .getPortletSetup(group.getGroupId(), layout, JournalContentPortletKeys.JOURNAL_CONTENT, null); Assert.assertEquals("Arrows", testPortletIdPortletPreferences.getValue("bulletStyle", StringPool.BLANK)); PortletPreferences testPortletId1PortletPreferences = PortletPreferencesFactoryUtil .getPortletSetup(layout, testPortletId1, null); Assert.assertEquals("Arrows", testPortletId1PortletPreferences.getValue("bulletStyle", StringPool.BLANK)); PortletPreferences testPortletId2PortletPreferences = PortletPreferencesFactoryUtil .getPortletSetup(layout, testPortletId2, null); Assert.assertEquals("Arrows", testPortletId2PortletPreferences.getValue("bulletStyle", StringPool.BLANK)); } finally { portlet.setPreferencesUniquePerLayout(preferencesUniquePerLayout); } }
From source file:com.liferay.exportimport.test.LayoutSetPrototypePropagationTest.java
License:Open Source License
@Override protected void doSetUp() throws Exception { // Layout set prototype _layoutSetPrototype = LayoutTestUtil.addLayoutSetPrototype(RandomTestUtil.randomString()); _layoutSetPrototypeGroup = _layoutSetPrototype.getGroup(); prototypeLayout = LayoutTestUtil.addLayout(_layoutSetPrototypeGroup, true); LayoutTestUtil.updateLayoutTemplateId(prototypeLayout, initialLayoutTemplateId); _layoutSetPrototypeJournalArticle = JournalTestUtil.addArticle(_layoutSetPrototypeGroup.getGroupId(), "Test Article", "Test Content"); portletId = addPortletToLayout(TestPropsValues.getUserId(), prototypeLayout, _layoutSetPrototypeJournalArticle, "column-1"); _prototypeLayout = LayoutTestUtil.addLayout(_layoutSetPrototypeGroup, true); LayoutTestUtil.updateLayoutTemplateId(_prototypeLayout, initialLayoutTemplateId); _portletId = addPortletToLayout(TestPropsValues.getUserId(), _prototypeLayout, _layoutSetPrototypeJournalArticle, "column-1"); _initialPrototypeLayoutCount = LayoutLocalServiceUtil.getLayoutsCount(_layoutSetPrototypeGroup, true); // Group/*from w w w .jav a 2 s . c o m*/ setLinkEnabled(true); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(group.getGroupId(), false, prototypeLayout.getFriendlyURL()); _layout = LayoutLocalServiceUtil.getFriendlyURLLayout(group.getGroupId(), false, _prototypeLayout.getFriendlyURL()); _initialLayoutCount = getGroupLayoutCount(); journalArticle = JournalArticleLocalServiceUtil.getArticleByUrlTitle(group.getGroupId(), _layoutSetPrototypeJournalArticle.getUrlTitle()); // Users _user1 = UserTestUtil.addUser(); _user2 = UserTestUtil.addUser(); }
From source file:com.liferay.exportimport.test.LayoutSetPrototypePropagationTest.java
License:Open Source License
protected void doTestLayoutPropagationWithLayoutPrototype(boolean layoutSetLayoutLinkEnabled) throws Exception { MergeLayoutPrototypesThreadLocal.clearMergeComplete(); _layoutSetPrototypeLayout = LayoutTestUtil.addLayout(_layoutSetPrototypeGroup, true, layoutPrototype, layoutSetLayoutLinkEnabled); _layoutSetPrototypeLayout = propagateChanges(_layoutSetPrototypeLayout); propagateChanges(group);/*from ww w. j a va2s . c om*/ Layout layout = LayoutLocalServiceUtil.getFriendlyURLLayout(group.getGroupId(), false, _layoutSetPrototypeLayout.getFriendlyURL()); LayoutTestUtil.updateLayoutTemplateId(layoutPrototypeLayout, "1_column"); if (layoutSetLayoutLinkEnabled) { Assert.assertEquals(initialLayoutTemplateId, LayoutTestUtil.getLayoutTemplateId(layout)); } layout = propagateChanges(layout); propagateChanges(group); if (layoutSetLayoutLinkEnabled) { Assert.assertEquals("1_column", LayoutTestUtil.getLayoutTemplateId(layout)); } else { Assert.assertEquals(initialLayoutTemplateId, LayoutTestUtil.getLayoutTemplateId(layout)); } }
From source file:se.vgregion.portal.innovationsslussen.createidea.controller.CreateIdeaViewController.java
License:Open Source License
protected Layout getFriendlyURLLayout(long scopeGroupId, ThemeDisplay themeDisplay) throws SystemException, PortalException { return LayoutLocalServiceUtil.getFriendlyURLLayout(scopeGroupId, themeDisplay.getLayout().isPrivateLayout(), "/ide"); }
From source file:se.vgregion.portal.innovationsslussen.createidea.controller.CreateIdeaViewController.java
License:Open Source License
private Layout getLayout(long groupId, boolean isPrivateLayout, String friendlyURL) { Layout layout = null;/* w w w .j a v a 2s . c o m*/ try { layout = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId, isPrivateLayout, friendlyURL); } catch (PortalException e) { // Don't do anything (at least not for now) } catch (SystemException e) { // Don't do anything (at least not for now) } return layout; }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
protected Layout getFriendlyURLLayout(long scopeGroupId, boolean priv) throws SystemException, PortalException { return LayoutLocalServiceUtil.getFriendlyURLLayout(scopeGroupId, priv, "/ide"); }
From source file:se.vgregion.portal.innovationsslussen.ideaadmin.controller.IdeaAdminViewController.java
License:Open Source License
protected Layout getFriendlyURLLayout(long scopeGroupId) { try {/* www . ja va2 s . co m*/ return LayoutLocalServiceUtil.getFriendlyURLLayout(scopeGroupId, false, "/ide"); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } return null; }