FIX Bulk actions should now work on many_many relations

This commit is contained in:
Mellisa Hankins 2013-01-31 12:53:31 +11:00
parent 2cc9a999f9
commit 7ddad1fe4b
2 changed files with 27 additions and 12 deletions

View File

@ -261,12 +261,22 @@ class GridFieldBulkImageUpload_Request extends RequestHandler {
$recordClass = $this->gridField->list->dataClass;
$recordForeignKey = $this->gridField->list->foreignKey;
$recordForeignID = $this->gridField->list->foreignID;
$isManyMany = ($this->gridField->list instanceof ManyManyList);
$record = Object::create($recordClass);
$record->setField($recordForeignKey, $recordForeignID);
if(!$isManyMany) {
$record->setField($recordForeignKey, $recordForeignID);
}
$record->write();
if($isManyMany) {
$this->gridField->list->add($record->ID);
}
$upload = new Upload();
$upload = new Upload();
$tmpfile = $request->postVar('BulkImageUploadField');
// Check if the file has been uploaded into the temporary storage.

View File

@ -187,17 +187,22 @@ class GridFieldBulkManager_Request extends RequestHandler {
public function unlink(SS_HTTPRequest $request)
{
$recordList = $this->getPOSTRecordList($request);
$recordClass = $this->gridField->list->dataClass;
$recordForeignKey = $this->gridField->list->foreignKey;
//$recordForeignID = $this->gridField->list->foreignID;
$result = array();
foreach ( $recordList as $id )
{
$record = DataObject::get_by_id($recordClass, $id);
$res = $record->setField($recordForeignKey, 0);
$record->write();
array_push($result, array($id => $res));
if($this->gridField->list instanceof HasManyList) {
$recordClass = $this->gridField->list->dataClass;
$recordForeignKey = $this->gridField->list->foreignKey;
//$recordForeignID = $this->gridField->list->foreignID;
foreach ( $recordList as $id ) {
$record = DataObject::get_by_id($recordClass, $id);
$res = $record->setField($recordForeignKey, 0);
$record->write();
array_push($result, array($id => $res));
}
} else {
$result = $recordList;
$this->gridField->list->removeMany($recordList);
}
$response = new SS_HTTPResponse(Convert::raw2json(array($result)));