You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2009/01/30 15:42:17 UTC

svn commit: r739297 - in /myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main: java/org/apache/myfaces/trinidadinternal/agent/ java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/...

Author: matzew
Date: Fri Jan 30 14:42:16 2009
New Revision: 739297

URL: http://svn.apache.org/viewvc?rev=739297&view=rev
Log:
TRINIDAD-1365 - PPR and Tree component are not working for Safari browser installed in Nokia devices
TRINIDAD-1341 - <tr:ProcessChoiceBar> not working for Non-JavaScript mobile browsers

Thanks to Mamallan Uthaman for these patches

Modified:
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/table/TreeUtils.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessChoiceBarRenderer.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessUtils.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/SubmitButtonRenderer.java
    myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/agent/AgentFactoryImpl.java Fri Jan 30 14:42:16 2009
@@ -749,9 +749,10 @@
 
     String version = _getVersion(agent, start);
     agentObj.setType(Agent.TYPE_DESKTOP);
-    if (agent.indexOf("Symbian") > -1)
+    if ((agent.indexOf("Symbian") > -1) || (agent.indexOf("Nokia") > -1))
     {
       agentObj.setAgent(Agent.AGENT_NOKIA_S60);
+      agentObj.setPlatform(Agent.AGENT_NOKIA_S60);
     }
     else
     {

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/TreeRenderer.java Fri Jan 30 14:42:16 2009
@@ -328,6 +328,7 @@
   protected void renderExpandCell(
       FacesContext context,
       RenderingContext rc,
+      UIXHierarchy tree,
       int expanded,
       boolean isLastSibling,
       String onclick
@@ -348,8 +349,9 @@
     Object altText = null;
 
     String text = null;
-
-    boolean isMacOS = rc.getAgent().getPlatformName().equals(Agent.PLATFORM_MACOS);
+    
+    boolean isMacOS = 
+               Agent.PLATFORM_MACOS.equals(rc.getAgent().getPlatformName());
     // add in the expandability
     switch (expanded)
     {
@@ -428,7 +430,7 @@
                             altText, _ICON_WIDTH, iconHeight, onclick);
     } else
     {
-      _renderTextCell(context, rc, text, altText, _ICON_WIDTH, onclick,
+      _renderTextCell(context, rc, tree, expanded, text, altText, _ICON_WIDTH, onclick,
                       SkinSelectors.TREE_DISCLOSED_SYMBOL_STYLE_CLASS);
     }
 
@@ -437,6 +439,8 @@
 
   private void _renderTextCell(FacesContext context,
                                RenderingContext rc,
+                               UIXHierarchy tree,
+                               int expanded,
                                String text,
                                Object altText, String width,
                                String onclick, String styleClass)
@@ -448,20 +452,49 @@
     writer.writeAttribute(XhtmlConstants.WIDTH_ATTRIBUTE, width, null);
     writer.writeAttribute("title", altText, null);
     renderStyleClass(context, rc, styleClass);
+    boolean jsSupport = supportsScripting(rc);
 
     if (onclick != null)
     {
-      writer.startElement(XhtmlConstants.LINK_ELEMENT, null);
-      writer.writeAttribute(XhtmlConstants.HREF_ATTRIBUTE, "#", null);
-      writer.writeAttribute(XhtmlConstants.ONCLICK_ATTRIBUTE, onclick, null);
+      if (jsSupport)
+      {
+        writer.startElement(XhtmlConstants.LINK_ELEMENT, null);
+        writer.writeAttribute(XhtmlConstants.HREF_ATTRIBUTE, "#", null);
+        writer.writeAttribute(XhtmlConstants.ONCLICK_ATTRIBUTE, onclick, null);
+      }
+      else
+      {
+        // For Non-JavaScript browsers, render an input element(type= submit) to 
+        // submit the page. Encode the name attribute with the parameter name 
+        // and value thus it would enable the browsers to include the name of 
+        // this element in its payLoad if it submits the page.
+        String nameAttr = TreeUtils.renderEncodedNameAttri(
+                                        context,
+                                        rc, 
+                                        tree,
+                                        getClientId(context, tree),
+                                        expanded == EXPAND_CLOSED);
+                
+        writer.startElement("input", null);
+        writer.writeAttribute("type", "submit",null);
+        writer.writeAttribute("name", nameAttr, null);
+        writer.writeAttribute("value", text, null);
+      }
     }
 
-    if (text != null)
+    if (text != null && jsSupport)
       writer.writeText(text, null);
 
     if (onclick != null)
     {
-      writer.endElement(XhtmlConstants.LINK_ELEMENT);
+      if (jsSupport)
+      {
+        writer.endElement(XhtmlConstants.LINK_ELEMENT);
+      }
+      else
+      {
+        writer.endElement("input");
+      }
     }
 
     writer.endElement(XhtmlConstants.TABLE_DATA_ELEMENT);
@@ -710,7 +743,7 @@
                                      (expand == EXPAND_CLOSED));
     }
 
-    renderExpandCell(context, rc, expand, isLastSibling, onclickExpand);
+    renderExpandCell(context, rc, tree, expand, isLastSibling, onclickExpand);
 
 
     //    DataObject curData = BeanAdapterUtils.getAdapter(context, tree.getRowData());
@@ -886,7 +919,11 @@
     //    out.writeAttribute(ID_ATTRIBUTE,
     //                       treename + IntegerUtils.getString(renderedIndex));
     renderStyleClass(context, rc, treeStyle);
-    writer.writeAttribute(XhtmlConstants.ONCLICK_ATTRIBUTE, onClick, null);
+    
+    if (supportsScripting(rc))
+    {
+      writer.writeAttribute(XhtmlConstants.ONCLICK_ATTRIBUTE, onClick, null);
+    }
 
     // if screen reader mode render the stamp with level of node from root
     _renderStampBasedOnAccessibilty(context, rc, stamp, nodeDepth);

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java Fri Jan 30 14:42:16 2009
@@ -535,6 +535,45 @@
   {
     return param + XhtmlConstants.NO_JS_PARAMETER_KEY;
   }
+   
+  /*
+   * This method returns the name attribute of HTML elements for Non-JavaScript
+   * browsers. It is encoded with parameter name and value pair. 
+   */
+  public static String getEncodedNameAttribute(String param[])
+  {
+    // The incoming array(param[]) must contain parameter name and value pair
+    // in the order of <<name1>>, <<value1>>, <<name2>>, <<value2>>,...
+    // The encoded parameter name and value for the above would be 
+    // <<name1>><<encodingKey>><<value1>><<encodingKey>>
+    // <<name2>><<encodingKey>><<value2>>
+            
+    int noOfParam = param.length;
+    int bufferLen = 0;
+    
+    // Calculate what would be the length of the encoded param name and  
+    // value pair. We need it to initialize the buffer size of StringBuilder.
+    for(int i = 0; i < noOfParam; i++)
+    {
+      bufferLen += param[i].length();
+    }
+    // If there are N parameter names and values, there would be N-1 
+    // encoding key so add its length also
+    bufferLen  += (noOfParam -1) * XhtmlConstants.NO_JS_PARAMETER_KEY.length();
+   
+    StringBuilder nameAttri = new StringBuilder(bufferLen);
+    
+    //Encode all the parameter names and values except the last parameter value
+    for(int i = 0; i < noOfParam-1; i++)
+    {
+      nameAttri.append(getEncodedParameter(param[i]));
+    }
+    
+    nameAttri.append(param[noOfParam-1]);
+  
+    return(nameAttri.toString());
+  }
+  
 
   /** HashMap mapping names to their scriptlets */
   private static Map<Object, Scriptlet> _sScriptletTable =

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/table/TreeUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/table/TreeUtils.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/table/TreeUtils.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/table/TreeUtils.java Fri Jan 30 14:42:16 2009
@@ -359,6 +359,31 @@
 
     preserve.run((UIXHierarchy) tree);
   }
+  
+  /**
+   * Returns <code>String</code> object containing encoded 
+   * parameter name and value pair for Non-JavaScript browsers.
+   */   
+  public static String renderEncodedNameAttri(
+                    FacesContext context,
+                    RenderingContext rc,
+                    UIXHierarchy tree,
+                    String treeName,
+                    boolean isExpand) 
+    throws IOException
+  {
+
+    return XhtmlUtils.getEncodedNameAttribute ( 
+                       // Array should be in the order of name
+                       // and value pair
+                          new String[]{ XhtmlConstants.SOURCE_PARAM,
+                                        treeName,
+                                        XhtmlConstants.EVENT_PARAM,
+                                        isExpand ? _SHOW : _HIDE,
+                                        _PATH_PARAM,
+                                        _getPathParam(tree)});
+                                        
+  }
 
   private static RowKeySet _getExpandedRowKeys(UIXHierarchy tree)
   {

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessChoiceBarRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessChoiceBarRenderer.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessChoiceBarRenderer.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessChoiceBarRenderer.java Fri Jan 30 14:42:16 2009
@@ -292,12 +292,12 @@
                                                      null,
                                                      formName,
                                                      false,
-                                                     eventKey,
-                                                     sourceKey,
+                                                     EVENT_PARAM,
+                                                     SOURCE_PARAM,
                                                      nameString,
-                                                     valueKey,
+                                                     VALUE_PARAM,
                                                      selectedIndex - 1,
-                                                     sizeKey,
+                                                     SIZE_PARAM,
                                                      0);
       }
     }
@@ -370,12 +370,12 @@
                                                      buttonID,
                                                      formName,
                                                      false,
-                                                     eventKey,
-                                                     sourceKey,
+                                                     EVENT_PARAM,
+                                                     SOURCE_PARAM,
                                                      nameString,
-                                                     valueKey,
+                                                     VALUE_PARAM,
                                                      selectedIndex + 1,
-                                                     sizeKey,
+                                                     SIZE_PARAM,
                                                      1);
       }
 

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessUtils.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessUtils.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/ProcessUtils.java Fri Jan 30 14:42:16 2009
@@ -25,14 +25,15 @@
 import javax.faces.context.ResponseWriter;
 
 import org.apache.myfaces.trinidad.component.UIXCollection;
+import org.apache.myfaces.trinidad.context.RenderingContext;
 
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.Scriptlet;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlUtils;
 import org.apache.myfaces.trinidadinternal.share.url.FormEncoder;
 import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
 import org.apache.myfaces.trinidadinternal.ui.UIConstants;
 import org.apache.myfaces.trinidadinternal.ui.UINode;
 import org.apache.myfaces.trinidadinternal.ui.beans.MarlinBean;
-import org.apache.myfaces.trinidad.context.RenderingContext;
-import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.Scriptlet;
 import org.apache.myfaces.trinidad.util.IntegerUtils;
 
 /**
@@ -72,17 +73,20 @@
     submitButton.setAttributeValue(UIConstants.TEXT_ATTR, buttonText);
     submitButton.setAttributeValue(UIConstants.ACCESS_KEY_ATTR,
                                    buttonAccessKey);
-
-    submitButton.setAttributeValue(UIConstants.NAME_VALUES_ATTR,
-                                   _createKeyValueArray(eventKey,
-                                                        sourceKey,
-                                                        source,
-                                                        valueKey,
-                                                        value,
-                                                        sizeKey,
-                                                        size,
-                                                        null,
-                                                        null));
+                                   
+    String nameAttri = XhtmlUtils.getEncodedNameAttribute (
+                      //Array should be in the order of parameter name and value pair
+                              new String[]{sourceKey,
+                                           source,
+                                           eventKey,
+                                           UIConstants.GOTO_EVENT,
+                                           valueKey,
+                                           Long.toString(value),
+                                           sizeKey,
+                                           Integer.toString(size)});
+                                               
+    submitButton.setAttributeValue(UIConstants.NAME_ATTR, nameAttri);
+    
     return submitButton;
   }
 

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/SubmitButtonRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/SubmitButtonRenderer.java?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/SubmitButtonRenderer.java (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/SubmitButtonRenderer.java Fri Jan 30 14:42:16 2009
@@ -46,21 +46,15 @@
   {
     super.renderAttributes(context, node);
 
-    // if we don't support scripting, we have to generate a special
-    // compound name for the submit button
+    // For Non-JavaScript browsers, render the name atttribute which is
+    // encoded with parameter name and value pair.
     if (!supportsScripting(context))
     {
-      String compoundName = XhtmlLafUtils.createCompoundName(
-                              context,
-                              getParentFormName(context),
-                              getNameValues(context, node),
-                              null);
-
-      context.getResponseWriter().writeAttribute("name", compoundName, null);
-    }
+      context.getResponseWriter().writeAttribute("name", 
+                  node.getAttributeValue(context, NAME_ATTR), null);
+    } 
   }
 
-
   /**
    * Override to change the type of the button
    */

Modified: myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js?rev=739297&r1=739296&r2=739297&view=diff
==============================================================================
--- myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js (original)
+++ myfaces/trinidad/trunk_1.2.x/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js Fri Jan 30 14:42:16 2009
@@ -220,6 +220,7 @@
   var isSolaris         = false;
   var isWindows         = false;
   var isWindowsMobile6  = false;
+  var isNokiaPhone      = false; 
   var kind              = "unknown";
 
   // Group IE and IE based browsers such as IE Mobile on WM5 and WM6
@@ -349,6 +350,12 @@
   {
     isSolaris = true;
   }
+  else if ((agentString.indexOf('symbian') != -1) ||
+           (agentString.indexOf('nokia') != -1)) 
+  { 
+     isNokiaPhone = true;
+     pprUnsupported = true;
+  } 
 
   _agent.isBlackBerry           = isBlackBerry;
   _agent.isGecko                = isGecko;
@@ -356,6 +363,7 @@
   _agent.isIEGroup              = isIEGroup;
   _agent.isMac                  = isMac;
   _agent.isNav                  = isNav;
+  _agent.isNokiaPhone           = isNokiaPhone;
   _agent.isOpera                = isOpera;
   _agent.isPIE                  = isPIE;
   _agent.isSafari               = isSafari;
@@ -1223,9 +1231,29 @@
 
   var funcName = '_' + _getJavascriptId(_getFormName(form)) + 'Validator';
   var formWind = window[funcName];
-  if (formWind)
-    return formWind(form, source);
-
+  if (formWind)  
+  {
+    try
+    {
+      ret = formWind(form, source);
+    }
+    catch (e)
+    {
+      // Validator did not execute normally.
+      // In case for mobile devices, BlackBerry, Nokia, Windows Mobile and PPC
+      // return true in order to submit the form.
+      if (_agent.isPIE || _agent.isNokiaPhone || _agent.isBlackBerry)
+      {
+        ret = true;
+      }
+      else
+      {
+        ret = false;
+      }
+    }
+      return ret;
+  }
+  
   return false;
 }
 
@@ -1320,12 +1348,22 @@
 
       // Get the current message
       var facesMessage = messages[j];
-
-      var errorString = _getGlobalErrorString(currInput,
-                          globalMessage,
-                          facesMessage.getDetail(),
-                          label);
-
+                         
+      if (_agent.isNokiaPhone)
+      {
+        errorString = _getGlobalErrorString(currInput,
+                            globalMessage,
+                            facesMessage,
+                            label);
+      }
+      else
+      {
+        errorString = _getGlobalErrorString(currInput,
+                            globalMessage,
+                            facesMessage.getDetail(),
+                            label);
+      }                      
+   
       failureString += errorString + '\n';
     }
   }
@@ -1411,12 +1449,30 @@
       var facesMessage = messages[j];
 
       if (msgElem)
-        msgElem.innerHTML += facesMessage.getDetail();
+      {
+        if (_agent.isNokiaPhone)
+        {
+          msgElem.innerHTML = facesMessage;
+        }
+        else
+        {
+          msgElem.innerHTML = facesMessage.getDetail();
+        }
+      }
 
       // if there's nowhere to display the message in either
       // summary or detail, then pop an alert to warn the page developer
       if (!msgElem && !TrMessageBox.isPresent())
-        alert("Field Error [" + currId + "] - " + facesMessage.getDetail());
+      {
+        if (_agent.isNokiaPhone)
+        {
+          alert("Field Error [" + currId + "] - " + facesMessage);
+        }
+        else
+        {
+          alert("Field Error [" + currId + "] - " + facesMessage.getDetail());
+        }
+      }  
 
       // Add the message to the MessageBox
       TrMessageBox.addMessage(currId, label, facesMessage);
@@ -2489,8 +2545,15 @@
             catch (e)
             {
               converterError = true;
-                 // Populate the failureMap with the current error
-              inputFailures[inputFailures.length] = e.getFacesMessage();
+              // Populate the failureMap with the current error
+             if (_agent.isPIE || _agent.isNokiaPhone || _agent.isBlackBerry)
+             {
+               inputFailures[inputFailures.length] = e.message;
+             }
+             else
+             {
+               inputFailures[inputFailures.length] = e.getFacesMessage();
+             } 
             }
           }
         }
@@ -2521,7 +2584,14 @@
                   catch (e)
                   {
                     // Populate the failureMap with the current error
-                    inputFailures[inputFailures.length] = e.getFacesMessage();
+                    if (_agent.isPIE || _agent.isNokiaPhone || _agent.isBlackBerry)
+                    {
+                      inputFailures[inputFailures.length] = e.message;
+                    }
+                    else
+                    {
+                      inputFailures[inputFailures.length] = e.getFacesMessage();
+                    }
                   }
                 }
               }
@@ -3391,6 +3461,10 @@
 //
 function _pprStartBlocking(win)
 {
+  // No blocking is performed on WM, Nokia, PPC and BlackBerry devices
+  if (_agent.isPIE || _agent.isNokiaPhone || _agent.isBlackBerry)
+    return; 
+
   if (_agent.isIE)
   {
     // see TRINIDAD-952 - IE does not update the activeElement in time before
@@ -3452,6 +3526,11 @@
 //
 function _pprStopBlocking(win)
 {
+ 
+  // No blocking is performed on Nokia, PPC and BlackBerry devices
+  if (_agent.isPIE || _agent.isNokiaPhone || _agent.isBlackBerry)
+    return;
+  
   var doc = win.document;
 
   if (win._pprBlocking)
@@ -4158,8 +4237,11 @@
       _setFocus(myElement);
   }
 
-  // Initialize ourselves if we're in a PopupDialog
-  TrPopupDialog._initDialogPage();
+  // Initialize ourselves if we're in a PopupDialog except for Nokia
+  if (!_agent.isNokiaPhone)
+  {
+    TrPopupDialog._initDialogPage();
+  }
 }