Compare commits

...

2 Commits

Author SHA1 Message Date
Tony Air 370b2c0764 FIX: ElementForm action links 2023-11-20 12:21:55 +02:00
Tony Air af29804172 IMPR: AJAX finish response for ElementForm 2023-11-20 11:51:45 +02:00
3 changed files with 65 additions and 1 deletions

View File

@ -17,6 +17,10 @@ SilverStripe\UserForms\Model\UserDefinedForm:
can_be_root: false
extensions:
- A2nt\ElementalBasics\Extensions\UserDefinedFormExtension
SilverStripe\Core\Injector\Injector:
DNADesign\ElementalUserForms\Control\ElementFormController:
class: A2nt\ElementalBasics\Controllers\ElementFormController
##################
SilverStripe\CMS\Controllers\ContentController:

View File

@ -0,0 +1,61 @@
<?php
namespace A2nt\ElementalBasics\Controllers;
use DNADesign\ElementalUserForms\Control\ElementFormController as ControlElementFormController;
use SilverStripe\Control\Controller;
use SilverStripe\Control\Director;
use SilverStripe\ORM\ValidationResult;
class ElementFormController extends ControlElementFormController
{
private static $allowed_actions = [
'Form',
'finished',
];
public function Form()
{
$form = parent::Form();
// Elements actions
$current = Controller::curr();
$link = $current->Link();
if (is_a($current, self::class)) {
$link = $current->getElement()->getPage()->Link();
}
$link = Director::makeRelative($link);
$link = !$link || $link === '/' ? '/home' : $link;
$form->setFormAction(
Controller::join_links(
'/',
$link,
'element',
$this->owner->ID,
__FUNCTION__
)
);
return $form;
}
public function finished()
{
$user = $this->getUserFormController();
$user->finished();
$page = $this->getPage();
if (Director::is_ajax()) {
$el = $this->getElement();
return json_encode([
'message' => $el->OnCompleteMessage,
'status' => ValidationResult::TYPE_GOOD,
]);
}
return parent::finished();
}
}

View File

@ -1,6 +1,5 @@
<?php
namespace A2nt\ElementalBasics\Controllers;
use DNADesign\Elemental\Controllers\ElementController;