Example usage for com.liferay.portal.kernel.model LayoutTemplateConstants CUSTOM_SEPARATOR

List of usage examples for com.liferay.portal.kernel.model LayoutTemplateConstants CUSTOM_SEPARATOR

Introduction

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

Prototype

String CUSTOM_SEPARATOR

To view the source code for com.liferay.portal.kernel.model LayoutTemplateConstants CUSTOM_SEPARATOR.

Click Source Link

Usage

From source file:com.liferay.nested.portlets.web.internal.portlet.NestedPortletsPortlet.java

License:Open Source License

@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
        throws IOException, PortletException {

    ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);

    String layoutTemplateId = StringPool.BLANK;

    try {//w w  w  . j av  a 2 s . co m
        NestedPortletsDisplayContext nestedPortletsDisplayContext = new NestedPortletsDisplayContext(
                _portal.getHttpServletRequest(renderRequest));

        layoutTemplateId = nestedPortletsDisplayContext.getLayoutTemplateId();
    } catch (ConfigurationException ce) {
        if (_log.isWarnEnabled()) {
            _log.warn(ce, ce);
        }
    }

    String templateId = StringPool.BLANK;
    String templateContent = StringPool.BLANK;

    Map<String, String> columnIds = new HashMap<>();

    if (Validator.isNotNull(layoutTemplateId)) {
        Theme theme = themeDisplay.getTheme();

        LayoutTemplate layoutTemplate = _layoutTemplateLocalService.getLayoutTemplate(layoutTemplateId, false,
                theme.getThemeId());

        String content = layoutTemplate.getContent();

        Matcher processColumnMatcher = _processColumnPattern.matcher(content);

        while (processColumnMatcher.find()) {
            String columnId = processColumnMatcher.group(2);

            if (Validator.isNotNull(columnId)) {
                columnIds.put(columnId, renderResponse.getNamespace() + StringPool.UNDERLINE + columnId);
            }
        }

        processColumnMatcher.reset();

        StringBundler sb = new StringBundler(4);

        sb.append(theme.getThemeId());
        sb.append(LayoutTemplateConstants.CUSTOM_SEPARATOR);
        sb.append(renderResponse.getNamespace());
        sb.append(layoutTemplateId);

        templateId = sb.toString();

        content = processColumnMatcher.replaceAll("$1\\${$2}$3");

        Matcher columnIdMatcher = _columnIdPattern.matcher(content);

        templateContent = columnIdMatcher.replaceAll("$1" + renderResponse.getNamespace() + "$2$3");
    }

    checkLayout(themeDisplay.getLayout(), columnIds.values());

    PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

    renderRequest.setAttribute(NestedPortletsWebKeys.TEMPLATE_ID + portletDisplay.getId(), templateId);
    renderRequest.setAttribute(NestedPortletsWebKeys.TEMPLATE_CONTENT + portletDisplay.getId(),
            templateContent);

    Map<String, Object> vmVariables = (Map<String, Object>) renderRequest
            .getAttribute(WebKeys.VM_VARIABLES + portletDisplay.getId());

    if (vmVariables != null) {
        vmVariables.putAll(columnIds);
    } else {
        renderRequest.setAttribute(WebKeys.VM_VARIABLES + portletDisplay.getId(), columnIds);
    }

    super.include(viewTemplate, renderRequest, renderResponse);
}