1 package org.jahia.taglibs.container; 2 3 import java.io.IOException ; 4 5 import javax.servlet.ServletRequest ; 6 import javax.servlet.jsp.JspException ; 7 import javax.servlet.jsp.JspWriter ; 8 import javax.servlet.jsp.tagext.TagSupport ; 9 10 import org.jahia.data.JahiaData; 11 import org.jahia.data.beans.ContainerBean; 12 import org.jahia.data.containers.JahiaContainer; 13 import org.jahia.resourcebundle.JahiaResourceBundle; 14 import org.jahia.services.containers.ContentContainer; 15 import org.jahia.services.version.VersioningDifferenceStatus; 16 import org.jahia.taglibs.resourcebundle.EngineResourceBundleTag; 17 18 26 public class ContainerDiffHighlightTag extends TagSupport { 27 28 private static org.apache.log4j.Logger logger = 29 org.apache.log4j.Logger.getLogger(ContainerDiffHighlightTag.class); 30 31 private JahiaContainer container = null; 32 private String name = null; 33 private boolean display = true; 34 35 private boolean compareMode = false; 36 private JahiaData jData = null; 37 private int containerStatus = VersioningDifferenceStatus.UNCHANGED; 38 public String getName() { 39 return name; 40 } 41 public void setName(String name) { 42 this.name = name; 43 } 44 public boolean isDisplay() { 45 return display; 46 } 47 public void setDisplay(boolean display) { 48 this.display = display; 49 } 50 51 protected void init() { 52 if (getName() == null) { 53 ContainerTag parent = (ContainerTag) findAncestorWithClass(this, 54 ContainerTag.class); 55 if (parent != null) { 56 this.container = parent.getContainer(); 57 } 58 } else { 59 ContainerBean containerBean = (ContainerBean) pageContext.findAttribute(getName()); 60 if (containerBean != null) { 61 this.container = containerBean.getJahiaContainer(); 62 } 63 } 64 if ( container != null ){ 65 try { 66 ContentContainer cContainer = 67 ContentContainer.getContainer(container.getID()); 68 compareMode = jData.gui().isCompareMode(); 69 if ( compareMode ){ 70 if ( jData.params().getEntryLoadRequest().isVersioned() ){ 72 containerStatus = 73 cContainer.getRestoreStatus(jData.params() 74 .getEntryLoadRequest().getVersionID(),2,true); 75 } else { 76 containerStatus = cContainer.getStagingStatus(); 77 } 78 } 79 } catch ( Throwable t ){ 80 logger.debug("Exception occurred :",t); 81 } 82 } 83 } 84 85 public int doStartTag() { 86 87 ServletRequest request = pageContext.getRequest(); 88 89 jData = (JahiaData) request.getAttribute("org.jahia.data.JahiaData"); 90 91 init(); 92 if ( getId() != null ){ 93 pageContext.removeAttribute(getId()); 95 } 96 97 if ( container != null && isDisplay()) { 98 if ( compareMode && jData.params().getEntryLoadRequest().isStaging() ){ 99 100 if (getId() != null) { 101 pageContext.setAttribute(id, new Integer (this.containerStatus)); 102 } 103 104 try { 105 JspWriter out = pageContext.getOut(); 106 107 String style = EngineResourceBundleTag.parseResourceValue( 108 JahiaResourceBundle 109 .getEngineResource("org.jahia.services.version.difference.style." 110 + containerStatus, jData.params(), jData.params().getLocale()),jData.params()); 111 String statusLabel = EngineResourceBundleTag.parseResourceValue( 112 JahiaResourceBundle 113 .getEngineResource("org.jahia.services.version.restore.status." 114 + containerStatus, jData.params(), jData.params().getLocale()),jData.params()); 115 116 StringBuffer buff = new StringBuffer ("<fieldset style='"); 117 buff.append(style); 118 buff.append("'><legend><b>Diff Status : "); 119 buff.append(statusLabel); 120 buff.append("</b></legend>"); 121 out.print(buff.toString()); 122 } catch (IOException ioe) { 123 logger.error("ContainerDiffHighlightTag: doStartTag ", ioe); 124 } 125 } 126 } 127 return SKIP_BODY; 128 } 129 130 public int doEndTag () 131 throws JspException { 132 super.doEndTag(); 133 container = null; 134 compareMode = false; 135 display = true; 136 containerStatus = VersioningDifferenceStatus.UNCHANGED; 137 name = null; 138 jData = null; 139 return EVAL_PAGE; 140 } 141 142 } 143 | Popular Tags |