Example usage for com.liferay.portal.kernel.template TemplateManagerUtil getTemplateManager

List of usage examples for com.liferay.portal.kernel.template TemplateManagerUtil getTemplateManager

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.template TemplateManagerUtil getTemplateManager.

Prototype

public static TemplateManager getTemplateManager(String templateManagerName) 

Source Link

Usage

From source file:com.liferay.dynamic.data.lists.web.internal.template.DDLDisplayTemplateTransformer.java

License:Open Source License

public String transform() throws Exception {
    Transformer transformer = TransformerHolder.getTransformer();

    Map<String, Object> contextObjects = new HashMap<>();

    contextObjects.put(DDLConstants.RESERVED_DDM_STRUCTURE_ID, _recordSet.getDDMStructureId());
    contextObjects.put(DDLConstants.RESERVED_DDM_TEMPLATE_ID, _ddmTemplateId);
    contextObjects.put(DDLConstants.RESERVED_RECORD_SET_DESCRIPTION,
            _recordSet.getDescription(_themeDisplay.getLocale()));
    contextObjects.put(DDLConstants.RESERVED_RECORD_SET_ID, _recordSet.getRecordSetId());
    contextObjects.put(DDLConstants.RESERVED_RECORD_SET_NAME, _recordSet.getName(_themeDisplay.getLocale()));
    contextObjects.put(TemplateConstants.TEMPLATE_ID, _ddmTemplateId);

    String viewMode = Constants.VIEW;

    if (_renderRequest != null) {
        viewMode = ParamUtil.getString(_renderRequest, "viewMode", Constants.VIEW);
    }/*from   ww  w .  j  a  va 2s  .c  om*/

    contextObjects.put("viewMode", viewMode);

    DDMTemplate ddmTemplate = DDMTemplateLocalServiceUtil.getTemplate(_ddmTemplateId);

    contextObjects.put(TemplateConstants.CLASS_NAME_ID, ddmTemplate.getClassNameId());

    TemplateManager templateManager = TemplateManagerUtil.getTemplateManager(ddmTemplate.getLanguage());

    TemplateHandler templateHandler = TemplateHandlerRegistryUtil
            .getTemplateHandler(DDLRecordSet.class.getName());

    templateManager.addContextObjects(contextObjects, templateHandler.getCustomContextObjects());

    templateManager.addTaglibSupport(contextObjects, PortalUtil.getHttpServletRequest(_renderRequest),
            _themeDisplay.getResponse());

    return transformer.transform(_themeDisplay, contextObjects, ddmTemplate.getScript(),
            ddmTemplate.getLanguage(), new UnsyncStringWriter());
}

From source file:com.liferay.dynamic.data.mapping.internal.render.DDMFormFieldFreeMarkerRenderer.java

License:Open Source License

protected String processFTL(HttpServletRequest request, HttpServletResponse response, String fieldNamespace,
        String type, String mode, boolean readOnly, Map<String, Object> freeMarkerContext) throws Exception {

    if (Validator.isNull(fieldNamespace)) {
        fieldNamespace = _DEFAULT_NAMESPACE;
    }//from ww w  .  j a va  2  s  . c om

    TemplateResource templateResource = _defaultTemplateResource;

    Map<String, Object> fieldStructure = (Map<String, Object>) freeMarkerContext.get("fieldStructure");

    boolean fieldReadOnly = GetterUtil.getBoolean(fieldStructure.get("readOnly"));

    if ((fieldReadOnly && Validator.isNotNull(mode)
            && StringUtil.equalsIgnoreCase(mode, DDMTemplateConstants.TEMPLATE_MODE_EDIT)) || readOnly) {

        fieldNamespace = _DEFAULT_READ_ONLY_NAMESPACE;

        templateResource = _defaultReadOnlyTemplateResource;
    }

    String templateName = StringUtil.replaceFirst(type, fieldNamespace.concat(StringPool.DASH),
            StringPool.BLANK);

    StringBundler sb = new StringBundler(5);

    sb.append(_TPL_PATH);
    sb.append(StringUtil.toLowerCase(fieldNamespace));
    sb.append(CharPool.SLASH);
    sb.append(templateName);
    sb.append(_TPL_EXT);

    String resource = sb.toString();

    URL url = getResource(resource);

    if (url != null) {
        templateResource = getTemplateResource(resource);
    }

    if (templateResource == null) {
        throw new Exception("Unable to load template resource " + resource);
    }

    Template template = TemplateManagerUtil.getTemplate(TemplateConstants.LANG_TYPE_FTL, templateResource,
            false);

    for (Map.Entry<String, Object> entry : freeMarkerContext.entrySet()) {
        template.put(entry.getKey(), entry.getValue());
    }

    TemplateManager templateManager = TemplateManagerUtil.getTemplateManager(TemplateConstants.LANG_TYPE_FTL);

    templateManager.addTaglibSupport(template, request, response);

    return processFTL(request, response, template);
}

From source file:com.liferay.journal.transformer.JournalTransformer.java

License:Open Source License

protected String doTransform(ThemeDisplay themeDisplay, Map<String, Object> contextObjects,
        Map<String, String> tokens, String viewMode, String languageId, Document document,
        PortletRequestModel portletRequestModel, String script, String langType, boolean propagateException)
        throws Exception {

    // Setup listeners

    if (_log.isDebugEnabled()) {
        _log.debug("Language " + languageId);
    }//from w w  w . j  a  v a  2 s.  c  o m

    if (Validator.isNull(viewMode)) {
        viewMode = Constants.VIEW;
    }

    if (_logTokens.isDebugEnabled()) {
        String tokensString = PropertiesUtil.list(tokens);

        _logTokens.debug(tokensString);
    }

    if (_logTransformBefore.isDebugEnabled()) {
        _logTransformBefore.debug(document);
    }

    List<TransformerListener> transformerListeners = JournalTransformerListenerRegistryUtil
            .getTransformerListeners();

    for (TransformerListener transformerListener : transformerListeners) {

        // Modify XML

        if (_logXmlBeforeListener.isDebugEnabled()) {
            _logXmlBeforeListener.debug(document);
        }

        if (transformerListener != null) {
            document = transformerListener.onXml(document, languageId, tokens);

            if (_logXmlAfterListener.isDebugEnabled()) {
                _logXmlAfterListener.debug(document);
            }
        }

        // Modify script

        if (_logScriptBeforeListener.isDebugEnabled()) {
            _logScriptBeforeListener.debug(script);
        }

        if (transformerListener != null) {
            script = transformerListener.onScript(script, document, languageId, tokens);

            if (_logScriptAfterListener.isDebugEnabled()) {
                _logScriptAfterListener.debug(script);
            }
        }
    }

    // Transform

    String output = null;

    if (Validator.isNull(langType)) {
        output = LocalizationUtil.getLocalization(document.asXML(), languageId);
    } else {
        long companyId = 0;
        long companyGroupId = 0;
        long articleGroupId = 0;
        long classNameId = 0;

        if (tokens != null) {
            companyId = GetterUtil.getLong(tokens.get("company_id"));
            companyGroupId = GetterUtil.getLong(tokens.get("company_group_id"));
            articleGroupId = GetterUtil.getLong(tokens.get("article_group_id"));
            classNameId = GetterUtil.getLong(tokens.get(TemplateConstants.CLASS_NAME_ID));
        }

        long scopeGroupId = 0;
        long siteGroupId = 0;

        if (themeDisplay != null) {
            companyId = themeDisplay.getCompanyId();
            companyGroupId = themeDisplay.getCompanyGroupId();
            scopeGroupId = themeDisplay.getScopeGroupId();
            siteGroupId = themeDisplay.getSiteGroupId();
        }

        String templateId = tokens.get("template_id");

        templateId = getTemplateId(templateId, companyId, companyGroupId, articleGroupId);

        Template template = getTemplate(templateId, tokens, languageId, document, script, langType);

        if (contextObjects != null) {
            template.putAll(contextObjects);
        }

        UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter();

        try {
            if (document != null) {
                Element rootElement = document.getRootElement();

                List<TemplateNode> templateNodes = getTemplateNodes(themeDisplay, rootElement,
                        Long.valueOf(tokens.get("ddm_structure_id")));

                if (templateNodes != null) {
                    for (TemplateNode templateNode : templateNodes) {
                        template.put(templateNode.getName(), templateNode);
                    }
                }

                if (portletRequestModel != null) {
                    template.put("request", portletRequestModel.toMap());

                    if (langType.equals(TemplateConstants.LANG_TYPE_XSL)) {
                        Document requestDocument = SAXReaderUtil.read(portletRequestModel.toXML());

                        Element requestElement = requestDocument.getRootElement();

                        template.put("xmlRequest", requestElement.asXML());
                    }
                } else {
                    Element requestElement = rootElement.element("request");

                    template.put("request", insertRequestVariables(requestElement));

                    if (langType.equals(TemplateConstants.LANG_TYPE_XSL)) {
                        template.put("xmlRequest", requestElement.asXML());
                    }
                }
            }

            template.put("articleGroupId", articleGroupId);
            template.put("company", getCompany(themeDisplay, companyId));
            template.put("companyId", companyId);
            template.put("device", getDevice(themeDisplay));

            String templatesPath = getTemplatesPath(companyId, articleGroupId, classNameId);

            Locale locale = LocaleUtil.fromLanguageId(languageId);

            template.put("locale", locale);

            template.put("permissionChecker", PermissionThreadLocal.getPermissionChecker());
            template.put("randomNamespace", StringUtil.randomId() + StringPool.UNDERLINE);
            template.put("scopeGroupId", scopeGroupId);
            template.put("siteGroupId", siteGroupId);
            template.put("templatesPath", templatesPath);
            template.put("viewMode", viewMode);

            if (themeDisplay != null) {
                TemplateManager templateManager = TemplateManagerUtil.getTemplateManager(langType);

                HttpServletRequest request = themeDisplay.getRequest();

                templateManager.addTaglibSupport(template, request, themeDisplay.getResponse());
                templateManager.addTaglibTheme(template, "taglibLiferay", request,
                        new PipingServletResponse(themeDisplay.getResponse(), unsyncStringWriter));
            }

            // Deprecated variables

            template.put("groupId", articleGroupId);
            template.put("journalTemplatesPath", templatesPath);

            mergeTemplate(template, unsyncStringWriter, propagateException);
        } catch (Exception e) {
            if (e instanceof DocumentException) {
                throw new TransformException("Unable to read XML document", e);
            } else if (e instanceof IOException) {
                throw new TransformException("Error reading template", e);
            } else if (e instanceof TransformException) {
                throw (TransformException) e;
            } else {
                throw new TransformException("Unhandled exception", e);
            }
        }

        output = unsyncStringWriter.toString();
    }

    // Postprocess output

    for (TransformerListener transformerListener : transformerListeners) {

        // Modify output

        if (_logOutputBeforeListener.isDebugEnabled()) {
            _logOutputBeforeListener.debug(output);
        }

        output = transformerListener.onOutput(output, languageId, tokens);

        if (_logOutputAfterListener.isDebugEnabled()) {
            _logOutputAfterListener.debug(output);
        }
    }

    if (_logTransfromAfter.isDebugEnabled()) {
        _logTransfromAfter.debug(output);
    }

    return output;
}

From source file:com.liferay.journal.util.impl.JournalUtil.java

License:Open Source License

public static String transform(ThemeDisplay themeDisplay, Map<String, String> tokens, String viewMode,
        String languageId, Document document, PortletRequestModel portletRequestModel, String script,
        String langType, boolean propagateException) throws Exception {

    TemplateManager templateManager = TemplateManagerUtil.getTemplateManager(langType);

    TemplateHandler templateHandler = TemplateHandlerRegistryUtil
            .getTemplateHandler(JournalArticle.class.getName());

    Map<String, Object> contextObjects = new HashMap<>();

    templateManager.addContextObjects(contextObjects, templateHandler.getCustomContextObjects());

    return _journalTransformer.transform(themeDisplay, contextObjects, tokens, viewMode, languageId, document,
            portletRequestModel, script, langType, propagateException);
}

From source file:com.liferay.portlet.display.template.internal.PortletDisplayTemplateImpl.java

License:Open Source License

@Override
public String renderDDMTemplate(HttpServletRequest request, HttpServletResponse response,
        DDMTemplate ddmTemplate, List<?> entries, Map<String, Object> contextObjects) throws Exception {

    Transformer transformer = TransformerHolder.getTransformer();

    contextObjects.put(PortletDisplayTemplateConstants.TEMPLATE_ID, ddmTemplate.getTemplateId());
    contextObjects.put(PortletDisplayTemplateConstants.ENTRIES, entries);

    if (!entries.isEmpty()) {
        contextObjects.put(PortletDisplayTemplateConstants.ENTRY, entries.get(0));
    }//from  w  ww .  ja  v a 2s  . c  o m

    contextObjects.put(PortletDisplayTemplateConstants.LOCALE, request.getLocale());

    RenderRequest renderRequest = (RenderRequest) request.getAttribute(JavaConstants.JAVAX_PORTLET_REQUEST);

    contextObjects.put(PortletDisplayTemplateConstants.RENDER_REQUEST, renderRequest);

    RenderResponse renderResponse = (RenderResponse) request.getAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE);

    contextObjects.put(PortletDisplayTemplateConstants.RENDER_RESPONSE, renderResponse);

    if ((renderRequest != null) && (renderResponse != null)) {
        PortletURL currentURL = PortletURLUtil.getCurrent(renderRequest, renderResponse);

        contextObjects.put(PortletDisplayTemplateConstants.CURRENT_URL, currentURL.toString());
    }

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

    contextObjects.put(PortletDisplayTemplateConstants.THEME_DISPLAY, themeDisplay);

    // Custom context objects

    contextObjects.put(TemplateConstants.CLASS_NAME_ID, ddmTemplate.getClassNameId());

    String language = ddmTemplate.getLanguage();

    TemplateManager templateManager = TemplateManagerUtil.getTemplateManager(language);

    TemplateHandler templateHandler = TemplateHandlerRegistryUtil
            .getTemplateHandler(ddmTemplate.getClassNameId());

    templateManager.addContextObjects(contextObjects, templateHandler.getCustomContextObjects());

    // Taglibs

    templateManager.addTaglibSupport(contextObjects, request, response);

    UnsyncStringWriter unsyncStringWriter = new UnsyncStringWriter();

    templateManager.addTaglibTheme(contextObjects, "taglibLiferay", request,
            new PipingServletResponse(response, unsyncStringWriter));

    contextObjects.put(TemplateConstants.WRITER, unsyncStringWriter);

    if (renderRequest != null) {
        _mergePortletPreferences(renderRequest, contextObjects);
    }

    return transformer.transform(themeDisplay, contextObjects, ddmTemplate.getScript(), language,
            unsyncStringWriter);
}