<?php
/**
* Pimcore
*
* This source file is available under two different licenses:
* - GNU General Public License version 3 (GPLv3)
* - Pimcore Enterprise License (PEL)
* Full copyright and license information is available in
* LICENSE.md which is distributed with this source code.
*
* @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org)
* @license http://www.pimcore.org/license GPLv3 and PEL
*/
namespace App\Controller;
use App\Form\SettingsFormType;
use Exception;
use Pimcore\Log\ApplicationLogger;
use Pimcore\Mail;
use Pimcore\Model\Asset;
use Pimcore\Model\WebsiteSetting;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Setting;
class DefaultController extends BaseController
{
/**
* @Template
*
* @param Request $request
*
* @return array
*/
public function defaultAction(Request $request): array
{
return [];
}
public function latestEditAction() {
}
/**
* @Route("/", name="portal-page")
* @Template
* @param Request $request
* @param ApplicationLogger $logger
* @param TranslatorInterface $translator
* @return array|Response
* @throws Exception
*/
public function contentAction(Request $request, ApplicationLogger $logger, TranslatorInterface $translator): array|Response
{
if (!$this->editmode) {
if ($request->get('token') == $_ENV['CUSTOM_SEARCH_TOKEN'] || $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY') == null) {
$settingsForm = $this->settingsForm($request, $logger, $translator);
$success = false;
if ($settingsForm == "submitted") {
$success = true;
}
$device = \Pimcore\Tool\DeviceDetector::getInstance();
$device->getDevice(); // returns "phone", "tablet" or "desktop"
return $this->render('default/content.html.twig', [
'isDesktop' => $device->isDesktop(),
'isTablet' => $device->isTablet(),
'isPhone' => $device->isPhone(),
'deviceType' => $device->getDevice(),
'settingsForm' => $settingsForm,
'success' => $success
]);
}
} else {
/*return [];*/
$settingsForm = $this->settingsForm($request, $logger, $translator);
$success = false;
if ($settingsForm == "submitted") {
$success = true;
}
return $this->render('default/content.html.twig', [
'settingsForm' => $settingsForm,
'success' => $success
]);
}
}
/**
* @throws Exception
*/
public function settingsForm(Request $request, ApplicationLogger $logger, TranslatorInterface $translator): \Symfony\Component\Form\FormView|string
{
$settingsObject = Setting::getById(34);
$buttons = $settingsObject->getButtons();
$buttonColor =$settingsObject->getButtonColor();
$gallery = $settingsObject->getGallerieNavigation();
$colorSwatches = $settingsObject->getColorSwatches();
$gutter = $settingsObject->getGutter();
// build form
$form = $this->createForm(SettingsFormType::class, [
'buttons'=> $buttons,
'buttonColor' => $buttonColor,
'gallerieNavigation'=> $gallery,
'colorSwatches'=> $colorSwatches,
'gutter' => $gutter
]);
// get form request
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// get form fields
$data = $form->getData();
$settingObject = DataObject\Setting::getById(34);
$settingObject->setButtons($data['buttons']);
$settingObject->setButtonColor($data['buttonColor']);
$settingObject->setGallerieNavigation($data['gallerieNavigation']);
$settingObject->setColorSwatches($data['colorSwatches']);
$settingObject->setGutter($data['gutter']);
$settingObject->setPublished(true);
$settingObject->save();
return 'submitted';
} else {
return $form->createView();
}
}
/**
* @param Request $request
*
* @return Response
*/
public function genericMailAction(Request $request)
{
return $this->render('default/generic_mail.html.twig');
}
/**
* @param Request $request
*
* @return Response
*/
public function galleryRenderletAction(Request $request)
{
$params = [];
if ($request->get('id') && $request->get('type') === 'asset') {
$params['asset'] = Asset::getById($request->get('id'));
}
return $this->render('default/gallery_renderlet.html.twig', $params);
}
}