Author: andrei_exadel
Date: 2008-08-18 09:04:45 -0400 (Mon, 18 Aug 2008)
New Revision: 10127
Modified:
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:
RF-4209
Modified:
trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java
===================================================================
---
trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java 2008-08-18
13:04:38 UTC (rev 10126)
+++
trunk/ui/fileUpload/src/main/java/org/richfaces/renderkit/FileUploadRendererBase.java 2008-08-18
13:04:45 UTC (rev 10127)
@@ -6,6 +6,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
@@ -23,7 +24,6 @@
import org.ajax4jsf.Filter;
import org.ajax4jsf.context.AjaxContext;
-import org.ajax4jsf.context.AjaxContextImpl;
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
@@ -113,19 +113,17 @@
MultipartRequest multipartRequest = map.get(uid);
- clientId = clientId + ":file";
- boolean isFlash = false;
+ boolean isFlash = (requestParameterMap.get("_richfaces_send_http_error") !=
null);
- if (multipartRequest.getFileName(clientId) == null) {
- clientId = "Filedata"; // Flash mode
- isFlash = true;
+ List<UploadItem> fileList = multipartRequest.getUploadItems();
+
+ if (fileList == null || fileList.size() == 0) {
+ return;
}
+ boolean formUpload = multipartRequest.isFormUpload();
- String fileName = multipartRequest.getFileName(clientId);
- Object file = multipartRequest.getFile(clientId);
-
- if (isFlash) {
+ if (isFlash && !formUpload) {
try {
int actualSize = multipartRequest.getFileSize(clientId);
int clientSize =
Integer.parseInt(requestParameterMap.get("_richfaces_size"));
@@ -137,12 +135,7 @@
return;
}
}
-
- fileUpload.setLocalFileName(fileName);
- fileUpload.setLocalContentType(multipartRequest.getFileContentType(clientId));
-
-
- onUploadComplete(context, file, fileUpload);
+ onUploadComplete(context, fileList, fileUpload, formUpload);
}
}
@@ -366,18 +359,17 @@
*/
@SuppressWarnings("unchecked")
private void storeData(FacesContext context, UIFileUpload fileUpload,
- Object file) {
+ List<UploadItem> fileList) {
ValueExpression data = fileUpload
.getValueExpression(_FILES_UPLOADED_ATTRIBUTE_NAME);
- UploadItem item = new UploadItem(fileUpload.getLocalFileName(),
fileUpload.getLocalContentType(), file);
if (data != null) {
if (data.getValue(context.getELContext()) instanceof Collection) {
Collection collection = (Collection) data.getValue(context
.getELContext());
- collection.add(item);
+ collection.addAll(fileList);
}
}
- new UploadEvent(fileUpload, item).queue();
+ new UploadEvent(fileUpload, fileList).queue();
}
/**
@@ -387,15 +379,16 @@
* @param file
* @param fileUpload
*/
- private void onUploadComplete(FacesContext context, Object file,
- UIFileUpload fileUpload) {
- storeData(context, fileUpload, file);
+ private void onUploadComplete(FacesContext context, List<UploadItem> fileList,
+ UIFileUpload fileUpload, boolean formUpload) {
+ storeData(context, fileUpload, fileList);
try {
AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
if ((Boolean)fileUpload.getAttributes().get(AjaxRendererUtils.AJAX_SINGLE_ATTR)) {
ajaxContext.setAjaxSingleClientId(fileUpload.getClientId(context));
}
- ajaxContext.setAjaxRequest(true);
+
+ ajaxContext.setAjaxRequest(!formUpload);
} catch (Exception e) {
e.getMessage();
}
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 2008-08-18
13:04:38 UTC (rev 10126)
+++
trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js 2008-08-18
13:04:45 UTC (rev 10127)
@@ -1002,65 +1002,100 @@
if (!parentForm) {
throw "No parent form found!";
}
+ var formUpload = !(entry && entry instanceof FileUploadEntry);
- entry.uid = encodeURIComponent(Math.random().toString());
-
var oldTarget = parentForm.target;
var oldEnctype = parentForm.enctype;
var oldEncoding = parentForm.encoding;
var oldAction = parentForm.action;
-
- parentForm.encoding = "multipart/form-data";
- parentForm.enctype = "multipart/form-data";
- parentForm.target = this.id + "_iframe";//this.id;
- parentForm.action = this.actionUrl + (/\?/.test(this.actionUrl) ?
'&_richfaces_upload_uid' : '?_richfaces_upload_uid') + '=' +
encodeURI(entry.uid) + "&id=" + this.id +
"&_richfaces_upload_file_indicator=true&AJAXREQUEST="+this.progressBar.containerId;
try {
- var inputs = parentForm.elements;
- var entryInput = entry.fileInput;
+ if (!formUpload) {
+ entry.uid = Math.random().toString();
+
+ parentForm.encoding = "multipart/form-data";
+ parentForm.enctype = "multipart/form-data";
+ parentForm.action = this.actionUrl + (/\?/.test(this.actionUrl) ?
'&_richfaces_upload_uid' : '?_richfaces_upload_uid') + '=' +
encodeURI(entry.uid) + "&id=" + this.id +
"&_richfaces_upload_file_indicator=true"+"&AJAXREQUEST="+this.progressBar.containerId;
+ parentForm.target = this.id + "_iframe";
+
+ var inputs = parentForm.elements;
+ var entryInput = entry.fileInput;
- entryInput.name = this.id + ":file";
- entryInput.disabled = false;
+ entryInput.name = this.id + ":file";
+ entryInput.disabled = false;
- var l = inputs.length;
- for (var i = 0; i < l; i++) {
- var input = inputs[i];
- if (input != entryInput) {
- if ('file' == input.type) {
- input._disabled = input.disabled;
- input.disabled = true;
- }
+ var l = inputs.length;
+ for (var i = 0; i < l; i++) {
+ var input = inputs[i];
+ if (input != entryInput) {
+ if ('file' == input.type) {
+ input._disabled = input.disabled;
+ input.disabled = true;
+ }
+ }
}
+ }else {
+ this.beforeSubmit();
}
if (!parentForm.onsubmit || parentForm.onsubmit()) {
- this.watcher = new LoadWatcher(this.iframe, function(newState) {
- this.finishProgressBar();
- this.setState(newState);
- }.bind(entry),
- function (state) {
- this.updateViewState(state);
- }.bind(this));
+ if (!formUpload) {
+ this.watcher = new LoadWatcher(this.iframe, function(newState) {
+ this.finishProgressBar();
+ this.setState(newState);
+ }.bind(entry),
+ function (state) {
+ this.updateViewState(state);
+ }.bind(this));
+ }
_JSFFormSubmit(null, parentForm.id, null, this.parameters);
}
- for (var i = 0; i < l; i++) {
- var input = inputs[i];
- if ('file' == input.type) {
- input.disabled = input._disabled;
- input._disabled = undefined;
- }
+ if (!formUpload) {
+ for (var i = 0; i < l; i++) {
+ var input = inputs[i];
+ if ('file' == input.type) {
+ input.disabled = input._disabled;
+ input._disabled = undefined;
+ }
+ }
+ }else {
+ this._enableEntries(true);
}
} finally {
parentForm.action = oldAction;
- parentForm.target = oldTarget;
parentForm.encoding = oldEncoding;
parentForm.enctype = oldEnctype;
- this.getFileSizeScript(entry.uid, this.formId);
+ if (formUpload) {
+ this.currentInput.disabled = true;
+ }else {
+ parentForm.target = oldTarget;
+ this.getFileSizeScript(entry.uid, this.formId)
+ }
}
},
+ _enableEntries: function (b) {
+ for (var i = 0; i < this.entries.length; i++) {
+ var e = this.entries[i];
+ e.fileInput.name = (!b) ? (this.id + ":file" + i) : '';
+ e.fileInput.disabled = b;
+ }
+ },
+
+ beforeSubmit: function () {
+ var f = this.getForm();
+ if (!f) {
+ throw "No parent form found!";
+ }
+ f.encoding = f.enctype = "multipart/form-data";
+ f.action = this.actionUrl + (/\?/.test(this.actionUrl) ?
'&_richfaces_upload_uid' : '?_richfaces_upload_uid') +
'=_richfaces_form_upload' + "&id=" + this.id +
"&_richfaces_upload_file_indicator=true";
+ this.currentInput.disabled = true;
+ this._enableEntries(false);
+ return true;
+ },
+
initFlashModule: function ()
{
var allowFlash = this.options.allowFlash;