/** * Replaces the macros in the given message.<p> * * @param msg the message in which the macros are replaced * @param contentLocale the locale of the content that is currently decorated * * @return the message with the macros replaced */ private String replaceMacros(String msg, String contentLocale) { CmsMacroResolver resolver = CmsMacroResolver.newInstance(); resolver.addMacro(MACRO_DECORATION, m_decoration); resolver.addMacro(MACRO_DECORATIONKEY, m_decorationKey); if (m_locale != null) { resolver.addMacro(MACRO_LOCALE, m_locale.toString()); if (!contentLocale.equals(m_locale.toString())) { resolver.addMacro(MACRO_LANGUAGE, "lang=\"" + m_locale.toString() + "\""); } } return resolver.resolveMacros(msg); }
/** * Turn on macro resolving for the wrapped value.<p> * * Macro resolving is turned off by default. * When turned on, a macro resolver is initialized with * the current OpenCms user context and the URI of the current resource. * This means known macros contained in the wrapped value will be resolved when the output String is generated. * For example, a <code>%(property.Title)</code> in the value would be replaced with the * value of the title property. Macros that can not be resolved will be kept.<p> * * Usage example on a JSP with the JSTL:<pre> * <cms:contentload ... > * <cms:contentaccess var="content" /> * The text with macros resolved: ${content.value['Text'].resolveMacros} * </cms:contentload></pre> * * @return a value wrapper with macro resolving turned on * * @see CmsMacroResolver */ public CmsJspContentAccessValueWrapper getResolveMacros() { if (m_macroResolver == null) { CmsMacroResolver macroResolver = CmsMacroResolver.newInstance(); macroResolver.setCmsObject(m_cms); macroResolver.setKeepEmptyMacros(true); return new CmsJspContentAccessValueWrapper(this, macroResolver); } // macro resolving is already turned on return this; }
/** * Gets the path to use for the authorization cookie, optionally resolving any macros used.<p> * * @param resolveMacros if true, macros should be resolved * @return the authorization cookie path */ public String getCookiePath(boolean resolveMacros) { String result = m_cookiePath; if (resolveMacros) { CmsMacroResolver resolver = new CmsMacroResolver(); // add special mappings for macros resolver.addMacro("CONTEXT_NAME", OpenCms.getSystemInfo().getContextPath()); resolver.addMacro("SERVLET_NAME", OpenCms.getSystemInfo().getServletPath()); result = resolver.resolveMacros(result); } return result; }
/** * Creates a new A_CmsNotification.<p> * * @param cms the cms object to use * @param receiver the receiver of the notification */ public A_CmsNotification(CmsObject cms, CmsUser receiver) { m_cms = cms; m_receiver = receiver; m_macroResolver = new CmsMacroResolver(); m_macroResolver.setCmsObject(cms); }
/** * @see org.opencms.xml.content.I_CmsXmlContentHandler#getPreview(org.opencms.file.CmsObject, org.opencms.xml.content.CmsXmlContent, java.lang.String) */ public String getPreview(CmsObject cms, CmsXmlContent content, String resourcename) { CmsMacroResolver resolver = CmsMacroResolver.newInstance().setCmsObject(cms); resolver.addMacro(MACRO_PREVIEW_TEMPFILE, resourcename); return resolver.resolveMacros(m_previewLocation); }
/** * Resolves the macros in the given input using the provided parameters.<p> * * A macro in the form <code>%(key)</code> or <code>${key}</code> in the content is replaced with it's assigned value * returned by the <code>{@link I_CmsMacroResolver#getMacroValue(String)}</code> method of the given * <code>{@link I_CmsMacroResolver}</code> instance.<p> * * If a macro is found that can not be mapped to a value by the given macro resolver, * it is left untouched in the input.<p> * * @param input the input in which to resolve the macros * @param cms the OpenCms user context to use when resolving macros * @param messages the message resource bundle to use when resolving macros * * @return the input with the macros resolved */ public static String resolveMacros(String input, CmsObject cms, CmsMessages messages) { CmsMacroResolver resolver = new CmsMacroResolver(); resolver.m_cms = cms; resolver.m_messages = messages; resolver.m_keepEmptyMacros = true; return resolver.resolveMacros(input); }
if (CmsMacroResolver.isMacro(element)) { CmsMacroResolver resolver = CmsMacroResolver.newInstance().setCmsObject(cms).setJspPageContext(context).setResourceName( resourcename).setKeepEmptyMacros(true); content = resolver.resolveMacros(element); } else if (xmlContent == null) {
/** * Returns the current used macro resolver instance.<p> * * @return the macro resolver */ public CmsMacroResolver getMacroResolver() { if (m_macroResolver == null) { // create a new macro resolver "with everything we got" m_macroResolver = CmsMacroResolver.newInstance() // initialize resolver with the objects available .setCmsObject(m_cms).setMessages(getMessages()).setJspPageContext( (m_jsp == null) ? null : m_jsp.getJspContext()); m_macroResolver.setParameterMap(m_parameterMap); } return m_macroResolver; }
/** * Returns the description of this organizational unit.<p> * * @param locale the locale * * @return the description of this organizational unit */ public String getDescription(Locale locale) { CmsMacroResolver macroResolver = new CmsMacroResolver(); macroResolver.setMessages(org.opencms.db.generic.Messages.get().getBundle(locale)); return macroResolver.resolveMacros(m_description); }
/** * @see org.opencms.util.I_CmsMacroResolver#resolveMacros(java.lang.String) */ public String resolveMacros(String input) { return CmsMacroResolver.resolveMacros(input, this); }
m_macroResolver = new CmsMacroResolver(); m_macroResolver.setCmsObject(m_macroCmsObject); m_macroResolver.setKeepEmptyMacros(true); m_macroResolver.setResourceName(resource.getName()); m_macroResolver.setMessages(widgetDialog.getMessages()); displayName = m_macroResolver.resolveMacros(getDisplayOptionMacro());
/** * @see org.opencms.xml.content.I_CmsXmlContentHandler#getModelFolder(org.opencms.file.CmsObject, java.lang.String) */ public String getModelFolder(CmsObject cms, String currentFolder) { String result = m_modelFolder; // store the original URI String uri = cms.getRequestContext().getUri(); try { // set URI to current folder cms.getRequestContext().setUri(currentFolder); CmsMacroResolver resolver = CmsMacroResolver.newInstance().setCmsObject(cms); // resolve eventual macros result = resolver.resolveMacros(m_modelFolder); } finally { // switch back to stored uri cms.getRequestContext().setUri(uri); } return result; }
/** * @see org.opencms.ui.apps.I_CmsWorkplaceAppConfiguration#getName(java.util.Locale) */ public String getName(Locale locale) { return CmsMacroResolver.newInstance().setMessages( OpenCms.getWorkplaceManager().getMessages(locale)).resolveMacros(m_toolHandler.getName()); }
CmsFile file = m_cms.readFile(resource); String fileContent = new String(file.getContents(), "UTF-8"); CmsMacroResolver resolver = new CmsMacroResolver(); resolver.setCmsObject(m_cms); for (Map.Entry<String, String> param : m_params.entrySet()) { resolver.addMacro(param.getKey(), param.getValue()); fileContent = resolver.resolveMacros(fileContent); JSONTokener tok = new JSONTokener(fileContent); tok.setOrdered(true);
CmsMacroResolver resolver = new CmsMacroResolver(); resolver.setCmsObject(cms); resolver.setMessages(OpenCms.getWorkplaceManager().getMessages(locale)); String localizedKey = resolver.resolveMacros(view.getKey()); options.add(localizedKey); values.add(view.getUri());
resolver.addMacro(entry.getKey(), entry.getValue()); resolver.setMessages(messages); String resolvedDesign = resolver.resolveMacros(design); Design.read(new ByteArrayInputStream(resolvedDesign.getBytes(encoding)), component); } catch (IOException e) {
/** * Creates a macro resolver based on the current users OpenCms context and the provided resource name.<p> * * @param cms the current OpenCms user context * @param resourcename the resource name for macros like {@link A_CmsResourceType#MACRO_RESOURCE_FOLDER_PATH} * * @return a macro resolver based on the current users OpenCms context and the provided resource name */ protected CmsMacroResolver getMacroResolver(CmsObject cms, String resourcename) { CmsMacroResolver result = CmsMacroResolver.newInstance().setCmsObject(cms); if (isFolder() && (!CmsResource.isFolder(resourcename))) { // ensure folder ends with "/" so resourcename = resourcename.concat("/"); } // add special mappings for macros in default properties result.addMacro(MACRO_RESOURCE_ROOT_PATH, cms.getRequestContext().addSiteRoot(resourcename)); result.addMacro(MACRO_RESOURCE_SITE_PATH, resourcename); result.addMacro(MACRO_RESOURCE_FOLDER_PATH, CmsResource.getFolderPath(resourcename)); result.addMacro(MACRO_RESOURCE_FOLDER_PATH_TOUCH, CmsResource.getFolderPath(resourcename)); result.addMacro(MACRO_RESOURCE_PARENT_PATH, CmsResource.getParentFolder(resourcename)); result.addMacro(MACRO_RESOURCE_NAME, CmsResource.getName(resourcename)); return result; }
CmsMacroResolver macroResolver = CmsMacroResolver.newInstance().setCmsObject(cms);
/** Returns a new macro resolver that loads message keys from the workplace bundle in the user setting's language. * @param cms the CmsObject. * @return a new macro resolver with messages from the workplace bundle in the current users locale. */ public static I_CmsMacroResolver newWorkplaceLocaleResolver(final CmsObject cms) { // Resolve macros in the property configuration CmsMacroResolver resolver = new CmsMacroResolver(); resolver.setCmsObject(cms); CmsUserSettings userSettings = new CmsUserSettings(cms.getRequestContext().getCurrentUser()); CmsMultiMessages multimessages = new CmsMultiMessages(userSettings.getLocale()); multimessages.addMessages(OpenCms.getWorkplaceManager().getMessages(userSettings.getLocale())); resolver.setMessages(multimessages); resolver.setKeepEmptyMacros(true); return resolver; }
m_macroResolver.addMacro("firstname", m_receiver.getFirstname()); m_macroResolver.addMacro("lastname", m_receiver.getLastname()); m_macroResolver.addMacro("project", m_cms.getRequestContext().currentProject().getName()); msg.append(CmsMacroResolver.resolveMacros( m_mailContent.getStringValue(m_cms, "Header", m_locale), m_macroResolver)); msg.append(CmsMacroResolver.resolveMacros( m_mailContent.getStringValue(m_cms, "Footer", m_locale), m_macroResolver)); setSubject(CmsMacroResolver.resolveMacros( m_mailContent.getStringValue(m_cms, "Subject", m_locale), m_macroResolver));