Files
kalsport.pl/modules/ps_mbo/src/Controller/Admin/ModuleRecommendedController.php
2024-11-05 12:22:50 +01:00

96 lines
3.6 KiB
PHP

<?php
/**
* 2007-2020 PrestaShop and Contributors
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2020 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
namespace PrestaShop\Module\Mbo\Controller\Admin;
use PrestaShop\Module\Mbo\RecommendedModule\RecommendedModulePresenterInterface;
use PrestaShop\Module\Mbo\Tab\TabCollectionProviderInterface;
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
/**
* Responsible of render json data for ajax display of Recommended Modules.
*/
class ModuleRecommendedController extends FrameworkBundleAdminController
{
/**
* @var RequestStack
*/
private $requestStack;
/**
* @var TabCollectionProviderInterface
*/
private $tabCollectionProvider;
/**
* @var RecommendedModulePresenterInterface
*/
private $recommendedModulePresenter;
/**
* @param RequestStack $requestStack
* @param TabCollectionProviderInterface $tabCollectionProvider
* @param RecommendedModulePresenterInterface $recommendedModulePresenter
*/
public function __construct(
RequestStack $requestStack,
TabCollectionProviderInterface $tabCollectionProvider,
RecommendedModulePresenterInterface $recommendedModulePresenter
) {
parent::__construct();
$this->requestStack = $requestStack;
$this->tabCollectionProvider = $tabCollectionProvider;
$this->recommendedModulePresenter = $recommendedModulePresenter;
}
/**
* @return JsonResponse
*/
public function indexAction()
{
$response = new JsonResponse();
try {
$tabCollection = $this->tabCollectionProvider->getTabCollection();
$tabClassName = $this->requestStack->getCurrentRequest()->get('tabClassName');
$tab = $tabCollection->getTab($tabClassName);
$response->setData([
'content' => $this->renderView(
'@Modules/ps_mbo/views/templates/admin/controllers/module_catalog/recommended-modules.html.twig',
[
'recommendedModulesInstalled' => $this->recommendedModulePresenter->presentCollection($tab->getRecommendedModulesInstalled()),
'recommendedModulesNotInstalled' => $this->recommendedModulePresenter->presentCollection($tab->getRecommendedModulesNotInstalled()),
]
),
]);
} catch (ServiceUnavailableHttpException $exception) {
$response->setData([
'content' => $this->renderView('@Modules/ps_mbo/views/templates/admin/error.html.twig'),
]);
$response->setStatusCode($exception->getStatusCode());
$response->headers->add($exception->getHeaders());
}
return $response;
}
}