package railo.runtime.tag; import java.io.IOException; import railo.commons.lang.StringUtil; import railo.runtime.PageContextImpl; import railo.runtime.exp.ApplicationException; import railo.runtime.exp.PageException; import railo.runtime.ext.tag.TagImpl; import railo.runtime.op.Caster; /** * Writes the text specified in the text attribute to the 'head' section of a generated HTML page. * The cfhtmlhead tag can be useful for embedding JavaScript code, or placing other HTML tags such, as * META, LINK, TITLE, or BASE in an HTML page header. * * * **/ public final class HtmlHead extends TagImpl { /** The text to add to the 'head' area of an HTML page. Everything inside the quotation marks is ** placed in the 'head' section */ private String text=""; private String variable="cfhtmlhead"; private String action=null; @Override public void release() { super.release(); text=""; variable="cfhtmlhead"; action=null; } /** * @param variable the variable to set */ public void setVariable(String variable) { this.variable = variable; } /** * @param action the action to set */ public void setAction(String action) { if(!StringUtil.isEmpty(action,true)) this.action = action.trim().toLowerCase(); } /** set the value text * The text to add to the 'head' area of an HTML page. Everything inside the quotation marks is * placed in the 'head' section * @param text value to set **/ public void setText(String text) { this.text=text; } @Override public int doStartTag() throws PageException { try { if(StringUtil.isEmpty(action,true) || action.equals("append")) actionAppend(); else if(action.equals("reset")) actionReset(); else if(action.equals("write")) actionWrite(); else if(action.equals("read")) actionRead(); else throw new ApplicationException("invalid value ["+action+"] for attribute action","values for attribute action are:append,read,reset,write"); } catch (IOException e) { throw Caster.toPageException(e); } return SKIP_BODY; } public void actionAppend() throws IOException, ApplicationException { required("htmlhead", "text", text); ((PageContextImpl)pageContext).getRootOut().appendHTMLHead(text); } public void actionWrite() throws IOException, ApplicationException { required("htmlhead", "text", text); ((PageContextImpl)pageContext).getRootOut().writeHTMLHead(text); } public void actionReset() throws IOException { ((PageContextImpl)pageContext).getRootOut().resetHTMLHead(); } public void actionRead() throws PageException, IOException { String str=((PageContextImpl)pageContext).getRootOut().getHTMLHead(); pageContext.setVariable(variable, str); } @Override public int doEndTag() { return EVAL_PAGE; } }