Issue Details (XML | Word | Printable)

Key: ICE-1865
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Unassigned
Reporter: Radu Andrei Tanasa
Votes: 3
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
ICEfaces

<ice:selectInputDate> ignores the disabled attribute

Created: 11/Jul/07 08:47 AM   Updated: 14/Apr/08 03:22 PM
Component/s: Components
Affects Version/s: 1.6, 1.6.1
Fix Version/s: 1.6.1, 1.7DR#1, 1.7

Environment: OS: Windows; Browser: All;

ICEsoft Forum Reference: http://www.icefaces.org/JForum/posts/list/5517.page
Workaround Exists: Yes
Workaround Description:
Although the fix doesn't seem to be very difficult, we refrained from altering the icefaces jar so we created our own SelectInputDateRenderer.java which subclasses icefaces' SelectInputDateRenderer.java. There we overroad the public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException method. Here is the code:

<code>

public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
throws IOException {

super.encodeEnd(facesContext, uiComponent);

DOMContext domContext = DOMContext.attachDOMContext(facesContext, uiComponent);
SelectInputDate selectInputDate = (SelectInputDate)uiComponent;

Node rootNode = domContext.getRootNode();
Element inputNode = (Element)rootNode.getFirstChild();
Element calendarButton = (Element)inputNode.getNextSibling();

if (selectInputDate.isDisabled()) {
inputNode.setAttribute(HTML.DISABLED_ATTR, "true");
}

if (selectInputDate.isDisabled()) {
calendarButton.setAttribute(HTML.DISABLED_ATTR, "true");
}
}

</code>


 Description  « Hide
Hi. I found a most intriguing issue. The <ice:selectInputDate> seems to ignore the disabled attribute. I've taken a look in the generated html code and the generated <input> indeed has no disabled attribute. The fix is easy I think. I took a look in icefaces' source code and found out that the disabled attribute is not taken into consideration: com.icesoft.faces.component.selectinputdate.SelectInputDateRenderer, method public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException; The simplest thing in my opinion would be to do the following:

<code>

Element dateText = domContext.createElement(HTML.INPUT_ELEM);
dateText.setAttribute(HTML.VALUE_ATTR, selectInputDate.formatDate((Date)selectInputDate.getValue()));
dateText.setAttribute(HTML.ID_ATTR, clientId + CALENDAR_INPUTTEXT);
dateText.setAttribute(HTML.NAME_ATTR, clientId + CALENDAR_INPUTTEXT);
dateText.setAttribute(HTML.CLASS_ATTR, selectInputDate.getCalendarInputClass());
dateText.setAttribute(HTML.ONFOCUS_ATTR, "setFocus('');");
dateText.setAttribute("onkeypress", this.ICESUBMIT);
dateText.setAttribute(HTML.ONBLUR_ATTR, this.ICESUBMITPARTIAL);

//my code
if (selectInputDate.isDisabled()) {
dateText.setAttribute(HTML.DISABLED_ATTR, "true");
}

if (selectInputDate.getAutocomplete() != null) {
dateText.setAttribute("autocomplete", selectInputDate.getAutocomplete());
}

// extract the popupdate format and use it as a tooltip
String tooltip = selectInputDate.getPopupDateFormat();
dateText.setAttribute(HTML.TITLE_ATTR, "Date Format: " + tooltip);
root.appendChild(dateText);

Element calendarButton = domContext.createElement(HTML.INPUT_ELEM);
calendarButton.setAttribute(HTML.ID_ATTR, clientId + CALENDAR_BUTTON);
calendarButton.setAttribute(HTML.NAME_ATTR, clientId + CALENDAR_BUTTON);
calendarButton.setAttribute(HTML.TYPE_ATTR, "image");

//my code
if (selectInputDate.isDisabled()) {
calendarButton.setAttribute(HTML.DISABLED_ATTR, "true");
}

</code>

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Michael Thiem added a comment - 04/Sep/07 04:03 AM
This is still reoccurring in 1.6.1, neither the disabled nor the readonly attributes have any effect on the selectInputDate

yip.ng added a comment - 07/Sep/07 05:17 PM
Set the disabled attribute of the constituent controls in both types of calendar components.
As per the the XHTML spec., value of attribute is set to "disabled" rather than "true".