Skip to content
This repository was archived by the owner on Jan 21, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,13 @@
<property-class>boolean</property-class>
<property-extension/>
</property>
<property>
<description>%property.escape.descr%</description>
<display-name>%property.escape.name%</display-name>
<property-name>escape</property-name>
<property-class>boolean</property-class>
<property-extension/>
</property>
<complex-extension>
<base-complex-id>com.ibm.xsp.extlib.tree.ITreeNode</base-complex-id>
</complex-extension>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ property.enabled.name= Enabled
property.enabled.descr= Indicates if the node is enabled. The meaning of disabled depends on whether this node is used, but it may mean that label may be displayed as text instead of a link. Or if the nodes are displayed as buttons, it may mean that the disabled button is gray and does not respond to clicks. Enabled by default.
property.selected.name= Selected
property.selected.descr= Indicates if the node is selected. Selected nodes appear different to unselected nodes, perhaps with a darker background.
property.escape.name= Escape
property.escape.descr= Flag indicating that characters in the label that are sensitive in HTML and XML markup must be escaped. This flag is set to "true" by default.
complex-type.basicLeafNode.name= Basic Node
complex-type.basicLeafNode.descr= Basic node to be included into a container node
property.href.name= URL Reference
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,14 @@
<property-extension>
</property-extension>
</property>
<property>
<description>Flag indicating that characters in the label that are sensitive in HTML and XML markup must be escaped. This flag is set to "true" by default.</description>
<display-name>Escape Characters</display-name>
<property-name>escape</property-name>
<property-class>boolean</property-class>
<property-estension>
</property-estension>
</property>

<complex-extension>
<base-complex-id>com.ibm.xsp.extlib.tree.ITreeNode</base-complex-id>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,9 @@ public boolean isNodeRendered(ITreeNode node) {
public boolean isNodeSelected(ITreeNode node) {
return false;
}
public boolean isNodeEscape(ITreeNode node) {
return true;
}


// ===================================================================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.ibm.xsp.extlib.tree.ITreeNode;
import com.ibm.xsp.renderkit.dojo.DojoUtil;
import com.ibm.xsp.resource.DojoModuleResource;
import com.ibm.xsp.util.HtmlUtil;

public class DojoAccordionRenderer extends AbstractTreeRenderer {

Expand Down Expand Up @@ -128,6 +129,7 @@ protected void renderNode(FacesContext context, ResponseWriter writer, TreeConte
boolean enabled = tree.getNode().isEnabled();
String style = getItemStyle(tree,enabled,false);
String styleClass = getItemStyleClass(tree,enabled,false);
boolean escape = tree.getNode().isEscape();

boolean leaf = tree.getNode().getType()==ITreeNode.NODE_LEAF;
String href = null;
Expand Down Expand Up @@ -179,7 +181,11 @@ protected void renderNode(FacesContext context, ResponseWriter writer, TreeConte
// }
if(StringUtil.isNotEmpty(label)) {
//writer.writeAttribute("title", label, null); // $NON-NLS-1$
attrs.put("title", label); // $NON-NLS-1$ $NON-NLS-2$
if(escape) {
attrs.put("title", HtmlUtil.toHTMLContentString(label, false)); //$NON-NLS-1$
} else {
attrs.put("title", label); //$NON-NLS-1$
}
}

DojoRendererUtil.writeDojoHtmlAttributes(context, getComponent(), dojoType, attrs);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,11 @@ protected void renderPopupButton(FacesContext context, ResponseWriter writer, Tr
// Render the text
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); // $NON-NLS-1$
} else {
writer.write(label);
}
}
writer.writeText(" ",null); // $NON-NLS-1$

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.ibm.xsp.extlib.util.ExtLibUtil;
import com.ibm.xsp.renderkit.html_basic.HtmlRendererUtil;
import com.ibm.xsp.renderkit.html_extended.RenderUtil;
import com.ibm.xsp.util.HtmlUtil;
import com.ibm.xsp.util.JavaScriptUtil;

public class DojoMenuRenderer extends AbstractTreeRenderer {
Expand Down Expand Up @@ -247,7 +248,11 @@ protected void renderTreeNode(FacesContext context, ResponseWriter writer, TreeC
if(StringUtil.isNotEmpty(label)) {
if(hasp) script.append(","); else hasp=true;
script.append("label:"); // $NON-NLS-1$
JavaScriptUtil.addString(script, label);
if(tree.getNode().isEscape()) {
JavaScriptUtil.addString(script, HtmlUtil.toHTMLContentString(label, false));
} else {
JavaScriptUtil.addString(script, label);
}
}

boolean enabled = tree.getNode().isEnabled();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@ protected void renderPopupButton(FacesContext context, ResponseWriter writer, Tr
// Render the text
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); // $NON-NLS-1$
} else {
writer.write(label);
}
}

writePopupImage(context, writer, tree);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ protected void renderNode(FacesContext context, ResponseWriter writer, TreeConte
if(selected) {
writer.writeAttribute("selected", "selected", "selected"); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$
}
// Don't obey escape=false here, since HTML inside option tags would be invalid
writer.writeText(label,"label"); // $NON-NLS-1$
writer.endElement("option"); // $NON-NLS-1$
JSUtil.writeln(writer);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,11 @@ protected void writePopupImage(FacesContext context, ResponseWriter writer, Tree
protected void renderEntryItemLabel(FacesContext context, ResponseWriter writer, TreeContextImpl tree, boolean enabled, boolean selected) throws IOException {
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); //$NON-NLS-1$
} else {
writer.write(label);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,10 @@ public static interface TreeContext {
*/
public String getTitle();

/**
* Check if the entry's label should be HTML-escaped.
*/
public boolean isEscape();

// =====================================================
// Event management
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,22 +82,22 @@ public interface ITreeNodeDefaultValues {
public String getNodeTitle(ITreeNode node);

/**
* Check if an node is selected.
* Check if a node is selected.
*/
public boolean isNodeSelected(ITreeNode node);

/**
* Check if an node is enabled.
* Check if a node is enabled.
*/
public boolean isNodeEnabled(ITreeNode node);

/**
* Check if an node is rendered.
* Check if a node is rendered.
*/
public boolean isNodeRendered(ITreeNode node);

/**
* Check if an node is expanded.
* Check if a node is expanded.
*/
public boolean isNodeExpanded(ITreeNode node);

Expand All @@ -110,4 +110,9 @@ public interface ITreeNodeDefaultValues {
* Value submitted as part of the event.
*/
public String getNodeSubmitValue(ITreeNode node);

/**
* Check if the entry's label should be HTML-escaped.
*/
public boolean isNodeEscape(ITreeNode node);
}
Original file line number Diff line number Diff line change
Expand Up @@ -175,4 +175,12 @@ public boolean isSelected() {
}
return false;
}

public boolean isEscape() {
ITreeNodeDefaultValues tree = getTreeNodeDefault();
if(tree!=null) {
return tree.isNodeEscape(this);
}
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public abstract class BasicComplexTreeNode extends AbstractComplexTreeNode {
private Boolean expanded;
private Boolean selected;
private Boolean enabled;
private Boolean escape;

public BasicComplexTreeNode() {
}
Expand Down Expand Up @@ -274,6 +275,25 @@ public boolean isExpanded() {
public void setExpanded(boolean expanded) {
this.expanded = expanded;
}

@Override
public boolean isEscape() {
if(null != this.escape) {
return this.escape;
}
ValueBinding _vb = getValueBinding("escape"); //$NON-NLS-1$
if(_vb != null) {
Object obj = _vb.getValue(getFacesContext());
if(obj instanceof Boolean) {// non-null
return (Boolean)obj;
}
}
return super.isEscape();
}

public void setEscape(boolean escape) {
this.escape = escape;
}

@Override
public Object saveState(FacesContext context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,8 @@ public boolean isRendered() {
public boolean isSelected() {
return getBeanInstance().isSelected();
}

public boolean isEscape() {
return getBeanInstance().isEscape();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -178,4 +178,13 @@ public boolean isSelected() {
}
return false;
}

@Override
public boolean isEscape() {
ITreeNodeDefaultValues tree = getTreeNodeDefault();
if(tree != null) {
return tree.isNodeEscape(this);
}
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,7 @@ public boolean isNodeSelected(ITreeNode node) {
return false;
}

public boolean isNodeEscape(ITreeNode node) {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public abstract class BasicTreeNode extends AbstractTreeNode {
private Boolean expanded;
private Boolean rendered;
private Boolean selected;
private Boolean escape;

public BasicTreeNode() {
this.rendered = true;
Expand Down Expand Up @@ -248,4 +249,16 @@ public boolean isSelected() {
public void setSelected(boolean selected) {
this.selected = selected;
}

@Override
public boolean isEscape() {
if(escape != null) {
return escape;
}
return super.isEscape();
}

public void setEscape(boolean escape) {
this.escape = escape;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -340,4 +340,17 @@ public boolean isSelected() {
}
return delegate.isSelected();
}

public boolean isEscape() {
if(var != null) {
FacesContext context = FacesContext.getCurrentInstance();
push(context);
try {
return delegate.isEscape();
} finally {
pop(context);
}
}
return delegate.isEscape();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ protected void renderEntrySeparator(FacesContext context,
protected JsonJavaObject renderEntryNode(TreeContextImpl tree) throws IOException {
boolean enabled = tree.getNode().isEnabled();
boolean selected = tree.getNode().isSelected();
boolean escape = tree.getNode().isEscape();

/*
* json for a menu item
Expand Down Expand Up @@ -165,6 +166,7 @@ protected JsonJavaObject renderEntryNode(TreeContextImpl tree) throws IOExceptio

jsonTreeItem.putJsonProperty("disabled", Boolean.toString(!enabled)); // $NON-NLS-1$
jsonTreeItem.putJsonProperty("iconClass", ""); // $NON-NLS-1$ $NON-NLS-2$
jsonTreeItem.putJsonProperty("escape", Boolean.toString(escape)); // $NON-NLS-1$

// Fix for SPR#BGLN9HYDW9 - No icon image appearing for nodes
// Pass in the iconImg, iconHeight & iconWidth params
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,11 @@ protected void renderPopupButton(FacesContext context, ResponseWriter writer, Tr
// Render the text
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); // $NON-NLS-1$
} else {
writer.write(label);
}
}
writer.writeText(" ",null); // $NON-NLS-1$

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,11 @@ protected void renderPopupButton(FacesContext context, ResponseWriter writer, Tr
// Render the text
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); // $NON-NLS-1$
} else {
writer.write(label);
}
}
writer.writeText(" ",null); // $NON-NLS-1$

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,11 @@ public void renderChildren(FacesContext context, ResponseWriter writer, TreeCont
if(!it.hasNext()) {
writer.writeAttribute("class","lotusLast",null); // $NON-NLS-1$ $NON-NLS-2$
}
writer.writeText(tree.getNode().getLabel(),null);
if(tree.getNode().isEscape()) {
writer.writeText(tree.getNode().getLabel(),null);
} else {
writer.write(tree.getNode().getLabel());
}
writer.endElement("th"); // $NON-NLS-1$
tree.pop();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,11 @@ protected void renderPopupButton(FacesContext context, ResponseWriter writer, Tr
// Render the text
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); // $NON-NLS-1$
} else {
writer.write(label);
}
}

// Render the popup image (down arrow)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,11 @@ protected void renderPopupButton(FacesContext context, ResponseWriter writer, Tr
// Render the text
String label = tree.getNode().getLabel();
if(StringUtil.isNotEmpty(label)) {
writer.writeText(label, "label"); // $NON-NLS-1$
if(tree.getNode().isEscape()) {
writer.writeText(label, "label"); // $NON-NLS-1$
} else {
writer.write(label);
}
}
writer.writeText(" ",null); // $NON-NLS-1$

Expand Down
Loading