You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by aw...@apache.org on 2007/06/07 08:03:38 UTC

svn commit: r545078 - in /myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main: java/org/apache/myfaces/trinidadinternal/webapp/ javascript/META-INF/adf/jsLibs/ javascript/META-INF/adf/jsLibs/xhr/

Author: awiner
Date: Wed Jun  6 23:03:37 2007
New Revision: 545078

URL: http://svn.apache.org/viewvc?view=rev&rev=545078
Log:
- Fix Safari PPR - form.encoding needs to be form.enctype
- Get file upload PPR limping along

Modified:
    myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java
    myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
    myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js

Modified: myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java?view=diff&rev=545078&r1=545077&r2=545078
==============================================================================
--- myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java (original)
+++ myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadFilterImpl.java Wed Jun  6 23:03:37 2007
@@ -124,10 +124,6 @@
     GlobalConfiguratorImpl config = GlobalConfiguratorImpl.getInstance();
     config.beginRequest(externalContext);
     
-    boolean isPartialRequest = CoreRenderKit.isPartialRequest(externalContext);
-    if (isPartialRequest)
-      response = XmlHttpConfigurator.getWrappedServletResponse(response);
-    
     //To maintain backward compatibilty, wrap the request at the filter level
     Map<String, String[]> addedParams = (Map<String, String[]>) externalContext.getRequestMap().
       get(FileUploadConfiguratorImpl._PARAMS);
@@ -138,6 +134,12 @@
       request = new UploadRequestWrapper((HttpServletRequest)request, addedParams);
     }
     
+    // Need a new external context 
+    externalContext = new ServletExternalContext(_servletContext, request, response);    
+    boolean isPartialRequest = CoreRenderKit.isPartialRequest(externalContext);
+    if (isPartialRequest)
+      response = XmlHttpConfigurator.getWrappedServletResponse(response);
+
     try
     {
       
@@ -281,12 +283,6 @@
     "org.apache.myfaces.trinidadinternal.webapp.AdfacesFilterImpl.IS_RETURNING";
   private static final String _FILTER_EXECUTED_KEY =
     "org.apache.myfaces.trinidadinternal.webapp.AdfacesFilterImpl.EXECUTED";
-
-  // two parts of a script that will redirect the main page from the IFrame.
-  private static final String _IFRAME_REDIRECT_START
-    = "<html><script>if(parent._pprUpdateMode)parent.location.href='";
-  private static final String _IFRAME_REDIRECT_FINISH
-    = "';</script></html>";
 
   private static ThreadLocal<PseudoFacesContext> _PSEUDO_FACES_CONTEXT = 
     new ThreadLocal<PseudoFacesContext>()

Modified: myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js?view=diff&rev=545078&r1=545077&r2=545078
==============================================================================
--- myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js (original)
+++ myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js Wed Jun  6 23:03:37 2007
@@ -4905,3 +4905,24 @@
 
 // regular expression to gather whitespace at beginning and end of line
 TrUIUtils._TRIM_ALL_RE = /^\s*|\s*$/g;
+
+
+/**
+ * Creates a function instance that will callback the passed in function
+ * with "thisObj" as "this".  This is extremely useful for creating callbacks
+ */
+TrUIUtils.createCallback = function(thisObj, func)
+{
+  // create a function that sets up "this" and delegates all of the parameters
+  // to the passed in function
+  var proxyFunction = new Function(
+    "var f=arguments.callee; return f._func.apply(f._owner, arguments);");
+
+  // attach ourselves as "this" to the created function
+  proxyFunction._owner = thisObj;
+
+  // attach function to delegate to
+  proxyFunction._func = func;
+
+  return proxyFunction;
+}

Modified: myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js?view=diff&rev=545078&r1=545077&r2=545078
==============================================================================
--- myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js (original)
+++ myfaces/trinidad/branches/awiner-use-XHR-branch/trinidad/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/xhr/RequestQueue.js Wed Jun  6 23:03:37 2007
@@ -17,11 +17,11 @@
  *  under the License.
  */
 
+//FIXME: go from "listeners" to a callback approach
 /**
  * The RequestQueue class is a service to serialize the XML HTTP 
  * request communication from the client to the server.
  */
-
 function TrRequestQueue(domWindow)
 {  
   this._state = TrRequestQueue.STATE_READY;
@@ -168,7 +168,9 @@
  */
 TrRequestQueue.prototype._isMultipartForm = function(actionForm)
 {
-  if (actionForm.encoding.toLowerCase() != "multipart/form-data")
+  // Use enctype - supported on IE >= 6, Moz, and Safari.
+  // encoding is not supported on Safari.
+  if (actionForm.enctype.toLowerCase() != "multipart/form-data")
     return false;
 
   var inputs = actionForm.getElementsByTagName("input"), 
@@ -339,7 +341,7 @@
 * @param params     additional parameters that need to be sent to the server
 * @param listeners   Objects that implements XMLRequestListener interface
 */
-TrRequestQueue.prototype.sendMultiPartRequest = function(
+TrRequestQueue.prototype.sendMultipartRequest = function(
   context,
   actionURL,
   htmlForm, 
@@ -454,11 +456,16 @@
   this._savedActionUrl = htmlForm.action;
   this._savedTarget = htmlForm.target;
      
+  // FIXME: why are the next two lines at all necessary?  The form
+  // should already be set to post, and if the action has been
+  // updated since this was queued 
   htmlForm.method = "POST";
   htmlForm.action = actionURL;
+
   htmlForm.target = frameName;
   
   this._appendParamNode(domDocument, htmlForm, "Tr-XHR-Message", "true");
+  // FIXME: the "partial" parameter is unnecessary
   this._appendParamNode(domDocument, htmlForm, "partial", "true");
 
   if(params)
@@ -470,7 +477,7 @@
   }
   
   if(this._iframeLoadCallback == null)
-    this._iframeLoadCallback = this.createCallback(this._handleIFrameLoad);
+    this._iframeLoadCallback = TrUIUtils.createCallback(this, this._handleIFrameLoad);
   htmlForm.submit();
   
   this._window.setTimeout(this._iframeLoadCallback, 50);