WriteAttributeTagProcessor.java
package sk.iway.iwcm.system.spring.webjet_component.dialect;
import javax.servlet.http.HttpServletRequest;
import org.thymeleaf.context.ITemplateContext;
import org.thymeleaf.model.IAttribute;
import org.thymeleaf.model.IProcessableElementTag;
import org.thymeleaf.processor.element.IElementTagStructureHandler;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.doc.ninja.Ninja;
/**
* Trieda WriteAttributeTagProcessor pre iwcm tag s nazvom write
* Tag <div data-iwcm-write=""/> sluzi na vykonanie !INCLUDE v zadanom mene atributu (napr. doc_data)
*/
public class WriteAttributeTagProcessor extends AbstractIwcmAttributeTagProcessor {
private static final String ATTR_NAME = "write";
private static final int PRECEDENCE = 10003;
public WriteAttributeTagProcessor(final String dialectPrefix) {
super(dialectPrefix, ATTR_NAME, PRECEDENCE);
}
/**
* Metoda pre nahradenie tagu obsahom
*/
@Override
protected void processTag(ITemplateContext context, IProcessableElementTag tag, String attributeValue, IElementTagStructureHandler structureHandler, HttpServletRequest request) {
Ninja ninja = new Ninja(request);
String htmlCode = ninja.write(attributeValue);
//ak ma tag atribut data-iwcm-remove="tag" tak robime replace celeho tagu, inak robime len setBody
IAttribute removeAttr = tag.getAttribute("data-iwcm-remove");
boolean replace = true;
if (removeAttr != null) {
if ("false".equals(removeAttr.getValue())) replace=false;
else if ("true".equals(removeAttr.getValue())) {
//uz je defaultne nastavene
//replace=true;
}
else if ("tag".equals(removeAttr.getValue())==false) replace=false;
} else {
//pre doc_ atributy remove defaultne nerobime
if (attributeValue.startsWith("doc_")) replace = false;
}
IAttribute jqueryAttr = tag.getAttribute("data-iwcm-jquery");
if (jqueryAttr != null) {
if ("false".equals(jqueryAttr.getValue())) {
//nechceme vkladat jquery automaticky, poznacme ze uz bolo vlozene
Tools.insertJQuery(request);
}
if ("true".equals(jqueryAttr.getValue())) {
htmlCode = Tools.insertJQuery(request) + "\n" + htmlCode;
}
if ("force".equals(jqueryAttr.getValue())) {
request.removeAttribute("jQueryInserted");
request.removeAttribute("commonPageFunctionsInserted");
htmlCode = Tools.insertJQuery(request) + "\n" + htmlCode;
}
}
structureHandler.removeAttribute("data-iwcm-write");
structureHandler.removeAttribute("data-iwcm-remove");
structureHandler.removeAttribute("data-iwcm-jquery");
if (replace) {
structureHandler.replaceWith(htmlCode, false);
} else {
structureHandler.setBody(htmlCode, false);
}
}
}