Spaces:
No application file
No application file
File size: 3,473 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
<?php
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 ?? '');
}
}
|