Skip to content

Commit

Permalink
FIX Saving individual blocks now correctly uses CMS fields to populat…
Browse files Browse the repository at this point in the history
…e element data
  • Loading branch information
ScopeyNZ committed Oct 28, 2018
1 parent a3a5e62 commit c557c16
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 22 deletions.
5 changes: 3 additions & 2 deletions src/Controllers/ElementalAreaController.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ public function apiSaveForm(HTTPRequest $request)

try {
$updated = false;
$element->update($data);

$element->updateFromFormData($data);
// Check if anything will actually be changed before writing
if ($element->isChanged()) {
$element->write();
Expand Down Expand Up @@ -193,7 +194,7 @@ public function formAction(HTTPRequest $request)
* @param int $elementID
* @return array
*/
protected function removeNamespacesFromFields(array $data, $elementID)
public static function removeNamespacesFromFields(array $data, $elementID)
{
$output = [];
$template = sprintf(EditFormFactory::FIELD_NAMESPACE_TEMPLATE, $elementID, '');
Expand Down
22 changes: 2 additions & 20 deletions src/Forms/ElementalAreaField.php
Original file line number Diff line number Diff line change
Expand Up @@ -241,27 +241,9 @@ public function saveInto(DataObjectInterface $dataObject)
continue;
}

$fieldNamePrefix = sprintf(EditFormFactory::FIELD_NAMESPACE_TEMPLATE, $elementId, '');
$prefixLength = strlen($fieldNamePrefix);

$cmsFields = $element->getCMSFields();

foreach ($data as $field => $datum) {
// Check that the field starts with a valid name
if (strpos($field, $fieldNamePrefix) !== 0) {
continue;
}

$field = $cmsFields->dataFieldByName(substr($field, $prefixLength));

if (!$field) {
continue;
}

$field->setSubmittedValue($datum);
$field->saveInto($element);
}
$data = ElementalAreaController::removeNamespacesFromFields($data, $element->ID);

$element->updateFromFormData($data);
$element->write();
}
}
Expand Down
22 changes: 22 additions & 0 deletions src/Models/BaseElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace DNADesign\Elemental\Models;

use DNADesign\Elemental\Controllers\ElementController;
use DNADesign\Elemental\Forms\EditFormFactory;
use DNADesign\Elemental\Forms\TextCheckboxGroupField;
use DNADesign\Elemental\ORM\FieldType\DBObjectType;
use Exception;
Expand Down Expand Up @@ -469,6 +470,27 @@ public function getRenderTemplates($suffix = '')
return $templateFlat;
}

/**
* Given form data (wit
*
* @param $data
*/
public function updateFromFormData($data)
{
$cmsFields = $this->getCMSFields();

foreach ($data as $field => $datum) {
$field = $cmsFields->dataFieldByName($field);

if (!$field) {
continue;
}

$field->setSubmittedValue($datum);
$field->saveInto($this);
}
}

/**
* Strip all namespaces from class namespace.
*
Expand Down

0 comments on commit c557c16

Please sign in to comment.