Spaces:
No application file
No application file
namespace Mautic\PageBundle\Controller; | |
use Mautic\CoreBundle\Controller\AjaxController as CommonAjaxController; | |
use Mautic\CoreBundle\Controller\VariantAjaxControllerTrait; | |
use Mautic\CoreBundle\Helper\InputHelper; | |
use Mautic\PageBundle\Form\Type\AbTestPropertiesType; | |
use Mautic\PageBundle\Model\PageModel; | |
use Symfony\Component\Form\FormFactoryInterface; | |
use Symfony\Component\HttpFoundation\Request; | |
class AjaxController extends CommonAjaxController | |
{ | |
use VariantAjaxControllerTrait; | |
/** | |
* @return \Symfony\Component\HttpFoundation\JsonResponse | |
*/ | |
public function getAbTestFormAction(Request $request, FormFactoryInterface $formFactory) | |
{ | |
return $this->getAbTestForm( | |
$request, | |
$formFactory, | |
'page', | |
AbTestPropertiesType::class, | |
'page_abtest_settings', | |
'page', | |
'@MauticPage/AbTest/form.html.twig', | |
['@MauticPage/AbTest/form.html.twig', 'MauticPageBundle:FormTheme\Page'] | |
); | |
} | |
public function pageListAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse | |
{ | |
$filter = InputHelper::clean($request->query->get('filter')); | |
$pageModel = $this->getModel('page.page'); | |
\assert($pageModel instanceof PageModel); | |
$results = $pageModel->getLookupResults('page', $filter); | |
$dataArray = []; | |
foreach ($results as $r) { | |
$dataArray[] = [ | |
'label' => $r['title']." ({$r['id']}:{$r['alias']})", | |
'value' => $r['id'], | |
]; | |
} | |
return $this->sendJsonResponse($dataArray); | |
} | |
public function setBuilderContentAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse | |
{ | |
$dataArray = ['success' => 0]; | |
$entityId = InputHelper::clean($request->request->get('entity')); | |
$session = $request->getSession(); | |
if (!empty($entityId)) { | |
$sessionVar = 'mautic.pagebuilder.'.$entityId.'.content'; | |
// Check for an array of slots | |
$slots = InputHelper::_($request->request->get('slots') ?? [], 'html'); | |
$content = $session->get($sessionVar, []); | |
if (!is_array($content)) { | |
$content = []; | |
} | |
if (!empty($slots)) { | |
// Builder was closed so save each content | |
foreach ($slots as $slot => $newContent) { | |
$content[$slot] = $newContent; | |
} | |
$session->set($sessionVar, $content); | |
$dataArray['success'] = 1; | |
} else { | |
// Check for a single slot | |
$newContent = InputHelper::html($request->request->get('content')); | |
$slot = InputHelper::clean($request->request->get('slot')); | |
if (!empty($slot)) { | |
$content[$slot] = $newContent; | |
$session->set($sessionVar, $content); | |
$dataArray['success'] = 1; | |
} | |
} | |
} | |
return $this->sendJsonResponse($dataArray); | |
} | |
/** | |
* Called by parent::getBuilderTokensAction(). | |
* | |
* @return array | |
*/ | |
protected function getBuilderTokens($query) | |
{ | |
/** @var PageModel $model */ | |
$model = $this->getModel('page'); | |
return $model->getBuilderComponents(null, ['tokens'], $query ?? ''); | |
} | |
} | |