<?php
namespace VehicleMarketBundle\Document\Areabrick;
use Pimcore\Extension\Document\Areabrick\AbstractTemplateAreabrick;
use Pimcore\Extension\Document\Areabrick\EditableDialogBoxConfiguration;
use Pimcore\Extension\Document\Areabrick\EditableDialogBoxInterface;
use Pimcore\Http\Request\Resolver\EditmodeResolver;
use Pimcore\Model\DataObject\Vehicle;
use Pimcore\Model\Document\Editable;
use Pimcore\Model\Document\Editable\Area\Info;
use Pimcore\Translation\Translator;
use Symfony\Component\HttpFoundation\RedirectResponse;
class vehicleDetail extends AbstractTemplateAreabrick implements EditableDialogBoxInterface
{
/**
* @var EditmodeResolver
*/
protected $editmodeResolver;
public function __construct(EditmodeResolver $editmodeResolver, Translator $translator)
{
$this->editmodeResolver = $editmodeResolver;
$this->translator = $translator;
}
public function action(Info $info)
{
if ($this->editmodeResolver->isEditmode($info->getRequest())) {
$vehicle = Vehicle::getList()->current();
} else {
$vehicle = Vehicle::getList()->filterByInternalVehicleId($info->getRequest()->get('i'))->current();
if (! $vehicle instanceof Vehicle) {
return new RedirectResponse('/fahrzeugboerse', 302);
}
}
$info->setParam('vehicle', $vehicle);
}
public function getHtmlTagOpen(Info $info)
{
return '';
}
public function getHtmlTagClose(Info $info)
{
return '';
}
public function getName()
{
return 'Vehicle Detail';
}
public function getDescription()
{
return 'A component for rendering the detail page of a car';
}
public function getTemplateLocation()
{
return static::TEMPLATE_LOCATION_BUNDLE;
}
public function getEditableDialogBoxConfiguration(Editable $area, ?Info $info): EditableDialogBoxConfiguration
{
$cars = Vehicle::getList();
return (new EditableDialogBoxConfiguration())
->setItems([
'type' => 'tabpanel',
'items' => [
[
'type' => 'panel',
'title' => $this->translator->trans('Legal Notice', [], 'admin'),
'items' => [
[
'type' => 'textarea',
'name' => 'car-detail-financing-legal-notice',
'label' => $this->translator->trans('Legal information for financing?', [], 'admin'),
],
[
'type' => 'textarea',
'name' => 'car-detail-leasing-legal-notice',
'label' => $this->translator->trans('Legal information for leasing?', [], 'admin'),
],
[
'type' => 'textarea',
'name' => 'car-detail-address-financing-leasing',
'label' => $this->translator->trans('Address Information?', [], 'admin'),
],
]
],
[
'type' => 'panel',
'title' => $this->translator->trans('Settings', [], 'admin'),
'items' => [
[
'type' => 'select',
'name' => 'car-detail-available-from',
'label' => $this->translator->trans('Show Car available from?', [], 'admin'),
'config' => [
'store' => [
[true, $this->translator->trans('Yes', [], 'admin'),],
[false, $this->translator->trans('No', [], 'admin'),],
],
'defaultValue' => true
]
]
]
],
]
])
->setReloadOnClose(true);
}
}