mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
NEW: Added replaceExistingFile setting for UploadField.
Sometimes has-one UploadFields can get confused about whether or not there is an existing file that needs deleting. This setting lets you make a more robust has-one UploadField, where any existing file will be replaced. It more closely mimics simple single-file upload fields.
This commit is contained in:
parent
cc7318fde4
commit
5b450f7fea
@ -6,6 +6,7 @@ UploadField:
|
||||
allowedMaxFileNumber:
|
||||
canUpload: true
|
||||
canAttachExisting: 'CMS_ACCESS_AssetAdmin'
|
||||
replaceExistingFile: false
|
||||
previewMaxWidth: 80
|
||||
previewMaxHeight: 60
|
||||
uploadTemplateName: 'ss-uploadfield-uploadtemplate'
|
||||
|
@ -93,6 +93,13 @@ class UploadField extends FileField {
|
||||
* String values are interpreted as permission codes.
|
||||
*/
|
||||
'canAttachExisting' => "CMS_ACCESS_AssetAdmin",
|
||||
/**
|
||||
* @var boolean If a second file is uploaded, should it replace the existing one rather than throwing an errror?
|
||||
* This only applies for has_one relationships, and only replaces the association
|
||||
* rather than the actual file database record or filesystem entry.
|
||||
*/
|
||||
'replaceExistingFile' => false,
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
'previewMaxWidth' => 80,
|
||||
@ -487,6 +494,10 @@ class UploadField extends FileField {
|
||||
$tooManyFiles = $record->{$name}()->count() >= $this->getConfig('allowedMaxFileNumber');
|
||||
// has_one only allows one file at any given time.
|
||||
} elseif($record->has_one($name)) {
|
||||
// If we're allowed to replace an existing file, clear out the old one
|
||||
if($record->$name && $this->getConfig('replaceExistingFile')) {
|
||||
$record->$name = null;
|
||||
}
|
||||
$tooManyFiles = $record->{$name}() && $record->{$name}()->exists();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user