Skip to content

Commit

Permalink
Refactor logic around regular form architecture so UploadField can works
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxime Rainville committed Feb 29, 2024
1 parent 7087ed4 commit c2e9ca6
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/Extensions/Sortable.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace SilverStripe\AnyField\Extensions;

use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HiddenField;
use SilverStripe\ORM\DataExtension;

/**
Expand All @@ -22,6 +23,6 @@ class Sortable extends DataExtension

public function updateCMSFields(FieldList $fields)
{
$fields->removeByName('Sort');
$fields->add(HiddenField::create('Sort'));
}
}
33 changes: 24 additions & 9 deletions src/Services/AnyService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
use SilverStripe\Core\Injector\Injectable;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Core\Injector\InjectorNotFoundException;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\Form;
use SilverStripe\Forms\HiddenField;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\SS_List;

Expand Down Expand Up @@ -41,6 +44,10 @@ public function generateDescription(string $className, array $data): array
$this->instanceOfDataObject($dummy);
$summary = $dummy->hasMethod('getSummary') ? (string)$dummy->getSummary() : '';

if (empty($summary) && $dummy->hasMethod('getDescription')) {
$summary = (string)$dummy->getDescription();
}

return [
'title' => $dummy->getTitle(),
'description' => $summary,
Expand All @@ -50,11 +57,14 @@ public function generateDescription(string $className, array $data): array
/**
* Given a DataObject, return a map of its fields so it can be edited in a AnyField
*/
public function map(DataObject $value): array
public function map(DataObject $record): array
{
$data = $value->toMap();
$data['dataObjectClassKey'] = $value->ClassName;
unset($data['ClassName']);
$fieldlist = $record->getCMSFields();
$fieldlist->add(HiddenField::create('ID'));
$form = Form::create(null, null, $fieldlist, FieldList::create());
$form->loadDataFrom($record);
$data = $form->getData();
$data['dataObjectClassKey'] = $record->ClassName;
return $data;
}

Expand Down Expand Up @@ -103,11 +113,16 @@ public function setData(DataObject $record, array $data): DataObject
}
}

foreach ($data as $key => $value) {
if ($key !== 'ID' && $record->hasField($key)) {
$record->setField($key, $value);
}
}
$fieldlist = $record->getCMSFields();
$form = Form::create(null, null, $fieldlist, FieldList::create());
$form->loadDataFrom($data);
$form->saveInto($record);

// foreach ($data as $key => $value) {
// if ($key !== 'ID' && $record->hasField($key)) {
// $record->setField($key, $value);
// }
// }

return $record;
}
Expand Down

0 comments on commit c2e9ca6

Please sign in to comment.