[richfaces-svn-commits] JBoss Rich Faces SVN: r13620 - in trunk/ui/fileUpload/src/main: java/org/richfaces/renderkit and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Apr 16 20:42:59 EDT 2009


Author: nbelaevski
Date: 2009-04-16 20:42:59 -0400 (Thu, 16 Apr 2009)
New Revision: 13620

Modified:
   trunk/ui/fileUpload/src/main/java/org/richfaces/component/FileUploadPhaselistener.java
   trunk/ui/fileUpload/src/main/java/org/richfaces/component/UIFileUpload.java
   trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java
   trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js
Log:
https://jira.jboss.org/jira/browse/RF-6809
https://jira.jboss.org/jira/browse/RF-6495

Modified: trunk/ui/fileUpload/src/main/java/org/richfaces/component/FileUploadPhaselistener.java
===================================================================
--- trunk/ui/fileUpload/src/main/java/org/richfaces/component/FileUploadPhaselistener.java	2009-04-17 00:42:05 UTC (rev 13619)
+++ trunk/ui/fileUpload/src/main/java/org/richfaces/component/FileUploadPhaselistener.java	2009-04-17 00:42:59 UTC (rev 13620)
@@ -28,6 +28,7 @@
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
 
+import org.ajax4jsf.exception.FileUploadException;
 import org.ajax4jsf.request.MultipartRequest;
 
 /**
@@ -56,10 +57,15 @@
 		Object request = externalContext.getRequest();
 		if (request instanceof MultipartRequest) {
 			MultipartRequest multipartRequest = (MultipartRequest) request;
-			multipartRequest.parseRequest();
-			if (multipartRequest.isStopped()) {
+			try {
+				multipartRequest.parseRequest();
+				if (!multipartRequest.isDone()) {
+					facesContext.responseComplete();
+				} 
+			} catch (FileUploadException e) {
 				facesContext.responseComplete();
-			} 
+				throw e;
+			}
 		}
 	}
 

Modified: trunk/ui/fileUpload/src/main/java/org/richfaces/component/UIFileUpload.java
===================================================================
--- trunk/ui/fileUpload/src/main/java/org/richfaces/component/UIFileUpload.java	2009-04-17 00:42:05 UTC (rev 13619)
+++ trunk/ui/fileUpload/src/main/java/org/richfaces/component/UIFileUpload.java	2009-04-17 00:42:59 UTC (rev 13620)
@@ -211,6 +211,9 @@
 				MultipartRequest multipartRequest = MultipartRequest.lookupRequest(facesContext, uid);
 				if (multipartRequest != null) {
 					multipartRequest.stop();
+					if (multipartRequest.isStopped()) {
+						ajaxContext.setResponseData(uid);
+					}
 				}
 			}
 		}

Modified: trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java
===================================================================
--- trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java	2009-04-17 00:42:05 UTC (rev 13619)
+++ trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java	2009-04-17 00:42:59 UTC (rev 13620)
@@ -504,7 +504,15 @@
 	 */
 	public String getStopScript(FacesContext context, UIComponent component)
 			throws IOException {
-		return getActionScript(context, component, FileUploadConstants.FILE_UPLOAD_ACTION_STOP, null);
+		JSFunctionDefinition oncomplete = new JSFunctionDefinition();
+		oncomplete.addParameter("request");
+		oncomplete.addParameter("event");
+		oncomplete.addParameter("data");
+		StringBuffer body = new StringBuffer("$('");
+		body.append(component.getClientId(context));
+		body.append("').component.cancelUpload(data);");
+		oncomplete.addToBody(body);
+		return getActionScript(context, component, FileUploadConstants.FILE_UPLOAD_ACTION_STOP, oncomplete);
 	}
 
 	/**

Modified: trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js
===================================================================
--- trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js	2009-04-17 00:42:05 UTC (rev 13619)
+++ trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js	2009-04-17 00:42:59 UTC (rev 13620)
@@ -335,6 +335,13 @@
 		
 	},
 		
+	oncancel: function() {
+		if (!this.stopped) {
+			this.stop();
+			this.callback(FileUploadEntry.UPLOAD_CANCELED);
+		}
+	},
+	
 	onerror: function() {
 		this.callback(FileUploadEntry.UPLOAD_TRANSFER_ERROR);
 	},
@@ -465,6 +472,23 @@
 		this.initFileInput();
 	},
 	
+	cancelUpload: function(uid) {
+		if (this.activeEntry && this.activeEntry.uid == uid) {
+			if (this.watcher) {
+				this.watcher.oncancel();
+			}
+			if (this.iframe) {
+				try {
+					//call order is critical for IE 6
+					this.iframe.contentWindow.location.href = "javascript:''";
+					this.iframe.contentWindow.stop();
+				} catch (e) {
+					//TODO - ?
+				}
+			}
+		}
+	},
+	
 	initLabels: function (labels) {
 		if (labels) {
 			for (var l in labels) {
@@ -523,7 +547,7 @@
 	createFrame: function () {
 		if (this.iframe) return;
 		var div = document.createElement("div");
-			div.style.display = 'none';
+		div.style.display = 'none';
 		var child = "<iframe name='"+this.id+"_iframe' id='"+this.id+"_iframe'"+ (!Richfaces.browser.isOpera ? " src=\"javascript:''\"" : "")+"></iframe>";
 			div.innerHTML = child;
 		document.body.appendChild(div);




More information about the richfaces-svn-commits mailing list