Handle UploadField sub request properly Fix #125, Fix #124

BulkUploadField Extends UploadField so handlers link properly through
the GridField
This commit is contained in:
Thierry François 2016-04-11 22:31:21 +03:00
parent 825b989ad6
commit 29482dbd17
3 changed files with 39 additions and 20 deletions

View File

@ -0,0 +1,21 @@
<?php
/**
* Custom UploadField used to override Link()
* and redirect UploadField action properly through the GridField.
*
* @author colymba
*/
class BulkUploadField extends UploadField
{
protected $gridfield;
public function __construct($gridfield, $parent, $folderName = null) {
$this->gridfield = $gridfield;
parent::__construct($parent, $folderName);
}
public function Link($action = null)
{
return Controller::join_links($this->gridfield->Link(), 'bulkupload/', $action);
}
}

View File

@ -290,7 +290,7 @@ class GridFieldBulkUpload implements GridField_HTMLProvider, GridField_URLHandle
public function bulkUploadField($gridField)
{
$fileRelationName = $this->getFileRelationName($gridField);
$uploadField = UploadField::create($fileRelationName, '')
$uploadField = BulkUploadField::create($gridField, $fileRelationName, '')
->setForm($gridField->getForm())
->setConfig('previewMaxWidth', 20)
@ -417,7 +417,7 @@ class GridFieldBulkUpload implements GridField_HTMLProvider, GridField_URLHandle
public function getURLHandlers($gridField)
{
return array(
'bulkupload' => 'handleBulkUpload',
'bulkupload' => 'handleBulkUpload'
);
}

View File

@ -33,7 +33,7 @@ class GridFieldBulkUpload_Request extends RequestHandler
* @var array
*/
private static $allowed_actions = array(
'upload', 'select', 'attach', 'fileexists',
'upload', 'attach', 'fileexists', 'select'
);
/**
@ -42,7 +42,7 @@ class GridFieldBulkUpload_Request extends RequestHandler
* @var array
*/
private static $url_handlers = array(
'$Action!' => '$Action',
'$Action!' => '$Action'
);
/**
@ -169,22 +169,6 @@ class GridFieldBulkUpload_Request extends RequestHandler
return $return;
}
/**
* Pass select request to UploadField.
*
* @link UploadField->select()
*/
public function select(SS_HTTPRequest $request)
{
/*
$uploadField = $this->getUploadField();
return $uploadField->handleSelect($request);
*/
$uploadField = $this->getUploadField();
return UploadField_SelectHandler::create($uploadField, $uploadField->getFolderName());
}
/**
* Pass getRelationAutosetClass request to UploadField
* Used by select dialog.
@ -255,6 +239,20 @@ class GridFieldBulkUpload_Request extends RequestHandler
return $response;
}
/**
* Pass select request to UploadField.
*
* @link UploadField->select()
*/
public function select(SS_HTTPRequest $request)
{
$uploadField = $this->getUploadField();
$uploadField->setRequest($request);
return $uploadField->handleSelect($request);
}
/**
* Pass fileexists request to UploadField.
*