Spaces:
No application file
No application file
File size: 3,232 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 |
<?php
namespace Mautic\DashboardBundle\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Mautic\CoreBundle\Controller\AjaxController as CommonAjaxController;
use Mautic\DashboardBundle\Entity\Widget;
use Mautic\DashboardBundle\Form\Type\WidgetType;
use Mautic\DashboardBundle\Model\DashboardModel;
use Mautic\PageBundle\Entity\Hit;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class AjaxController extends CommonAjaxController
{
/**
* Count how many visitors are currently viewing a page.
*/
public function viewingVisitorsAction(EntityManagerInterface $entityManager): JsonResponse
{
$dataArray = ['success' => 0];
/** @var \Mautic\PageBundle\Entity\PageRepository $pageRepository */
$pageRepository = $entityManager->getRepository(Hit::class);
$dataArray['viewingVisitors'] = $pageRepository->countVisitors(60, true);
$dataArray['success'] = 1;
return $this->sendJsonResponse($dataArray);
}
/**
* Returns HTML of a new widget based on its values.
*/
public function updateWidgetFormAction(Request $request, FormFactoryInterface $formFactory): JsonResponse
{
$data = $request->request->all()['widget'] ?? [];
$dataArray = ['success' => 0];
// Clear params if type is not selected
if (empty($data['type'])) {
unset($data['params']);
}
$widget = new Widget();
$form = $formFactory->create(WidgetType::class, $widget);
$formHtml = $this->render('@MauticDashboard/Widget/form.html.twig',
['form' => $form->submit($data)->createView()]
)->getContent();
$dataArray['formHtml'] = $formHtml;
$dataArray['success'] = 1;
return $this->sendJsonResponse($dataArray);
}
/**
* Saves the new ordering of dashboard widgets.
*/
public function updateWidgetOrderingAction(Request $request): JsonResponse
{
$data = $request->request->all()['ordering'] ?? [];
$dashboardModel = $this->getModel('dashboard');
\assert($dashboardModel instanceof DashboardModel);
$repo = $dashboardModel->getRepository();
$repo->updateOrdering(array_flip($data), $this->user->getId());
$dataArray = ['success' => 1];
return $this->sendJsonResponse($dataArray);
}
/**
* Deletes the entity.
*/
public function deleteAction(Request $request): JsonResponse
{
$objectId = $request->request->get('widget');
$dataArray = ['success' => 0];
// @todo: build permissions
// if (!$this->security->isGranted('dashobard:widgets:delete')) {
// return $this->accessDenied();
// }
/** @var DashboardModel $model */
$model = $this->getModel('dashboard');
$entity = $model->getEntity($objectId);
if ($entity) {
$model->deleteEntity($entity);
$name = $entity->getName();
$dataArray['success'] = 1;
}
return $this->sendJsonResponse($dataArray);
}
}
|