Below is a proposed patch to FileDataObjectManager to handle this automatically if you set the autoRelateUploads property on your ManyManyFileDataObjectManager or HasManyFileDataObjectMany to boolean: true or string: name of relation.
Index: www/dataobject_manager/code/FileDataObjectManager.php
===================================================================
--- www/dataobject_manager/code/FileDataObjectManager.php (revision 14)
+++ www/dataobject_manager/code/FileDataObjectManager.php (working copy)
@@ -41,6 +41,21 @@
public $uploadifyField = "MultipleFileUploadField";
+ // [start] bb: patch - auto relate uploaded asset (1 of 2)
+ /**
+ * false: [default] do not attempt to auto-relate uploads
+ * true: use plural name of uploaded class for relation component
+ * String: specify has_many or many_many relationship name
+ * @example
+ * $DOM = new ManyManyFileDataObjectManager;
+ * $DOM->autoRelateUploads = true;
+ * @example
+ * $DOM = new HasManyFileDataObjectManager;
+ * $DOM->autoRelateUploads = 'Videos';
+ */
+ public $autoRelateUploads = false;
+ // [end] bb: patch - auto relate uploaded asset (1 of 2)
+
public function __construct($controller, $name = null, $sourceClass = null, $fileFieldName = null, $fieldList = null, $detailFormFields = null, $sourceFilter = "", $sourceSort = "", $sourceJoin = "")
{
if(!class_exists("SWFUploadField"))
@@ -413,6 +428,21 @@
$this->updateDataObject($obj);
$obj->write();
$dataobject_ids[] = $obj->ID;
+
+ // [start] bb: patch - auto relate uploaded asset (2 of 2)
+ if($this->autoRelateUploads && property_exists($this, 'RelationType'))
+ {
+ $parent = DataObject::get_by_id($this->controllerClassName, $this->controllerID);
+ $relationName = (is_string($this->autoRelateUploads)) ?
+ $this->autoRelateUploads : $object->plural_name();
+ $func = ($this->RelationType == 'ManyMany') ?
+ 'getManyManyComponents' : 'getComponents';
+
+ $relations = $parent->$func($relationName);
+ $relations->add($obj);
+ $relations->write();
+ }
+ // [end] bb: patch - auto relate uploaded asset (2 of 2)
}
$_POST['uploaded_files'] = $dataobject_ids;
}
It does not include the JavaScript fix mentioned by Darren in http://silverstripe.org/dataobjectmanager-module-forum/show/290329#post290329
NOTE: this must be applied against version of DOM that include & use Uploadify