From 8291dbf4d38f71ff7355914903172c945bbbf5a6 Mon Sep 17 00:00:00 2001 From: Sam Georges Date: Sat, 6 Sep 2014 22:22:59 +1000 Subject: [PATCH] Widgets can now state that they contribute no data when the form is saved Applied to FileUpload.php --- modules/backend/classes/FormWidgetBase.php | 5 +++++ modules/backend/formwidgets/FileUpload.php | 8 ++++++++ modules/backend/widgets/Form.php | 3 +++ 3 files changed, 16 insertions(+) diff --git a/modules/backend/classes/FormWidgetBase.php b/modules/backend/classes/FormWidgetBase.php index 4206749da..92eecfcb0 100644 --- a/modules/backend/classes/FormWidgetBase.php +++ b/modules/backend/classes/FormWidgetBase.php @@ -37,6 +37,11 @@ abstract class FormWidgetBase extends WidgetBase */ public $previewMode = false; + /** + * @var int Value returned when the widget should not contribute any save data. + */ + const NO_SAVE_DATA = -1; + /** * Constructor * @param $controller Controller Active controller object. diff --git a/modules/backend/formwidgets/FileUpload.php b/modules/backend/formwidgets/FileUpload.php index a3fdc0096..5b9e4666a 100644 --- a/modules/backend/formwidgets/FileUpload.php +++ b/modules/backend/formwidgets/FileUpload.php @@ -178,6 +178,14 @@ class FileUpload extends FormWidgetBase $this->addJs('js/fileupload.js', 'core'); } + /** + * {@inheritDoc} + */ + public function getSaveData($value) + { + return FormWidgetBase::NO_SAVE_DATA; + } + /** * Checks the current request to see if it is a postback containing a file upload * for this particular widget. diff --git a/modules/backend/widgets/Form.php b/modules/backend/widgets/Form.php index 946a28d18..fff5cccc0 100644 --- a/modules/backend/widgets/Form.php +++ b/modules/backend/widgets/Form.php @@ -11,6 +11,7 @@ use Backend\Classes\FormField; use Backend\Classes\WidgetBase; use Backend\Classes\WidgetManager; use System\Classes\ApplicationException; +use Backend\Classes\FormWidgetBase; /** * Form Widget @@ -718,6 +719,8 @@ class Form extends WidgetBase : null; $data[$field] = $widget->getSaveData($widgetValue); + if ($data[$field] === FormWidgetBase::NO_SAVE_DATA) + unset($data[$field]); } return $data;