Example usage for com.liferay.portal.kernel.model LayoutConstants TYPE_LINK_TO_LAYOUT

List of usage examples for com.liferay.portal.kernel.model LayoutConstants TYPE_LINK_TO_LAYOUT

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.model LayoutConstants TYPE_LINK_TO_LAYOUT.

Prototype

String TYPE_LINK_TO_LAYOUT

To view the source code for com.liferay.portal.kernel.model LayoutConstants TYPE_LINK_TO_LAYOUT.

Click Source Link

Usage

From source file:com.liferay.layout.admin.web.internal.exportimport.data.handler.LayoutStagedModelDataHandler.java

License:Open Source License

@Override
protected void doExportStagedModel(PortletDataContext portletDataContext, Layout layout) throws Exception {

    Element layoutElement = portletDataContext.getExportDataElement(layout);

    populateElementLayoutMetadata(layoutElement, layout);

    layoutElement.addAttribute(Constants.ACTION, Constants.ADD);

    portletDataContext.setPlid(layout.getPlid());

    long parentLayoutId = layout.getParentLayoutId();

    if (parentLayoutId != LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
        Layout parentLayout = _layoutLocalService.fetchLayout(layout.getGroupId(), layout.isPrivateLayout(),
                parentLayoutId);/*from   w  ww  .  j  a  v a2  s  .c o m*/

        if (parentLayout != null) {
            StagedModelDataHandlerUtil.exportReferenceStagedModel(portletDataContext, layout, parentLayout,
                    PortletDataContext.REFERENCE_TYPE_PARENT);

            layoutElement.addAttribute("parent-layout-uuid", parentLayout.getUuid());
        }
    }

    List<LayoutFriendlyURL> layoutFriendlyURLs = _layoutFriendlyURLLocalService
            .getLayoutFriendlyURLs(layout.getPlid());

    for (LayoutFriendlyURL layoutFriendlyURL : layoutFriendlyURLs) {
        StagedModelDataHandlerUtil.exportReferenceStagedModel(portletDataContext, layout, layoutFriendlyURL,
                PortletDataContext.REFERENCE_TYPE_DEPENDENCY);
    }

    if (layout.isIconImage()) {
        exportLayoutIconImage(portletDataContext, layout, layoutElement);
    }

    if (Objects.equals(layout.getType(), LayoutConstants.TYPE_LINK_TO_LAYOUT)) {

        exportLinkedLayout(portletDataContext, layout, layoutElement);
    } else if (Objects.equals(layout.getType(), LayoutConstants.TYPE_PORTLET)) {

        exportLayoutPortlets(portletDataContext, layout, layoutElement);
    }

    fixExportTypeSettings(layout);

    exportTheme(portletDataContext, layout);

    portletDataContext.addClassedModel(layoutElement, ExportImportPathUtil.getModelPath(layout),
            LayoutStagingUtil.mergeLayoutRevisionIntoLayout(layout));
}

From source file:com.liferay.layout.admin.web.internal.exportimport.data.handler.LayoutStagedModelDataHandler.java

License:Open Source License

@Override
protected void doImportStagedModel(PortletDataContext portletDataContext, Layout layout) throws Exception {

    final long groupId = portletDataContext.getGroupId();
    long userId = portletDataContext.getUserId(layout.getUserUuid());

    Element layoutElement = portletDataContext.getImportDataStagedModelElement(layout);

    long layoutId = GetterUtil.getLong(layoutElement.attributeValue("layout-id"));

    long oldLayoutId = layoutId;

    final boolean privateLayout = portletDataContext.isPrivateLayout();

    Map<Long, Layout> layouts = (Map<Long, Layout>) portletDataContext
            .getNewPrimaryKeysMap(Layout.class + ".layout");

    Layout existingLayout = null;/*from w  w w  .j a  va2  s .c o  m*/
    Layout importedLayout = null;

    String friendlyURL = layout.getFriendlyURL();

    String layoutsImportMode = MapUtil.getString(portletDataContext.getParameterMap(),
            PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE,
            PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_MERGE_BY_LAYOUT_UUID);

    if (layoutsImportMode.equals(PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_ADD_AS_NEW)) {

        layoutId = _layoutLocalService.getNextLayoutId(groupId, privateLayout);

        friendlyURL = StringPool.SLASH + layoutId;
    } else if (layoutsImportMode.equals(PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_MERGE_BY_LAYOUT_NAME)) {

        Locale locale = LocaleUtil.getSiteDefault();

        String localizedName = layout.getName(locale);

        List<Layout> previousLayouts = _layoutLocalService.getLayouts(groupId, privateLayout);

        for (Layout curLayout : previousLayouts) {
            if (localizedName.equals(curLayout.getName(locale))
                    || friendlyURL.equals(curLayout.getFriendlyURL())) {

                existingLayout = curLayout;

                break;
            }
        }

        if (existingLayout == null) {
            layoutId = _layoutLocalService.getNextLayoutId(groupId, privateLayout);
        }
    } else if (layoutsImportMode.equals(PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_CREATED_FROM_PROTOTYPE)) {

        existingLayout = _layoutLocalService.fetchLayoutByUuidAndGroupId(layout.getUuid(), groupId,
                privateLayout);

        if (SitesUtil.isLayoutModifiedSinceLastMerge(existingLayout)) {
            layouts.put(oldLayoutId, existingLayout);

            return;
        }

        LayoutFriendlyURL layoutFriendlyURL = _layoutFriendlyURLLocalService
                .fetchFirstLayoutFriendlyURL(groupId, privateLayout, friendlyURL);

        if ((layoutFriendlyURL != null) && (existingLayout == null)) {
            Layout mergeFailFriendlyURLLayout = _layoutLocalService.getLayout(layoutFriendlyURL.getPlid());

            SitesUtil.addMergeFailFriendlyURLLayout(mergeFailFriendlyURLLayout);

            if (!_log.isWarnEnabled()) {
                return;
            }

            StringBundler sb = new StringBundler(6);

            sb.append("Layout with layout ID ");
            sb.append(layout.getLayoutId());
            sb.append(" cannot be propagated because the friendly URL ");
            sb.append("conflicts with the friendly URL of layout with ");
            sb.append("layout ID ");
            sb.append(mergeFailFriendlyURLLayout.getLayoutId());

            _log.warn(sb.toString());

            return;
        }
    } else {

        // The default behavior of import mode is
        // PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_MERGE_BY_LAYOUT_UUID

        existingLayout = _layoutLocalService.fetchLayoutByUuidAndGroupId(layout.getUuid(), groupId,
                privateLayout);

        if (existingLayout == null) {
            existingLayout = _layoutLocalService.fetchLayoutByFriendlyURL(groupId, privateLayout, friendlyURL);
        }

        if (existingLayout == null) {
            layoutId = _layoutLocalService.getNextLayoutId(groupId, privateLayout);
        }
    }

    if (_log.isDebugEnabled()) {
        StringBundler sb = new StringBundler(7);

        sb.append("Layout with {groupId=");
        sb.append(groupId);
        sb.append(",privateLayout=");
        sb.append(privateLayout);
        sb.append(",layoutId=");
        sb.append(layoutId);

        if (existingLayout == null) {
            sb.append("} does not exist");

            _log.debug(sb.toString());
        } else {
            sb.append("} exists");

            _log.debug(sb.toString());
        }
    }

    if (existingLayout == null) {
        long plid = _counterLocalService.increment();

        importedLayout = _layoutLocalService.createLayout(plid);

        if (layoutsImportMode.equals(PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_CREATED_FROM_PROTOTYPE)) {

            importedLayout.setSourcePrototypeLayoutUuid(layout.getUuid());

            layoutId = _layoutLocalService.getNextLayoutId(groupId, privateLayout);
        } else {
            importedLayout.setCreateDate(layout.getCreateDate());
            importedLayout.setModifiedDate(layout.getModifiedDate());
            importedLayout.setLayoutPrototypeUuid(layout.getLayoutPrototypeUuid());
            importedLayout.setLayoutPrototypeLinkEnabled(layout.isLayoutPrototypeLinkEnabled());
            importedLayout.setSourcePrototypeLayoutUuid(layout.getSourcePrototypeLayoutUuid());
        }

        importedLayout.setUuid(layout.getUuid());
        importedLayout.setGroupId(groupId);
        importedLayout.setUserId(userId);
        importedLayout.setPrivateLayout(privateLayout);
        importedLayout.setLayoutId(layoutId);

        initNewLayoutPermissions(portletDataContext.getCompanyId(), groupId, userId, layout, importedLayout,
                privateLayout);

        LayoutSet layoutSet = _layoutSetLocalService.getLayoutSet(groupId, privateLayout);

        importedLayout.setLayoutSet(layoutSet);
    } else {
        importedLayout = existingLayout;
    }

    portletDataContext.setPlid(importedLayout.getPlid());
    portletDataContext.setOldPlid(layout.getPlid());

    long parentLayoutId = layout.getParentLayoutId();

    String parentLayoutUuid = GetterUtil.getString(layoutElement.attributeValue("parent-layout-uuid"));

    Element parentLayoutElement = portletDataContext.getReferenceDataElement(layout, Layout.class,
            layout.getGroupId(), parentLayoutUuid);

    if ((parentLayoutId != LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) && (parentLayoutElement != null)) {

        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, parentLayoutElement);

        Layout importedParentLayout = layouts.get(parentLayoutId);

        parentLayoutId = importedParentLayout.getLayoutId();
    }

    if (_log.isDebugEnabled()) {
        StringBundler sb = new StringBundler(4);

        sb.append("Importing layout with layout ID ");
        sb.append(layoutId);
        sb.append(" and parent layout ID ");
        sb.append(parentLayoutId);

        _log.debug(sb.toString());
    }

    importedLayout.setCompanyId(portletDataContext.getCompanyId());

    if (layout.getLayoutPrototypeUuid() != null) {
        importedLayout.setModifiedDate(new Date());
    }

    importedLayout.setParentLayoutId(parentLayoutId);
    importedLayout.setName(layout.getName());
    importedLayout.setTitle(layout.getTitle());
    importedLayout.setDescription(layout.getDescription());
    importedLayout.setKeywords(layout.getKeywords());
    importedLayout.setRobots(layout.getRobots());
    importedLayout.setType(layout.getType());

    String portletsMergeMode = MapUtil.getString(portletDataContext.getParameterMap(),
            PortletDataHandlerKeys.PORTLETS_MERGE_MODE, PortletDataHandlerKeys.PORTLETS_MERGE_MODE_REPLACE);

    if (Objects.equals(layout.getType(), LayoutConstants.TYPE_PORTLET)
            && Validator.isNotNull(layout.getTypeSettings())
            && !portletsMergeMode.equals(PortletDataHandlerKeys.PORTLETS_MERGE_MODE_REPLACE)) {

        mergePortlets(importedLayout, layout.getTypeSettings(), portletsMergeMode);
    } else if (Objects.equals(layout.getType(), LayoutConstants.TYPE_LINK_TO_LAYOUT)) {

        importLinkedLayout(portletDataContext, layout, importedLayout, layoutElement);

        updateTypeSettings(importedLayout, layout);
    } else {
        updateTypeSettings(importedLayout, layout);
    }

    importedLayout.setHidden(layout.isHidden());
    importedLayout.setFriendlyURL(getUniqueFriendlyURL(portletDataContext, importedLayout, friendlyURL));

    if (layout.getIconImageId() > 0) {
        importLayoutIconImage(portletDataContext, importedLayout, layoutElement);
    } else if (importedLayout.getIconImageId() > 0) {
        _imageLocalService.deleteImage(importedLayout.getIconImageId());

        importedLayout.setIconImageId(0);
    }

    if (existingLayout == null) {
        try {
            final long finalParentLayoutId = parentLayoutId;

            int priority = TransactionInvokerUtil.invoke(_transactionConfig, new Callable<Integer>() {

                @Override
                public Integer call() throws Exception {
                    return _layoutLocalServiceHelper.getNextPriority(groupId, privateLayout,
                            finalParentLayoutId, null, -1);
                }

            });

            importedLayout.setPriority(priority);
        } catch (Throwable t) {
            ReflectionUtil.throwException(t);
        }
    }

    importedLayout.setLayoutPrototypeUuid(layout.getLayoutPrototypeUuid());
    importedLayout.setLayoutPrototypeLinkEnabled(layout.isLayoutPrototypeLinkEnabled());

    ServiceContext serviceContext = portletDataContext.createServiceContext(layout);

    importedLayout.setExpandoBridgeAttributes(serviceContext);

    _staging.updateLastImportSettings(layoutElement, importedLayout, portletDataContext);

    fixImportTypeSettings(importedLayout);

    importTheme(portletDataContext, layout, importedLayout);

    _layoutLocalService.updateLayout(importedLayout);

    _layoutSetLocalService.updatePageCount(groupId, privateLayout);

    Map<Long, Long> layoutPlids = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(Layout.class);

    layoutPlids.put(layout.getPlid(), importedLayout.getPlid());

    layouts.put(oldLayoutId, importedLayout);

    if (Objects.equals(layout.getType(), LayoutConstants.TYPE_PORTLET)
            && Validator.isNotNull(layout.getTypeSettings())) {

        importLayoutPortlets(portletDataContext, importedLayout, layoutElement);
    }

    importAssets(portletDataContext, layout, importedLayout);

    importLayoutFriendlyURLs(portletDataContext, layout, importedLayout);

    portletDataContext.importClassedModel(layout, importedLayout);
}

From source file:com.liferay.layout.type.controller.link.to.page.internal.controller.LinkToPageLayoutTypeController.java

License:Open Source License

@Override
public String getType() {
    return LayoutConstants.TYPE_LINK_TO_LAYOUT;
}