1 31 32 package org.opencms.jsp; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.flex.CmsFlexController; 36 import org.opencms.i18n.CmsLocaleManager; 37 import org.opencms.i18n.CmsMessageContainer; 38 import org.opencms.i18n.CmsMessages; 39 import org.opencms.main.CmsLog; 40 import org.opencms.util.CmsMacroResolver; 41 import org.opencms.util.CmsStringUtil; 42 import org.opencms.xml.CmsXmlUtils; 43 import org.opencms.xml.I_CmsXmlDocument; 44 45 import java.io.IOException ; 46 import java.util.Locale ; 47 48 import javax.servlet.jsp.JspException ; 49 import javax.servlet.jsp.JspTagException ; 50 import javax.servlet.jsp.PageContext ; 51 import javax.servlet.jsp.tagext.Tag ; 52 import javax.servlet.jsp.tagext.TagSupport ; 53 54 import org.apache.commons.logging.Log; 55 56 65 public class CmsJspTagContentShow extends TagSupport { 66 67 68 private static final Log LOG = CmsLog.getLog(CmsJspTagContentShow.class); 69 70 71 private static final long serialVersionUID = -6776067180965738432L; 72 73 74 private String m_element; 75 76 77 private Locale m_locale; 78 79 89 public static String contentShowTagAction( 90 I_CmsXmlContentContainer container, 91 PageContext context, 92 String element, 93 Locale locale) { 94 95 CmsObject cms = CmsFlexController.getCmsObject(context.getRequest()); 97 98 I_CmsXmlDocument xmlContent = container.getXmlDocument(); 100 101 if (CmsStringUtil.isEmpty(element)) { 102 element = container.getXmlDocumentElement(); 103 } else { 104 element = CmsXmlUtils.concatXpath(container.getXmlDocumentElement(), element); 105 } 106 107 String content; 108 if (CmsMacroResolver.isMacro(element)) { 109 String resourcename = CmsJspTagContentLoad.getResourceName(cms, container); 111 CmsMacroResolver resolver = CmsMacroResolver.newInstance().setCmsObject(cms).setJspPageContext(context).setResourceName( 112 resourcename).setKeepEmptyMacros(true); 113 content = resolver.resolveMacros(element); 115 } else if (xmlContent == null) { 116 content = null; 118 } else { 119 120 if (locale == null) { 122 locale = container.getXmlDocumentLocale(); 124 } 125 127 if (xmlContent.hasValue(element, locale)) { 128 try { 129 content = xmlContent.getStringValue(cms, element, locale); 131 } catch (Exception e) { 132 LOG.error(Messages.get().getBundle().key(Messages.LOG_ERR_CONTENT_SHOW_1, element), e); 133 content = null; 134 } 135 } else { 136 content = null; 137 } 138 139 if (content == null) { 141 content = CmsMessages.formatUnknownKey(element); 142 } 143 } 144 145 return content; 146 } 147 148 151 public int doEndTag() { 152 153 release(); 155 return EVAL_PAGE; 156 } 157 158 161 public int doStartTag() throws JspException { 162 163 Tag ancestor = findAncestorWithClass(this, I_CmsXmlContentContainer.class); 165 if (ancestor == null) { 166 CmsMessageContainer errMsgContainer = Messages.get().container(Messages.ERR_PARENTLESS_TAG_1, "contentshow"); 167 String msg = Messages.getLocalizedMessage(errMsgContainer, pageContext); 168 throw new JspTagException (msg); 169 } 170 I_CmsXmlContentContainer contentContainer = (I_CmsXmlContentContainer)ancestor; 171 172 String content = contentShowTagAction(contentContainer, pageContext, getElement(), m_locale); 174 175 try { 176 if (content != null) { 177 pageContext.getOut().print(content); 178 } 179 } catch (IOException e) { 180 if (LOG.isErrorEnabled()) { 181 LOG.error(Messages.get().getBundle().key(Messages.LOG_ERR_JSP_BEAN_0), e); 182 } 183 throw new JspException (e); 184 } 185 186 return SKIP_BODY; 187 } 188 189 194 public String getElement() { 195 196 return (m_element != null) ? m_element : ""; 197 } 198 199 204 public String getLocale() { 205 206 return (m_locale != null) ? m_locale.toString() : ""; 207 } 208 209 212 public void release() { 213 214 m_element = null; 215 m_locale = null; 216 super.release(); 217 } 218 219 224 public void setElement(String element) { 225 226 m_element = element; 227 } 228 229 234 public void setLocale(String locale) { 235 236 if (CmsStringUtil.isEmpty(locale)) { 237 m_locale = null; 238 } else { 239 m_locale = CmsLocaleManager.getLocale(locale); 240 } 241 } 242 } | Popular Tags |