summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrojaro <>2009-09-30 20:12:06 +0000
committerrojaro <>2009-09-30 20:12:06 +0000
commit8206257a146a93722ef5251e057866c8d4d5505c (patch)
tree189959eb2f286f0aaddd8eafd65f629fe63be595
parent2cafbde28d28413155714d6abc90dc271768f189 (diff)
merged patch from ctrlaltca which fixes the 'TActiveFileUpload is not "thread safe"' issue #90
-rwxr-xr-xframework/Web/Javascripts/source/prado/activefileupload/activefileupload.js9
-rwxr-xr-xframework/Web/UI/ActiveControls/TActiveFileUpload.php12
2 files changed, 19 insertions, 2 deletions
diff --git a/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js b/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js
index 7a1e0e77..251a3d35 100755
--- a/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js
+++ b/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js
@@ -14,6 +14,13 @@ Prado.WebUI.TActiveFileUpload = Base.extend(
this.error = $(options.errorID);
Prado.Registry.set(options.inputID, this);
+
+ var tempfield = document.createElement('input');
+ tempfield.id = "tempActiveUploadField";
+ tempfield.name = "tempActiveUploadField";
+ tempfield.value = this.options.targetID;
+ tempfield.type = "hidden";
+ this.form.appendChild(tempfield);
// set up events
if (options.autoPostBack){
@@ -27,7 +34,7 @@ Prado.WebUI.TActiveFileUpload = Base.extend(
this.complete.style.display = 'none';
this.error.style.display = 'none';
this.indicator.style.display = '';
-
+
// set the form to submit in the iframe, submit it, and then reset it.
this.oldtargetID = this.form.target;
this.form.target = this.options.targetID;
diff --git a/framework/Web/UI/ActiveControls/TActiveFileUpload.php b/framework/Web/UI/ActiveControls/TActiveFileUpload.php
index b935936b..3b8212b9 100755
--- a/framework/Web/UI/ActiveControls/TActiveFileUpload.php
+++ b/framework/Web/UI/ActiveControls/TActiveFileUpload.php
@@ -96,7 +96,7 @@ class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallback
* @param TEventParameter event parameter to be passed to the event handlers
*/
public function onFileUpload($param){
- if ($this->_flag->getValue() && $this->getPage()->getIsPostBack()){
+ if ($this->_flag->getValue() && $this->getPage()->getIsPostBack() && $param == $this->_target->getUniqueID()){
// save the file so that it will persist past the end of this return.
$localName = str_replace('\\', '/', tempnam(Prado::getPathOfNamespace($this->getTempPath()),''));
parent::saveAs($localName);
@@ -191,6 +191,16 @@ EOS;
}
/**
+ * Raises postdata changed event.
+ * This method calls {@link onFileUpload} method
+ * This method is primarily used by framework developers.
+ */
+ public function raisePostDataChangedEvent()
+ {
+ $this->onFileUpload($this->getPage()->getRequest()->itemAt('tempActiveUploadField'));
+ }
+
+ /**
* Publish the javascript
*/
public function onPreRender($param){