This commit is contained in:
Thomas Peterson 2025-09-28 12:01:49 +02:00
parent 9aa0056bac
commit 4ff7a22fb6
683 changed files with 1864 additions and 58079 deletions

View File

@ -65,7 +65,7 @@ server {
} }
# location /w2p/ { # location /w2p/ {
#j proxy_pass http://tp:8080/w2p/; # proxy_pass http://tp:8080/w2p/;
# proxy_temp_path /tmp/proxy; # proxy_temp_path /tmp/proxy;
#} #}

View File

@ -26,8 +26,9 @@ class SearchType extends AbstractType
{ {
/** @var Session */ /** @var Session */
protected $session; protected $session;
/** @var Shop */ /** @var Shop */
protected $shop; protected $shop;
public function __construct(RequestStack $requestStack, Shop $shop) public function __construct(RequestStack $requestStack, Shop $shop)
{ {
$this->session = $requestStack->getSession(); $this->session = $requestStack->getSession();
@ -37,9 +38,7 @@ class SearchType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$session = $this->session; $session = $this->session;
$builder $builder->setMethod('POST')->add('term', TextFilterType::class, [
->setMethod('POST')
->add('term', TextFilterType::class, array(
'data' => $session->get('contact_search_term'), 'data' => $session->get('contact_search_term'),
'apply_filter' => function (QueryInterface $filterQuery, $field, $values) use ($session) { 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) use ($session) {
$session->set('contact_search_term', $values['value']); $session->set('contact_search_term', $values['value']);
@ -47,29 +46,67 @@ class SearchType extends AbstractType
return null; return null;
} }
$filterQuery->getQueryBuilder() $filterQuery
->getQueryBuilder()
->leftJoin('contact.shopContact', 's') ->leftJoin('contact.shopContact', 's')
->andWhere(" ->andWhere('
s.shop = " . $this->shop->getSelectedShop()->getUid() . " AND s.shop = ' .
(contact.uid LIKE '%" . $values['value'] . "%' OR $this->shop->getSelectedShop()->getUid() .
contact.firstname LIKE '%" . $values['value'] . "%' OR " AND
contact.lastname LIKE '%" . $values['value'] . "%' OR (contact.uid LIKE '%" .
contact.zip LIKE '%" . $values['value'] . "%' OR $values['value'] .
contact.city LIKE '%" . $values['value'] . "%' OR "%' OR
contact.houseNumber LIKE '%" . $values['value'] . "%' OR contact.firstname LIKE '%" .
contact.street LIKE '%" . $values['value'] . "%' OR $values['value'] .
contact.destrict LIKE '%" . $values['value'] . "%' OR "%' OR
contact.ustid LIKE '%" . $values['value'] . "%' OR contact.lastname LIKE '%" .
contact.state LIKE '%" . $values['value'] . "%' OR $values['value'] .
contact.function LIKE '%" . $values['value'] . "%' OR "%' OR
contact.abteilung LIKE '%" . $values['value'] . "%' OR contact.zip LIKE '%" .
contact.position LIKE '%" . $values['value'] . "%' OR $values['value'] .
contact.title LIKE '%" . $values['value'] . "%' OR "%' OR
contact.company LIKE '%" . $values['value'] . "%' OR contact.city LIKE '%" .
contact.company2 LIKE '%" . $values['value'] . "%' OR $values['value'] .
contact.username LIKE '%" . $values['value'] . "%') "%' OR
contact.houseNumber LIKE '%" .
$values['value'] .
"%' OR
contact.street LIKE '%" .
$values['value'] .
"%' OR
contact.district LIKE '%" .
$values['value'] .
"%' OR
contact.ustid LIKE '%" .
$values['value'] .
"%' OR
contact.state LIKE '%" .
$values['value'] .
"%' OR
contact.function LIKE '%" .
$values['value'] .
"%' OR
contact.abteilung LIKE '%" .
$values['value'] .
"%' OR
contact.position LIKE '%" .
$values['value'] .
"%' OR
contact.title LIKE '%" .
$values['value'] .
"%' OR
contact.company LIKE '%" .
$values['value'] .
"%' OR
contact.company2 LIKE '%" .
$values['value'] .
"%' OR
contact.username LIKE '%" .
$values['value'] .
"%')
"); ");
})); },
]);
} }
public function getName() public function getName()
@ -79,8 +116,8 @@ class SearchType extends AbstractType
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults([
'csrf_protection' => false 'csrf_protection' => false,
)); ]);
} }
} }

View File

@ -8,6 +8,7 @@ use PSC\Shop\AccountBundle\Model\Account as PSCAccount;
use PSC\Shop\AccountBundle\Transformer\Account; use PSC\Shop\AccountBundle\Transformer\Account;
use PSC\Shop\ContactBundle\Model\Role; use PSC\Shop\ContactBundle\Model\Role;
use PSC\Shop\ContactBundle\Repository\ContactRepository; use PSC\Shop\ContactBundle\Repository\ContactRepository;
use PSC\Shop\EntityBundle\Repository\AccountRepository;
use PSC\Shop\MediaBundle\Model\Media; use PSC\Shop\MediaBundle\Model\Media;
use PSC\Shop\MediaBundle\Service\MediaManager; use PSC\Shop\MediaBundle\Service\MediaManager;
use PSC\Shop\MediaBundle\Transformer\Media as PSCMedia; use PSC\Shop\MediaBundle\Transformer\Media as PSCMedia;
@ -18,6 +19,7 @@ readonly class Contact
public function __construct( public function __construct(
private MediaManager $mediaManager, private MediaManager $mediaManager,
private ContactRepository $contactRepository, private ContactRepository $contactRepository,
private AccountRepository $accountRepository,
private Shop $shopService, private Shop $shopService,
private EntityManagerInterface $entityManager, private EntityManagerInterface $entityManager,
private DocumentManager $documentManager, private DocumentManager $documentManager,
@ -42,6 +44,13 @@ readonly class Contact
} else { } else {
$contactEntity = new \PSC\Shop\EntityBundle\Entity\Contact(); $contactEntity = new \PSC\Shop\EntityBundle\Entity\Contact();
$contactDoc = new \PSC\Shop\EntityBundle\Document\Contact(); $contactDoc = new \PSC\Shop\EntityBundle\Document\Contact();
if ($contact->getAccount()->getUid() != 0) {
$accountEntity = $this->accountRepository->findOneBy(['uid' => $contact->getAccount()->getUid()]);
if ($accountEntity) {
$contactEntity->setAccount($accountEntity);
}
}
} }
} }

View File

@ -205,7 +205,7 @@ class Contact implements UserInterface, PasswordAuthenticatedUserInterface, \Ser
$this->budget = 0; $this->budget = 0;
$this->collectingOrders = false; $this->collectingOrders = false;
$this->isSek = false; $this->isSek = false;
$this->passwordResetDate = time(); $this->passwordResetDate = new \DateTime();
$this->products = new \Doctrine\Common\Collections\ArrayCollection(); $this->products = new \Doctrine\Common\Collections\ArrayCollection();
$this->roles = new \Doctrine\Common\Collections\ArrayCollection(); $this->roles = new \Doctrine\Common\Collections\ArrayCollection();
} }
@ -635,7 +635,7 @@ class Contact implements UserInterface, PasswordAuthenticatedUserInterface, \Ser
/** /**
* @var string * @var string
*/ */
#[ORM\Column(name: 'passwordresetdate', type: 'string', length: 255, nullable: true)] #[ORM\Column(name: 'passwordresetdate', type: 'datetime', nullable: true)]
private $passwordResetDate; private $passwordResetDate;
/** /**

View File

@ -1,51 +1,34 @@
<?php <?php
/**
* PrintshopCreator Suite
*
* PHP Version 5.3
*
* @author Thomas Peterson <info@thomas-peterson.de>
* @copyright 2012-2013 PrintshopCreator GmbH
* @license Private
* @link http://www.printshopcreator.de
*/
namespace PSC\Shop\EntityBundle\Repository; namespace PSC\Shop\EntityBundle\Repository;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\EntityRepository; use Doctrine\ORM\EntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use PSC\Shop\EntityBundle\Entity\Account;
use PSC\Shop\EntityBundle\Entity\Shop; use PSC\Shop\EntityBundle\Entity\Shop;
/** class AccountRepository extends ServiceEntityRepository
* AccountRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*
* @package PSC\Shop\Entity
* @subpackage Repositorys
*/
class AccountRepository extends EntityRepository
{ {
/** public function __construct(ManagerRegistry $registry)
* Gibt einen Account per titel zurück
*
* @param string $title
*
* @return Account
*/
public function getAccountByTitle($title)
{ {
return $this->findOneBy(array('title' => $title, 'locked' => 0)); parent::__construct($registry, Account::class);
}
public function getAccountByTitle($title): Account|null
{
return $this->findOneBy(['title' => $title, 'locked' => 0]);
} }
public function getAccountsByShop(Shop $shop) public function getAccountsByShop(Shop $shop)
{ {
$query = $this->getEntityManager() $query = $this->getEntityManager()->createQuery('
->createQuery('
SELECT s FROM PSCEntityBundle:ShopAccount s SELECT s FROM PSCEntityBundle:ShopAccount s
JOIN s.account a JOIN s.account a
WHERE s.shop = :shop_id')->setParameter('shop_id', $shop->getId()); WHERE s.shop = :shop_id')->setParameter(
'shop_id',
$shop->getId(),
);
try { try {
return $query->getResult(); return $query->getResult();
} catch (\Doctrine\ORM\NoResultException $e) { } catch (\Doctrine\ORM\NoResultException $e) {

View File

@ -72,7 +72,7 @@
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
<div class="row"> <div class="row">
<div class="col-md-12">{% if selectedFolder %}<h3>{{ selectedFolder.title }} <small>{{ selectedFolder.id }}</small></h3>{% endif %}</div> <div class="col-md-12">{% if selectedFolder %}<h5>Ordner: {{ selectedFolder.title }} <small>Id: {{ selectedFolder.id }}</small></h5>{% endif %}</div>
</div> </div>
<br/> <br/>
<div class="row"> <div class="row">

View File

@ -31,27 +31,37 @@ use Twig\Environment;
class Form extends AbstractController class Form extends AbstractController
{ {
public function __construct(private EntityManagerInterface $entityManager, private DocumentManager $documentManager, private SerializerInterface $serializer, private Contact $contactTransformer) public function __construct(
{ private EntityManagerInterface $entityManager,
} private DocumentManager $documentManager,
private SerializerInterface $serializer,
private Contact $contactTransformer,
) {}
#[Route(path: '/form/{uuid}/{contactUuid}', methods: ['PUT'])] #[Route(path: '/form/{uuid}/{contactUuid}', methods: ['PUT'])]
#[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')] #[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')]
#[Tag('Plugin/Custom/PSC/CollectLayouter')] #[Tag('Plugin/Custom/PSC/CollectLayouter')]
#[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))] #[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))]
#[Response(response: 200, description: 'return customerForm', ref: new Items(ref: new Model(type: Element::class)))] #[Response(response: 200, description: 'return customerForm', ref: new Items(ref: new Model(type: Element::class)))]
public function generateForm(Input $input, string $uuid, string $contactUuid = ""): JsonResponse public function generateForm(Input $input, string $uuid, string $contactUuid = ''): JsonResponse
{ {
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager
->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)
->findOneBy(['uid' => $product->getUID()]);
/** @var Setting $settings */ /** @var Setting $settings */
$settings = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json'); $settings = $this->serializer->deserialize(
$productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}',
Setting::class,
'json',
);
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
$layouterSettings = []; $layouterSettings = [];
if ($contactUuid != "") { if ($contactUuid != '') {
$contactEntity = $this->entityManager->getRepository(\PSC\Shop\EntityBundle\Entity\Contact::class)->findOneBy(['uuid' => $contactUuid]); $contactEntity = $this->entityManager
->getRepository(\PSC\Shop\EntityBundle\Entity\Contact::class)
->findOneBy(['uuid' => $contactUuid]);
$this->contactTransformer->fromDb($contact, $contactEntity); $this->contactTransformer->fromDb($contact, $contactEntity);
$layouterSettings = $contact->getLayouterData()->getSettingForLayouter('collectlayouter'); $layouterSettings = $contact->getLayouterData()->getSettingForLayouter('collectlayouter');
} elseif ($this->getUser()) { } elseif ($this->getUser()) {
@ -62,11 +72,13 @@ class Form extends AbstractController
$temp = []; $temp = [];
foreach ($settings->getCustomerForm() as $setting) { foreach ($settings->getCustomerForm() as $setting) {
if ($setting->getBinding()) { if ($setting->getBinding()) {
$value = match($setting->getBinding()) { $value = match ($setting->getBinding()) {
ElementBinding::none => $setting->getDefaultForType(), ElementBinding::none => $setting->getDefaultForType(),
ElementBinding::UsernameLogin => array_merge([$contact->getEmail()], explode('@', $contact->getEmail())), ElementBinding::UsernameLogin => array_merge(
[$contact->getEmail()],
explode('@', $contact->getEmail()),
),
ElementBinding::UserCountry => $contact->getCountryCode(), ElementBinding::UserCountry => $contact->getCountryCode(),
ElementBinding::Company => $contact->getLayouterData()->getCompany(), ElementBinding::Company => $contact->getLayouterData()->getCompany(),
ElementBinding::Company2 => $contact->getLayouterData()->getCompany2(), ElementBinding::Company2 => $contact->getLayouterData()->getCompany2(),
@ -75,11 +87,32 @@ class Form extends AbstractController
ElementBinding::Title => $contact->getLayouterData()->getTitle(), ElementBinding::Title => $contact->getLayouterData()->getTitle(),
ElementBinding::Position => $contact->getLayouterData()->getPosition(), ElementBinding::Position => $contact->getLayouterData()->getPosition(),
ElementBinding::Function => $contact->getLayouterData()->getFunction(), ElementBinding::Function => $contact->getLayouterData()->getFunction(),
ElementBinding::StreetHouseNumber => [$contact->getLayouterData()->getStreet(), $contact->getLayouterData()->getHouseNumber()], ElementBinding::StreetHouseNumber => [
ElementBinding::ZipCity => [$contact->getLayouterData()->getZip(), $contact->getLayouterData()->getCity()], $contact->getLayouterData()->getStreet(),
ElementBinding::Fon => [$contact->getLayouterData()->getPhoneAreaCode(), $contact->getLayouterData()->getPhonePrefix(), $contact->getLayouterData()->getPhone(), $contact->getLayouterData()->getPhoneAppendix()], $contact->getLayouterData()->getHouseNumber(),
ElementBinding::Mobile => [$contact->getLayouterData()->getMobileAreaCode(), $contact->getLayouterData()->getMobilePrefix(), $contact->getLayouterData()->getMobile(), $contact->getLayouterData()->getMobileAppendix()], ],
ElementBinding::Fax => [$contact->getLayouterData()->getFaxAreaCode(), $contact->getLayouterData()->getFaxPrefix(), $contact->getLayouterData()->getFax(), $contact->getLayouterData()->getFaxAppendix()], ElementBinding::ZipCity => [
$contact->getLayouterData()->getZip(),
$contact->getLayouterData()->getCity(),
],
ElementBinding::Fon => [
$contact->getLayouterData()->getPhoneAreaCode(),
$contact->getLayouterData()->getPhonePrefix(),
$contact->getLayouterData()->getPhone(),
$contact->getLayouterData()->getPhoneAppendix(),
],
ElementBinding::Mobile => [
$contact->getLayouterData()->getMobileAreaCode(),
$contact->getLayouterData()->getMobilePrefix(),
$contact->getLayouterData()->getMobile(),
$contact->getLayouterData()->getMobileAppendix(),
],
ElementBinding::Fax => [
$contact->getLayouterData()->getFaxAreaCode(),
$contact->getLayouterData()->getFaxPrefix(),
$contact->getLayouterData()->getFax(),
$contact->getLayouterData()->getFaxAppendix(),
],
ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung(), ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung(),
ElementBinding::Custom1 => $contact->getCustom1(), ElementBinding::Custom1 => $contact->getCustom1(),
ElementBinding::Custom2 => $contact->getCustom2(), ElementBinding::Custom2 => $contact->getCustom2(),
@ -105,7 +138,10 @@ class Form extends AbstractController
ElementBinding::Custom22 => $contact->getCustom22(), ElementBinding::Custom22 => $contact->getCustom22(),
ElementBinding::Custom23 => $contact->getCustom23(), ElementBinding::Custom23 => $contact->getCustom23(),
ElementBinding::Custom24 => $contact->getCustom24(), ElementBinding::Custom24 => $contact->getCustom24(),
ElementBinding::LayouterMail => array_merge([$contact->getLayouterData()->getEmail()], explode('@', $contact->getLayouterData()->getEmail())), ElementBinding::LayouterMail => array_merge(
[$contact->getLayouterData()->getEmail()],
explode('@', $contact->getLayouterData()->getEmail()),
),
ElementBinding::LayouterCountryName => $contact->getLayouterData()->getCountryName(), ElementBinding::LayouterCountryName => $contact->getLayouterData()->getCountryName(),
ElementBinding::LayouterCountryCode => $contact->getLayouterData()->getCountryCode(), ElementBinding::LayouterCountryCode => $contact->getLayouterData()->getCountryCode(),
ElementBinding::Birthday => $contact->getLayouterData()->getBirthday(), ElementBinding::Birthday => $contact->getLayouterData()->getBirthday(),
@ -117,26 +153,27 @@ class Form extends AbstractController
ElementBinding::District => $contact->getLayouterData()->getDistrict(), ElementBinding::District => $contact->getLayouterData()->getDistrict(),
ElementBinding::Image1 => $contact->getLayouterData()->getImage1(), ElementBinding::Image1 => $contact->getLayouterData()->getImage1(),
ElementBinding::Image2 => $contact->getLayouterData()->getImage2(), ElementBinding::Image2 => $contact->getLayouterData()->getImage2(),
ElementBinding::Account => $contact->getAccount()->getUuid(),
}; };
$elmEnable = array_values(array_filter($layouterSettings, function ($el) use ($setting) { $elmEnable = array_values(array_filter($layouterSettings, function ($el) use ($setting) {
if ($el['name'] == 'data[' . $setting->getId() . '][enable]') { if ($el['name'] == ('data[' . $setting->getId() . '][enable]')) {
return $el; return $el;
} }
})); }));
$elmValue = array_values(array_filter($layouterSettings, function ($el) use ($setting) { $elmValue = array_values(array_filter($layouterSettings, function ($el) use ($setting) {
if ($el['name'] == 'data[' . $setting->getId() . '][value]') { if ($el['name'] == ('data[' . $setting->getId() . '][value]')) {
return $el; return $el;
} }
})); }));
if (count($elmEnable) === 2 && $elmEnable[0]['value'] === "1" && $elmEnable[1]['value'] === "1") { if (count($elmEnable) === 2 && $elmEnable[0]['value'] === '1' && $elmEnable[1]['value'] === '1') {
$setting->setOptionalDefault(true); $setting->setOptionalDefault(true);
} }
if (count($elmEnable) === 1 && $elmEnable[0]['value'] === "1") { if (count($elmEnable) === 1 && $elmEnable[0]['value'] === '1') {
$setting->setOptionalDefault(true); $setting->setOptionalDefault(true);
} }
if (count($elmEnable) === 1 && $elmEnable[0]['value'] === "0") { if (count($elmEnable) === 1 && $elmEnable[0]['value'] === '0') {
$setting->setOptionalDefault(false); $setting->setOptionalDefault(false);
} }
if (count($elmEnable) === 0 && count($elmValue) === 1 && $setting->getOptional()) { if (count($elmEnable) === 0 && count($elmValue) === 1 && $setting->getOptional()) {
@ -144,7 +181,6 @@ class Form extends AbstractController
} }
$setting->setValue($value); $setting->setValue($value);
} }
$temp[] = $setting; $temp[] = $setting;
} }
@ -161,14 +197,19 @@ class Form extends AbstractController
#[Tag('Plugin/Custom/PSC/CollectLayouter')] #[Tag('Plugin/Custom/PSC/CollectLayouter')]
#[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))] #[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))]
#[Response(response: 200, description: 'return customerForm', ref: new Items(ref: new Model(type: Element::class)))] #[Response(response: 200, description: 'return customerForm', ref: new Items(ref: new Model(type: Element::class)))]
public function generateNewForm(Input $input, string $uuid, string $contactUuid = ""): JsonResponse public function generateNewForm(Input $input, string $uuid, string $contactUuid = ''): JsonResponse
{ {
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager
->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)
->findOneBy(['uid' => $product->getUID()]);
/** @var Setting $settings */ /** @var Setting $settings */
$settings = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json'); $settings = $this->serializer->deserialize(
$productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}',
Setting::class,
'json',
);
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
$temp = []; $temp = [];
@ -183,5 +224,4 @@ class Form extends AbstractController
return $this->json($temp); return $this->json($temp);
} }
} }

View File

@ -9,8 +9,6 @@ use OpenApi\Attributes\JsonContent;
use OpenApi\Attributes\RequestBody; use OpenApi\Attributes\RequestBody;
use OpenApi\Attributes\Response; use OpenApi\Attributes\Response;
use OpenApi\Attributes\Tag; use OpenApi\Attributes\Tag;
use PSC\Shop\MediaBundle\Model\Media;
use PSC\Shop\MediaBundle\Service\MediaManager;
use Plugin\Custom\PSC\CollectLayouter\Dto\Preview\Input; use Plugin\Custom\PSC\CollectLayouter\Dto\Preview\Input;
use Plugin\Custom\PSC\CollectLayouter\Helper\MPDF; use Plugin\Custom\PSC\CollectLayouter\Helper\MPDF;
use Plugin\Custom\PSC\CollectLayouter\Model\Element; use Plugin\Custom\PSC\CollectLayouter\Model\Element;
@ -19,6 +17,8 @@ use Plugin\Custom\PSC\CollectLayouter\Model\ElementType;
use Plugin\Custom\PSC\CollectLayouter\Model\Setting; use Plugin\Custom\PSC\CollectLayouter\Model\Setting;
use PSC\Shop\ContactBundle\Transformer\Model\Contact; use PSC\Shop\ContactBundle\Transformer\Model\Contact;
use PSC\Shop\EntityBundle\Entity\Product; use PSC\Shop\EntityBundle\Entity\Product;
use PSC\Shop\MediaBundle\Model\Media;
use PSC\Shop\MediaBundle\Service\MediaManager;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
@ -34,36 +34,45 @@ use Twig\Environment;
class Preview extends AbstractController class Preview extends AbstractController
{ {
public function __construct( public function __construct(
readonly private MPDF $mpdf, private readonly MPDF $mpdf,
readonly private EntityManagerInterface $entityManager, private readonly EntityManagerInterface $entityManager,
readonly private DocumentManager $documentManager, private readonly DocumentManager $documentManager,
readonly private SerializerInterface $serializer, private readonly SerializerInterface $serializer,
readonly private Contact $contactTransformer, private readonly Contact $contactTransformer,
readonly private RequestStack $requestStack, private readonly RequestStack $requestStack,
readonly private MediaManager $mediaManager private readonly MediaManager $mediaManager,
) { ) {}
}
#[Route(path: '/preview/{uuid}/{type}/{contactUuid}', methods: ['PUT'], defaults: ['contactUuid' => ''])] #[Route(path: '/preview/{uuid}/{type}/{contactUuid}', methods: ['PUT'], defaults: ['contactUuid' => ''])]
#[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')] #[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')]
#[Tag('Plugin/Custom/PSC/CollectLayouter')] #[Tag('Plugin/Custom/PSC/CollectLayouter')]
#[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))] #[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))]
#[Response(response: 200, description: 'return previews', content: new JsonContent(type: 'bool'))] #[Response(response: 200, description: 'return previews', content: new JsonContent(type: 'bool'))]
public function generatePreview(Input $data, string $uuid, string $contactUuid = "", int $type = 1): JsonResponse public function generatePreview(Input $data, string $uuid, string $contactUuid = '', int $type = 1): JsonResponse
{ {
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager
$setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json'); ->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)
->findOneBy(['uid' => $product->getUID()]);
$setting = $this->serializer->deserialize(
$productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}',
Setting::class,
'json',
);
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
if ($contactUuid != "") { if ($contactUuid != '') {
$contactEntity = $this->entityManager->getRepository(\PSC\Shop\EntityBundle\Entity\Contact::class)->findOneBy(['uuid' => $contactUuid]); $contactEntity = $this->entityManager
->getRepository(\PSC\Shop\EntityBundle\Entity\Contact::class)
->findOneBy(['uuid' => $contactUuid]);
$this->contactTransformer->fromDb($contact, $contactEntity, new \PSC\Shop\EntityBundle\Document\Contact()); $this->contactTransformer->fromDb($contact, $contactEntity, new \PSC\Shop\EntityBundle\Document\Contact());
} elseif ($this->getUser()) { } elseif ($this->getUser()) {
$this->contactTransformer->fromDb($contact, $this->getUser(), new \PSC\Shop\EntityBundle\Document\Contact()); $this->contactTransformer->fromDb(
$contact,
$this->getUser(),
new \PSC\Shop\EntityBundle\Document\Contact(),
);
} }
$this->mpdf->setSetting($setting); $this->mpdf->setSetting($setting);
$this->requestStack->getSession()->set('collectLayouterData', $this->serializer->serialize($data, 'json')); $this->requestStack->getSession()->set('collectLayouterData', $this->serializer->serialize($data, 'json'));
@ -71,24 +80,32 @@ class Preview extends AbstractController
/** /**
* @var Element $element * @var Element $element
*/ */
foreach ($setting->getCustomerForm() as $element) { foreach ($setting->getCustomerForm() as $element) {
$value = match($element->getBinding()) { $value = match ($element->getBinding()) {
ElementBinding::none => $element->getDefaultForTypePreview(), ElementBinding::none => $element->getDefaultForTypePreview(),
ElementBinding::StreetHouseNumber => ['street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(), 'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2()], ElementBinding::StreetHouseNumber => [
ElementBinding::ZipCity => ['zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(), 'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2()], 'street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(),
'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2(),
],
ElementBinding::ZipCity => [
'zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(),
'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2(),
],
ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(), ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(),
ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(), ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(),
ElementBinding::Mobile => [ ElementBinding::Mobile => [
'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4(),
],
ElementBinding::Fax => [ ElementBinding::Fax => [
'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4(),
],
ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(), ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(),
ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(), ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(),
ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(), ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(),
@ -100,7 +117,8 @@ class Preview extends AbstractController
'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4(),
],
ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(), ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(),
ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(), ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(),
ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(), ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(),
@ -127,8 +145,12 @@ class Preview extends AbstractController
ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(), ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(),
ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(), ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(),
ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(), ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(),
ElementBinding::LayouterCountryName => $contact->getLayouterData()->getCountryName() ?? $element->getDefault1(), ElementBinding::LayouterCountryName => $contact
ElementBinding::LayouterCountryCode => $contact->getLayouterData()->getCountryCode() ?? $element->getDefault1(), ->getLayouterData()
->getCountryName() ?? $element->getDefault1(),
ElementBinding::LayouterCountryCode => $contact
->getLayouterData()
->getCountryCode() ?? $element->getDefault1(),
ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(), ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(),
ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(), ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(),
ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(), ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(),
@ -138,24 +160,26 @@ class Preview extends AbstractController
ElementBinding::District => $contact->getLayouterData()->getDistrict() ?? $element->getDefault1(), ElementBinding::District => $contact->getLayouterData()->getDistrict() ?? $element->getDefault1(),
ElementBinding::Image1 => $contact->getLayouterData()->getImage1() ?? $element->getDefault1(), ElementBinding::Image1 => $contact->getLayouterData()->getImage1() ?? $element->getDefault1(),
ElementBinding::Image2 => $contact->getLayouterData()->getImage2() ?? $element->getDefault1(), ElementBinding::Image2 => $contact->getLayouterData()->getImage2() ?? $element->getDefault1(),
ElementBinding::Account => $contact->getAccount()->getUuid() ?? $element->getDefault1(),
}; };
if ($elm = $data->getElement($element, $contact)) { if ($elm = $data->getElement($element, $contact)) {
if ($element->getType() == ElementType::Image && $elm['value'] != "") { if ($element->getType() == ElementType::Image && $elm['value'] != '') {
$media = $this->mediaManager->getModelByUuid($elm['value']); $media = $this->mediaManager->getModelByUuid($elm['value']);
$formData[$element->getId()] = ['value' => $media, 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $media, 'enable' => (bool) $elm['enable']];
} else { } else {
$formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool) $elm['enable']];
} }
} else { } else {
$formData[$element->getId()] = ['value' => $value, 'enable' => $element->getOptional() ? $element->getOptionalDefault() : true]; $formData[$element->getId()] = [
'value' => $value,
'enable' => $element->getOptional() ? $element->getOptionalDefault() : true,
];
} }
if ($element->getType() == ElementType::Image && $formData[$element->getId()]['value'] instanceof Media) { if ($element->getType() == ElementType::Image && $formData[$element->getId()]['value'] instanceof Media) {
$formData[$element->getId()]['value'] = $formData[$element->getId()]['value']->getVariant($element->getImage()->aspectRatio); $formData[$element->getId()]['value'] = $formData[$element->getId()]['value']->getVariant($element->getImage()->aspectRatio);
} }
} }
$this->mpdf->setData($formData); $this->mpdf->setData($formData);
@ -169,5 +193,4 @@ class Preview extends AbstractController
return $this->json($tmp); return $this->json($tmp);
} }
} }

View File

@ -8,16 +8,16 @@ use OpenApi\Attributes\JsonContent;
use OpenApi\Attributes\RequestBody; use OpenApi\Attributes\RequestBody;
use OpenApi\Attributes\Response; use OpenApi\Attributes\Response;
use OpenApi\Attributes\Tag; use OpenApi\Attributes\Tag;
use PSC\Shop\EntityBundle\Entity\Contact as PSCContact;
use PSC\Shop\MediaBundle\Service\MediaManager;
use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input; use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input;
use Plugin\Custom\PSC\CollectLayouter\Model\ElementBinding; use Plugin\Custom\PSC\CollectLayouter\Model\ElementBinding;
use Plugin\Custom\PSC\CollectLayouter\Model\ElementType; use Plugin\Custom\PSC\CollectLayouter\Model\ElementType;
use Plugin\Custom\PSC\CollectLayouter\Model\Setting; use Plugin\Custom\PSC\CollectLayouter\Model\Setting;
use PSC\Shop\ContactBundle\Transformer\Model\Contact; use PSC\Shop\ContactBundle\Transformer\Model\Contact;
use PSC\Shop\EntityBundle\Entity\Contact as PSCContact;
use PSC\Shop\EntityBundle\Entity\Layoutdesigndata; use PSC\Shop\EntityBundle\Entity\Layoutdesigndata;
use PSC\Shop\EntityBundle\Entity\LayouterSession; use PSC\Shop\EntityBundle\Entity\LayouterSession;
use PSC\Shop\EntityBundle\Entity\Product; use PSC\Shop\EntityBundle\Entity\Product;
use PSC\Shop\MediaBundle\Service\MediaManager;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
@ -29,17 +29,16 @@ use Twig\Environment;
class Save extends AbstractController class Save extends AbstractController
{ {
public function __construct( public function __construct(
readonly private \Plugin\Custom\PSC\CollectLayouter\Helper\SaveFiles $saveFilesHelper, private readonly \Plugin\Custom\PSC\CollectLayouter\Helper\SaveFiles $saveFilesHelper,
readonly private \Plugin\Custom\PSC\CollectLayouter\Helper\SaveContact $saveContactHelper, private readonly \Plugin\Custom\PSC\CollectLayouter\Helper\SaveContact $saveContactHelper,
private EntityManagerInterface $entityManager, private EntityManagerInterface $entityManager,
private DocumentManager $documentManager, private DocumentManager $documentManager,
private SerializerInterface $serializer, private SerializerInterface $serializer,
private Contact $contactTransformer, private Contact $contactTransformer,
private RequestStack $requestStack, private RequestStack $requestStack,
private Environment $twig, private Environment $twig,
private MediaManager $mediaManager private MediaManager $mediaManager,
) { ) {}
}
#[Route(path: '/savecollect/{uuid}/{contactuuid}', methods: ['PUT'])] #[Route(path: '/savecollect/{uuid}/{contactuuid}', methods: ['PUT'])]
#[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')] #[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')]
@ -48,13 +47,18 @@ class Save extends AbstractController
#[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))] #[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))]
public function saveCollect(Input $data, string $uuid, string $contactuuid): JsonResponse public function saveCollect(Input $data, string $uuid, string $contactuuid): JsonResponse
{ {
$basketField1 = '';
$basketField1 = ""; $basketField2 = '';
$basketField2 = "";
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager
$setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json'); ->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)
->findOneBy(['uid' => $product->getUID()]);
$setting = $this->serializer->deserialize(
$productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}',
Setting::class,
'json',
);
$contactEntity = $this->entityManager->getRepository(PSCContact::class)->findOneBy(['uuid' => $contactuuid]); $contactEntity = $this->entityManager->getRepository(PSCContact::class)->findOneBy(['uuid' => $contactuuid]);
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
$this->contactTransformer->fromDb($contact, $contactEntity); $this->contactTransformer->fromDb($contact, $contactEntity);
@ -64,7 +68,7 @@ class Save extends AbstractController
$this->saveFilesHelper->storeFiles(); $this->saveFilesHelper->storeFiles();
if ($contact->getUuid() != "") { if ($contact->getUuid() != '') {
$this->saveContactHelper->setSetting($setting); $this->saveContactHelper->setSetting($setting);
$this->saveContactHelper->setContact($contact); $this->saveContactHelper->setContact($contact);
$this->saveContactHelper->setData($data); $this->saveContactHelper->setData($data);
@ -75,24 +79,32 @@ class Save extends AbstractController
/** /**
* @var Element $element * @var Element $element
*/ */
foreach ($setting->getCustomerForm() as $element) { foreach ($setting->getCustomerForm() as $element) {
$value = match($element->getBinding()) { $value = match ($element->getBinding()) {
ElementBinding::none => $element->getDefaultForTypePreview(), ElementBinding::none => $element->getDefaultForTypePreview(),
ElementBinding::StreetHouseNumber => ['street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(), 'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2()], ElementBinding::StreetHouseNumber => [
ElementBinding::ZipCity => ['zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(), 'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2()], 'street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(),
'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2(),
],
ElementBinding::ZipCity => [
'zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(),
'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2(),
],
ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(), ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(),
ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(), ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(),
ElementBinding::Mobile => [ ElementBinding::Mobile => [
'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4(),
],
ElementBinding::Fax => [ ElementBinding::Fax => [
'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4(),
],
ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(), ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(),
ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(), ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(),
ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(), ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(),
@ -104,7 +116,8 @@ class Save extends AbstractController
'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4(),
],
ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(), ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(),
ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(), ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(),
ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(), ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(),
@ -131,8 +144,12 @@ class Save extends AbstractController
ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(), ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(),
ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(), ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(),
ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(), ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(),
ElementBinding::LayouterCountryName => $contact->getLayouterData()->getCountryName() ?? $element->getDefault1(), ElementBinding::LayouterCountryName => $contact
ElementBinding::LayouterCountryCode => $contact->getLayouterData()->getCountryCode() ?? $element->getDefault1(), ->getLayouterData()
->getCountryName() ?? $element->getDefault1(),
ElementBinding::LayouterCountryCode => $contact
->getLayouterData()
->getCountryCode() ?? $element->getDefault1(),
ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(), ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(),
ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(), ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(),
ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(), ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(),
@ -142,44 +159,53 @@ class Save extends AbstractController
ElementBinding::District => $contact->getLayouterData()->getDistrict() ?? $element->getDefault1(), ElementBinding::District => $contact->getLayouterData()->getDistrict() ?? $element->getDefault1(),
ElementBinding::Image1 => $contact->getLayouterData()->getImage1() ?? $element->getDefault1(), ElementBinding::Image1 => $contact->getLayouterData()->getImage1() ?? $element->getDefault1(),
ElementBinding::Image2 => $contact->getLayouterData()->getImage2() ?? $element->getDefault1(), ElementBinding::Image2 => $contact->getLayouterData()->getImage2() ?? $element->getDefault1(),
ElementBinding::Account => $contact->getAccount()->getUuid() ?? $element->getDefault1(),
}; };
if ($elm = $data->getElement($element, $contact)) { if ($elm = $data->getElement($element, $contact)) {
if ($element->getType() == ElementType::Image && $elm['value'] != "") { if ($element->getType() == ElementType::Image && $elm['value'] != '') {
$media = $this->mediaManager->getModelByUuid($elm['value']); $media = $this->mediaManager->getModelByUuid($elm['value']);
$elmMedia = $media->getVariant($element->getImage()->aspectRatio); $elmMedia = $media->getVariant($element->getImage()->aspectRatio);
$formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool) $elm['enable']];
} else { } else {
$formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool) $elm['enable']];
} }
} else { } else {
$formData[$element->getId()] = ['value' => $value, 'enable' => $element->getOptional() ? $element->getOptionalDefault() : true]; $formData[$element->getId()] = [
'value' => $value,
'enable' => $element->getOptional() ? $element->getOptionalDefault() : true,
];
}
} }
} if ($setting->getBasketField1Format() != '') {
if ($setting->getBasketField1Format() != "") {
$twigBF1 = $this->twig->createTemplate($setting->getBasketField1Format()); $twigBF1 = $this->twig->createTemplate($setting->getBasketField1Format());
$basketField1 = $twigBF1->render(['form' => $formData]); $basketField1 = $twigBF1->render(['form' => $formData]);
} }
if ($setting->getBasketField2Format() != "") { if ($setting->getBasketField2Format() != '') {
$twigBF2 = $this->twig->createTemplate($setting->getBasketField2Format()); $twigBF2 = $this->twig->createTemplate($setting->getBasketField2Format());
$basketField2 = $twigBF2->render(['form' => $formData]); $basketField2 = $twigBF2->render(['form' => $formData]);
} }
$layoutDesignData = new Layoutdesigndata(); $layoutDesignData = new Layoutdesigndata();
$layoutDesignData->setUuid($data->getLayouterUuid()); $layoutDesignData->setUuid($data->getLayouterUuid());
$layoutDesignData->setArticleUuid($data->getProductUuid()); $layoutDesignData->setArticleUuid($data->getProductUuid());
$layoutDesignData->setDesign(['data' => $data->getData(), 'contactUuid' => $data->getContactUuid(), 'pdf' => $this->saveFilesHelper->getPdfFile(), 'previews' => $this->saveFilesHelper->getImages()]); $layoutDesignData->setDesign([
'data' => $data->getData(),
'contactUuid' => $data->getContactUuid(),
'pdf' => $this->saveFilesHelper->getPdfFile(),
'previews' => $this->saveFilesHelper->getImages(),
]);
$this->entityManager->persist($layoutDesignData); $this->entityManager->persist($layoutDesignData);
$this->entityManager->flush(); $this->entityManager->flush();
$layouterSession = $this->entityManager->getRepository(LayouterSession::class)->findOneBy(['uuid' => $data->getLayouterUuid()]); $layouterSession = $this->entityManager
->getRepository(LayouterSession::class)
->findOneBy(['uuid' => $data->getLayouterUuid()]);
$layouterDesignDataDoc = new \PSC\Shop\EntityBundle\Document\LayouterSession(); $layouterDesignDataDoc = new \PSC\Shop\EntityBundle\Document\LayouterSession();
$layouterDesignDataDoc->setUid((string)$layouterSession->getUID()); $layouterDesignDataDoc->setUid((string) $layouterSession->getUID());
$layouterDesignDataDoc->setKst($basketField2); $layouterDesignDataDoc->setKst($basketField2);
$layouterDesignDataDoc->setRef($basketField1); $layouterDesignDataDoc->setRef($basketField1);
@ -200,13 +226,18 @@ class Save extends AbstractController
#[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))] #[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))]
public function save(Input $data, string $uuid): JsonResponse public function save(Input $data, string $uuid): JsonResponse
{ {
$basketField1 = '';
$basketField1 = ""; $basketField2 = '';
$basketField2 = "";
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager
$setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json'); ->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)
->findOneBy(['uid' => $product->getUID()]);
$setting = $this->serializer->deserialize(
$productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}',
Setting::class,
'json',
);
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
if ($this->getUser()) { if ($this->getUser()) {
@ -218,7 +249,7 @@ class Save extends AbstractController
$this->saveFilesHelper->storeFiles(); $this->saveFilesHelper->storeFiles();
if ($contact->getUuid() != "") { if ($contact->getUuid() != '') {
$this->saveContactHelper->setSetting($setting); $this->saveContactHelper->setSetting($setting);
$this->saveContactHelper->setContact($contact); $this->saveContactHelper->setContact($contact);
$this->saveContactHelper->setData($data); $this->saveContactHelper->setData($data);
@ -229,24 +260,32 @@ class Save extends AbstractController
/** /**
* @var Element $element * @var Element $element
*/ */
foreach ($setting->getCustomerForm() as $element) { foreach ($setting->getCustomerForm() as $element) {
$value = match($element->getBinding()) { $value = match ($element->getBinding()) {
ElementBinding::none => $element->getDefaultForTypePreview(), ElementBinding::none => $element->getDefaultForTypePreview(),
ElementBinding::StreetHouseNumber => ['street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(), 'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2()], ElementBinding::StreetHouseNumber => [
ElementBinding::ZipCity => ['zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(), 'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2()], 'street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(),
'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2(),
],
ElementBinding::ZipCity => [
'zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(),
'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2(),
],
ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(), ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(),
ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(), ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(),
ElementBinding::Mobile => [ ElementBinding::Mobile => [
'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4(),
],
ElementBinding::Fax => [ ElementBinding::Fax => [
'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4(),
],
ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(), ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(),
ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(), ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(),
ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(), ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(),
@ -258,7 +297,8 @@ class Save extends AbstractController
'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(), 'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(),
'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(), 'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(),
'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(), 'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(),
'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4()], 'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4(),
],
ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(), ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(),
ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(), ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(),
ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(), ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(),
@ -285,8 +325,12 @@ class Save extends AbstractController
ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(), ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(),
ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(), ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(),
ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(), ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(),
ElementBinding::LayouterCountryName => $contact->getLayouterData()->getCountryName() ?? $element->getDefault1(), ElementBinding::LayouterCountryName => $contact
ElementBinding::LayouterCountryCode => $contact->getLayouterData()->getCountryCode() ?? $element->getDefault1(), ->getLayouterData()
->getCountryName() ?? $element->getDefault1(),
ElementBinding::LayouterCountryCode => $contact
->getLayouterData()
->getCountryCode() ?? $element->getDefault1(),
ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(), ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(),
ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(), ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(),
ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(), ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(),
@ -299,41 +343,48 @@ class Save extends AbstractController
}; };
if ($elm = $data->getElement($element, $contact)) { if ($elm = $data->getElement($element, $contact)) {
if ($element->getType() == ElementType::Image && $elm['value'] != "") { if ($element->getType() == ElementType::Image && $elm['value'] != '') {
$media = $this->mediaManager->getModelByUuid($elm['value']); $media = $this->mediaManager->getModelByUuid($elm['value']);
$elmMedia = $media->getVariant($element->getImage()->aspectRatio); $elmMedia = $media->getVariant($element->getImage()->aspectRatio);
$formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool) $elm['enable']];
} else { } else {
$formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool) $elm['enable']];
} }
} else { } else {
$formData[$element->getId()] = ['value' => $value, 'enable' => $element->getOptional() ? $element->getOptionalDefault() : true]; $formData[$element->getId()] = [
'value' => $value,
'enable' => $element->getOptional() ? $element->getOptionalDefault() : true,
];
}
} }
} if ($setting->getBasketField1Format() != '') {
if ($setting->getBasketField1Format() != "") {
$twigBF1 = $this->twig->createTemplate($setting->getBasketField1Format()); $twigBF1 = $this->twig->createTemplate($setting->getBasketField1Format());
$basketField1 = $twigBF1->render(['form' => $formData]); $basketField1 = $twigBF1->render(['form' => $formData]);
} }
if ($setting->getBasketField2Format() != "") { if ($setting->getBasketField2Format() != '') {
$twigBF2 = $this->twig->createTemplate($setting->getBasketField2Format()); $twigBF2 = $this->twig->createTemplate($setting->getBasketField2Format());
$basketField2 = $twigBF2->render(['form' => $formData]); $basketField2 = $twigBF2->render(['form' => $formData]);
} }
$layoutDesignData = new Layoutdesigndata(); $layoutDesignData = new Layoutdesigndata();
$layoutDesignData->setUuid($data->getLayouterUuid()); $layoutDesignData->setUuid($data->getLayouterUuid());
$layoutDesignData->setArticleUuid($data->getProductUuid()); $layoutDesignData->setArticleUuid($data->getProductUuid());
$layoutDesignData->setDesign(['data' => $data->getData(), 'contactUuid' => $data->getContactUuid(), 'pdf' => $this->saveFilesHelper->getPdfFile(), 'previews' => $this->saveFilesHelper->getImages()]); $layoutDesignData->setDesign([
'data' => $data->getData(),
'contactUuid' => $data->getContactUuid(),
'pdf' => $this->saveFilesHelper->getPdfFile(),
'previews' => $this->saveFilesHelper->getImages(),
]);
$this->entityManager->persist($layoutDesignData); $this->entityManager->persist($layoutDesignData);
$this->entityManager->flush(); $this->entityManager->flush();
$layouterSession = $this->entityManager->getRepository(LayouterSession::class) $layouterSession = $this->entityManager
->getRepository(LayouterSession::class)
->findOneBy(['uuid' => $data->getLayouterUuid()]); ->findOneBy(['uuid' => $data->getLayouterUuid()]);
$layouterDesignDataDoc = new \PSC\Shop\EntityBundle\Document\LayouterSession(); $layouterDesignDataDoc = new \PSC\Shop\EntityBundle\Document\LayouterSession();
$layouterDesignDataDoc->setUid((string)$layouterSession->getUID()); $layouterDesignDataDoc->setUid((string) $layouterSession->getUID());
$layouterDesignDataDoc->setKst($basketField2); $layouterDesignDataDoc->setKst($basketField2);
$layouterDesignDataDoc->setRef($basketField1); $layouterDesignDataDoc->setRef($basketField1);
@ -346,5 +397,4 @@ class Save extends AbstractController
return $this->json(['success' => true, 'basketField1' => $basketField1, 'basketField2' => $basketField2]); return $this->json(['success' => true, 'basketField1' => $basketField1, 'basketField2' => $basketField2]);
} }
} }

View File

@ -22,28 +22,37 @@ class Element extends AbstractType
$builder = new DynamicFormBuilder($builder); $builder = new DynamicFormBuilder($builder);
$builder->add('id', TextType::class, [ $builder->add('id', TextType::class, [
'label' => 'ID']); 'label' => 'ID',
]);
$builder->add('label', TextType::class, [ $builder->add('label', TextType::class, [
'label' => 'Label']); 'label' => 'Label',
]);
$builder->add('pos', NumberType::class, [ $builder->add('pos', NumberType::class, [
'label' => 'Position']); 'label' => 'Position',
]);
$builder->add('list', CheckboxType::class, [ $builder->add('list', CheckboxType::class, [
'label' => 'Liste']); 'label' => 'Liste',
]);
$builder->add('type', EnumType::class, [ $builder->add('type', EnumType::class, [
'label' => 'Typ', 'label' => 'Typ',
'empty_data' => ElementType::Text->value, 'empty_data' => ElementType::Text->value,
'class' => ElementType::class]); 'class' => ElementType::class,
]);
$this->buildBinding($builder); $this->buildBinding($builder);
$builder->add('optional', CheckboxType::class, [ $builder->add('optional', CheckboxType::class, [
'label' => 'Optional']); 'label' => 'Optional',
]);
$builder->add('optionalDefault', CheckboxType::class, [ $builder->add('optionalDefault', CheckboxType::class, [
'label' => 'Optional Default']); 'label' => 'Optional Default',
]);
$builder->add('required', CheckboxType::class, [ $builder->add('required', CheckboxType::class, [
'label' => 'Required']); 'label' => 'Required',
]);
$builder->add('saveBack', CheckboxType::class, [ $builder->add('saveBack', CheckboxType::class, [
'label' => 'save back']); 'label' => 'save back',
]);
$this->buildDefault($builder); $this->buildDefault($builder);
$this->buildPhone($builder); $this->buildPhone($builder);
@ -54,143 +63,148 @@ class Element extends AbstractType
public function buildBinding(FormBuilderInterface $builder): void public function buildBinding(FormBuilderInterface $builder): void
{ {
$builder->addDependent('binding', ['type'], function (DependentField $field, null|ElementType $type) {
$builder->addDependent('binding', ['type'], function (DependentField $field, ?ElementType $type) { if ($type == ElementType::Phone) {
if($type == ElementType::Phone) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypePhone()]); 'choices' => ElementBinding::getForTypePhone(),
]);
} }
if($type == ElementType::Image) { if ($type == ElementType::Image) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypeImage()]); 'choices' => ElementBinding::getForTypeImage(),
]);
} }
if($type == ElementType::Text || $type === null) { if ($type == ElementType::Hidden || $type == ElementType::Text || $type === null) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypeText()]); 'choices' => ElementBinding::getForTypeText(),
]);
} }
if($type == ElementType::ZipCity) { if ($type == ElementType::ZipCity) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypeZipCity()]); 'choices' => ElementBinding::getForTypeZipCity(),
]);
} }
if($type == ElementType::StreetHouseNumber) { if ($type == ElementType::StreetHouseNumber) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypeStreetHouseNumber()]); 'choices' => ElementBinding::getForTypeStreetHouseNumber(),
]);
} }
if($type == ElementType::eMail) { if ($type == ElementType::eMail) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypeeMail()]); 'choices' => ElementBinding::getForTypeeMail(),
]);
} }
if($type == ElementType::eMailSplit) { if ($type == ElementType::eMailSplit) {
$field->add(ChoiceType::class, [ $field->add(ChoiceType::class, [
'label' => 'Binding', 'label' => 'Binding',
'choices' => ElementBinding::getForTypeeMailSplit()]); 'choices' => ElementBinding::getForTypeeMailSplit(),
}
});
}
public function buildPhone(FormBuilderInterface $builder): void
{
$builder->addDependent('phone', ['type'], function (DependentField $field, ?ElementType $type) {
if($type == ElementType::Phone) {
$field->add(PhoneType::class, [
'label' => 'Phone'
]); ]);
} }
}); });
}
public function buildPhone(FormBuilderInterface $builder): void
{
$builder->addDependent('phone', ['type'], function (DependentField $field, null|ElementType $type) {
if ($type == ElementType::Phone) {
$field->add(PhoneType::class, [
'label' => 'Phone',
]);
}
});
} }
public function buildImage(FormBuilderInterface $builder): void public function buildImage(FormBuilderInterface $builder): void
{ {
$builder->addDependent('image', ['type'], function (DependentField $field, null|ElementType $type) {
$builder->addDependent('image', ['type'], function (DependentField $field, ?ElementType $type) { if ($type == ElementType::Image) {
if($type == ElementType::Image) {
$field->add(ImageType::class, [ $field->add(ImageType::class, [
'label' => 'Image' 'label' => 'Image',
]); ]);
} }
}); });
} }
public function buildDefault(FormBuilderInterface $builder): void public function buildDefault(FormBuilderInterface $builder): void
{ {
$builder->addDependent('default1', ['type'], function (DependentField $field, ?ElementType $type) { $builder->addDependent('default1', ['type'], function (DependentField $field, null|ElementType $type) {
if($type == ElementType::Text) { if ($type == ElementType::Text) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => false 'label' => false,
]); ]);
} elseif($type == ElementType::ZipCity) { } elseif ($type == ElementType::ZipCity) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Zip' 'label' => 'Zip',
]); ]);
} elseif($type == ElementType::StreetHouseNumber) { } elseif ($type == ElementType::StreetHouseNumber) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Street' 'label' => 'Street',
]); ]);
} elseif($type == ElementType::Phone) { } elseif ($type == ElementType::Phone) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'AreaCode' 'label' => 'AreaCode',
]); ]);
} elseif($type == ElementType::eMail) { } elseif ($type == ElementType::eMail) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Email' 'label' => 'Email',
]);
} elseif ($type == ElementType::Hidden) {
$field->add(TextType::class, [
'label' => false,
]); ]);
} }
}); });
$builder->addDependent('default2', ['type'], function (DependentField $field, ?ElementType $type) { $builder->addDependent('default2', ['type'], function (DependentField $field, null|ElementType $type) {
if($type == ElementType::ZipCity) { if ($type == ElementType::ZipCity) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'City' 'label' => 'City',
]); ]);
} elseif($type == ElementType::StreetHouseNumber) { } elseif ($type == ElementType::StreetHouseNumber) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'HouseNumber' 'label' => 'HouseNumber',
]); ]);
} elseif($type == ElementType::Phone) { } elseif ($type == ElementType::Phone) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Prefix' 'label' => 'Prefix',
]); ]);
} elseif($type == ElementType::eMailSplit) { } elseif ($type == ElementType::eMailSplit) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Name' 'label' => 'Name',
]); ]);
} }
}); });
$builder->addDependent('default3', ['type'], function (DependentField $field, ?ElementType $type) { $builder->addDependent('default3', ['type'], function (DependentField $field, null|ElementType $type) {
if($type == ElementType::Phone) { if ($type == ElementType::Phone) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Number' 'label' => 'Number',
]); ]);
} elseif($type == ElementType::eMailSplit) { } elseif ($type == ElementType::eMailSplit) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Domain' 'label' => 'Domain',
]); ]);
} }
}); });
$builder->addDependent('default4', ['type'], function (DependentField $field, ?ElementType $type) { $builder->addDependent('default4', ['type'], function (DependentField $field, null|ElementType $type) {
if($type == ElementType::Phone) { if ($type == ElementType::Phone) {
$field->add(TextType::class, [ $field->add(TextType::class, [
'label' => 'Appendix' 'label' => 'Appendix',
]); ]);
} }
}); });
} }
public function configureOptions(OptionsResolver $resolver): void public function configureOptions(OptionsResolver $resolver): void
{ {
$resolver->setDefaults(['data_class' => \Plugin\Custom\PSC\CollectLayouter\Model\Element::class, 'allow_extra_fields' => true]); $resolver->setDefaults([
'data_class' => \Plugin\Custom\PSC\CollectLayouter\Model\Element::class,
'allow_extra_fields' => true,
]);
} }
} }

View File

@ -2,13 +2,13 @@
namespace Plugin\Custom\PSC\CollectLayouter\Helper; namespace Plugin\Custom\PSC\CollectLayouter\Helper;
use PSC\Shop\MediaBundle\Model\Media;
use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input; use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input;
use Plugin\Custom\PSC\CollectLayouter\Model\Element; use Plugin\Custom\PSC\CollectLayouter\Model\Element;
use Plugin\Custom\PSC\CollectLayouter\Model\ElementBinding; use Plugin\Custom\PSC\CollectLayouter\Model\ElementBinding;
use Plugin\Custom\PSC\CollectLayouter\Model\ElementType; use Plugin\Custom\PSC\CollectLayouter\Model\ElementType;
use Plugin\Custom\PSC\CollectLayouter\Model\Setting; use Plugin\Custom\PSC\CollectLayouter\Model\Setting;
use PSC\Shop\ContactBundle\Model\Contact; use PSC\Shop\ContactBundle\Model\Contact;
use PSC\Shop\MediaBundle\Model\Media;
class SaveContact class SaveContact
{ {
@ -16,9 +16,9 @@ class SaveContact
private Contact $contact; private Contact $contact;
private Input|\Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input $data; private Input|\Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input $data;
public function __construct(private \PSC\Shop\ContactBundle\Transformer\Model\Contact $contactTransformer) public function __construct(
{ private \PSC\Shop\ContactBundle\Transformer\Model\Contact $contactTransformer,
} ) {}
public function setData(Input|\Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input $data): void public function setData(Input|\Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input $data): void
{ {
@ -38,13 +38,24 @@ class SaveContact
public function saveData() public function saveData()
{ {
foreach ($this->setting->getCustomerForm() as $element) { foreach ($this->setting->getCustomerForm() as $element) {
if ($element->getBinding() != ElementBinding::none && $element->getSaveBack() && $elm = $this->data->getElement($element, $this->contact)) { if (
$element->getBinding() != ElementBinding::none &&
$element->getSaveBack() &&
($elm = $this->data->getElement($element, $this->contact))
) {
switch ($element->getBinding()) { switch ($element->getBinding()) {
case ElementBinding::none: case ElementBinding::none:
break; break;
case ElementBinding::UsernameLogin: case ElementBinding::UsernameLogin:
$this->contact->setEmail($elm['value']); $this->contact->setEmail($elm['value']);
break; break;
case ElementBinding::Account:
$account = $this->contact->getAccount();
$account->setUuid($elm['value']);
$account->setId($elm['value']);
$account->setUid($elm['value']);
$this->contact->setAccount($account);
break;
case ElementBinding::Company: case ElementBinding::Company:
$this->contact->getLayouterData()->setCompany($elm['value']); $this->contact->getLayouterData()->setCompany($elm['value']);
break; break;
@ -78,22 +89,46 @@ class SaveContact
$this->contact->setCountryCode($elm['value']); $this->contact->setCountryCode($elm['value']);
break; break;
case ElementBinding::Fon: case ElementBinding::Fon:
$this->contact->getLayouterData()->setPhoneAreaCode((string)($elm['value']['areacode'] ?? $element->getDefault1())); $this->contact
$this->contact->getLayouterData()->setPhonePrefix((string)($elm['value']['prefix'] ?? $element->getDefault2())); ->getLayouterData()
$this->contact->getLayouterData()->setPhone((string)($elm['value']['number'] ?? $element->getDefault3())); ->setPhoneAreaCode((string) ($elm['value']['areacode'] ?? $element->getDefault1()));
$this->contact->getLayouterData()->setPhoneAppendix((string)($elm['value']['appendix'] ?? $element->getDefault4())); $this->contact
->getLayouterData()
->setPhonePrefix((string) ($elm['value']['prefix'] ?? $element->getDefault2()));
$this->contact
->getLayouterData()
->setPhone((string) ($elm['value']['number'] ?? $element->getDefault3()));
$this->contact
->getLayouterData()
->setPhoneAppendix((string) ($elm['value']['appendix'] ?? $element->getDefault4()));
break; break;
case ElementBinding::Mobile: case ElementBinding::Mobile:
$this->contact->getLayouterData()->setMobileAreaCode((string)($elm['value']['areacode'] ?? $element->getDefault1())); $this->contact
$this->contact->getLayouterData()->setMobilePrefix((string)($elm['value']['prefix'] ?? $element->getDefault2())); ->getLayouterData()
$this->contact->getLayouterData()->setMobile((string)($elm['value']['number'] ?? $element->getDefault3())); ->setMobileAreaCode((string) ($elm['value']['areacode'] ?? $element->getDefault1()));
$this->contact->getLayouterData()->setMobileAppendix((string)($elm['value']['appendix'] ?? $element->getDefault4())); $this->contact
->getLayouterData()
->setMobilePrefix((string) ($elm['value']['prefix'] ?? $element->getDefault2()));
$this->contact
->getLayouterData()
->setMobile((string) ($elm['value']['number'] ?? $element->getDefault3()));
$this->contact
->getLayouterData()
->setMobileAppendix((string) ($elm['value']['appendix'] ?? $element->getDefault4()));
break; break;
case ElementBinding::Fax: case ElementBinding::Fax:
$this->contact->getLayouterData()->setFaxAreaCode((string)($elm['value']['areacode'] ?? $element->getDefault1())); $this->contact
$this->contact->getLayouterData()->setFaxPrefix((string)($elm['value']['prefix'] ?? $element->getDefault2())); ->getLayouterData()
$this->contact->getLayouterData()->setFax((string)($elm['value']['number'] ?? $element->getDefault3())); ->setFaxAreaCode((string) ($elm['value']['areacode'] ?? $element->getDefault1()));
$this->contact->getLayouterData()->setFaxAppendix((string)($elm['value']['appendix'] ?? $element->getDefault4())); $this->contact
->getLayouterData()
->setFaxPrefix((string) ($elm['value']['prefix'] ?? $element->getDefault2()));
$this->contact
->getLayouterData()
->setFax((string) ($elm['value']['number'] ?? $element->getDefault3()));
$this->contact
->getLayouterData()
->setFaxAppendix((string) ($elm['value']['appendix'] ?? $element->getDefault4()));
break; break;
case ElementBinding::Abteilung: case ElementBinding::Abteilung:
$this->contact->getLayouterData()->setAbteilung($elm['value']); $this->contact->getLayouterData()->setAbteilung($elm['value']);
@ -171,34 +206,34 @@ class SaveContact
$this->contact->setCustom24($elm['value']); $this->contact->setCustom24($elm['value']);
break; break;
case ElementBinding::LayouterMail: case ElementBinding::LayouterMail:
$this->contact->getLayouterData()->setEmail((string)$elm['value']); $this->contact->getLayouterData()->setEmail((string) $elm['value']);
break; break;
case ElementBinding::LayouterCountryName: case ElementBinding::LayouterCountryName:
$this->contact->getLayouterData()->setCountryName((string)$elm['value']); $this->contact->getLayouterData()->setCountryName((string) $elm['value']);
break; break;
case ElementBinding::LayouterCountryCode: case ElementBinding::LayouterCountryCode:
$this->contact->getLayouterData()->setCountryCode((string)$elm['value']); $this->contact->getLayouterData()->setCountryCode((string) $elm['value']);
break; break;
case ElementBinding::Birthday: case ElementBinding::Birthday:
$this->contact->getLayouterData()->setBirthday((string)$elm['value']); $this->contact->getLayouterData()->setBirthday((string) $elm['value']);
break; break;
case ElementBinding::Homepages: case ElementBinding::Homepages:
$this->contact->getLayouterData()->setHomepage((string)$elm['value']); $this->contact->getLayouterData()->setHomepage((string) $elm['value']);
break; break;
case ElementBinding::Salutation: case ElementBinding::Salutation:
$this->contact->getLayouterData()->setSalutation((string)$elm['value']); $this->contact->getLayouterData()->setSalutation((string) $elm['value']);
break; break;
case ElementBinding::UstId: case ElementBinding::UstId:
$this->contact->getLayouterData()->setUstid((string)$elm['value']); $this->contact->getLayouterData()->setUstid((string) $elm['value']);
break; break;
case ElementBinding::KSt: case ElementBinding::KSt:
$this->contact->getLayouterData()->setKst((string)$elm['value']); $this->contact->getLayouterData()->setKst((string) $elm['value']);
break; break;
case ElementBinding::State: case ElementBinding::State:
$this->contact->getLayouterData()->setState((string)$elm['value']); $this->contact->getLayouterData()->setState((string) $elm['value']);
break; break;
case ElementBinding::District: case ElementBinding::District:
$this->contact->getLayouterData()->setDistrict((string)$elm['value']); $this->contact->getLayouterData()->setDistrict((string) $elm['value']);
break; break;
case ElementBinding::Image1: case ElementBinding::Image1:
$media = new Media(); $media = new Media();
@ -217,6 +252,4 @@ class SaveContact
$this->contact->getLayouterData()->addSettingForLayouter('collectlayouter', $this->data->getData()); $this->contact->getLayouterData()->addSettingForLayouter('collectlayouter', $this->data->getData());
$this->contactTransformer->toDb($this->contact); $this->contactTransformer->toDb($this->contact);
} }
} }

View File

@ -2,7 +2,6 @@
namespace Plugin\Custom\PSC\CollectLayouter\Helper; namespace Plugin\Custom\PSC\CollectLayouter\Helper;
use PSC\Shop\MediaBundle\Service\MediaManager;
use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input; use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input;
use Plugin\Custom\PSC\CollectLayouter\Helper\MPDF; use Plugin\Custom\PSC\CollectLayouter\Helper\MPDF;
use Plugin\Custom\PSC\CollectLayouter\Model\Element; use Plugin\Custom\PSC\CollectLayouter\Model\Element;
@ -10,6 +9,7 @@ use Plugin\Custom\PSC\CollectLayouter\Model\ElementBinding;
use Plugin\Custom\PSC\CollectLayouter\Model\ElementType; use Plugin\Custom\PSC\CollectLayouter\Model\ElementType;
use Plugin\Custom\PSC\CollectLayouter\Model\Setting; use Plugin\Custom\PSC\CollectLayouter\Model\Setting;
use PSC\Shop\ContactBundle\Model\Contact; use PSC\Shop\ContactBundle\Model\Contact;
use PSC\Shop\MediaBundle\Service\MediaManager;
class SaveFiles class SaveFiles
{ {
@ -17,12 +17,13 @@ class SaveFiles
private Contact $contact; private Contact $contact;
private Input $data; private Input $data;
private bool $isRendered = false; private bool $isRendered = false;
private string $pdfFile = ""; private string $pdfFile = '';
private array $images = []; private array $images = [];
public function __construct(readonly private MPDF $mpdf, readonly private MediaManager $mediaManager) public function __construct(
{ private readonly MPDF $mpdf,
} private readonly MediaManager $mediaManager,
) {}
public function setData(Input $data): void public function setData(Input $data): void
{ {
@ -45,17 +46,26 @@ class SaveFiles
/** @var Element $element */ /** @var Element $element */
foreach ($this->setting->getCustomerForm() as $element) { foreach ($this->setting->getCustomerForm() as $element) {
$value = match($element->getBinding()) { $value = match ($element->getBinding()) {
ElementBinding::none => $element->getDefaultForTypePreview(), ElementBinding::none => $element->getDefaultForTypePreview(),
ElementBinding::StreetHouseNumber => ['street' => $this->contact->getLayouterData()->getStreet() ?? $element->getDefault1(), 'houseNumber' => $this->contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2()], ElementBinding::StreetHouseNumber => [
ElementBinding::ZipCity => ['zip' => $this->contact->getLayouterData()->getZip() ?? $element->getDefault1(), 'city' => $this->contact->getLayouterData()->getCity() ?? $element->getDefault2()], 'street' => $this->contact->getLayouterData()->getStreet() ?? $element->getDefault1(),
ElementBinding::Firstname => $this->contact->getLayouterData()->getFirstname() ?? $element->getDefault1(), 'houseNumber' => $this->contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2(),
],
ElementBinding::ZipCity => [
'zip' => $this->contact->getLayouterData()->getZip() ?? $element->getDefault1(),
'city' => $this->contact->getLayouterData()->getCity() ?? $element->getDefault2(),
],
ElementBinding::Firstname => $this->contact
->getLayouterData()
->getFirstname() ?? $element->getDefault1(),
ElementBinding::Lastname => $this->contact->getLayouterData()->getLastname() ?? $element->getDefault1(), ElementBinding::Lastname => $this->contact->getLayouterData()->getLastname() ?? $element->getDefault1(),
ElementBinding::Mobile => [ ElementBinding::Mobile => [
'areacode' => $this->contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(), 'areacode' => $this->contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(),
'appendix' => $this->contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4(), 'appendix' => $this->contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4(),
'number' => $this->contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault3(), 'number' => $this->contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault3(),
'prefix' => $this->contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2()], 'prefix' => $this->contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(),
],
ElementBinding::UsernameLogin => $this->contact->getEmail() ?? $element->getDefault1(), ElementBinding::UsernameLogin => $this->contact->getEmail() ?? $element->getDefault1(),
ElementBinding::Company => $this->contact->getLayouterData()->getCompany() ?? $element->getDefault1(), ElementBinding::Company => $this->contact->getLayouterData()->getCompany() ?? $element->getDefault1(),
ElementBinding::Company2 => $this->contact->getLayouterData()->getCompany2() ?? $element->getDefault1(), ElementBinding::Company2 => $this->contact->getLayouterData()->getCompany2() ?? $element->getDefault1(),
@ -67,13 +77,17 @@ class SaveFiles
'areacode' => $this->contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(), 'areacode' => $this->contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(),
'appendix' => $this->contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4(), 'appendix' => $this->contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4(),
'number' => $this->contact->getLayouterData()->getPhone() ?? $element->getDefault3(), 'number' => $this->contact->getLayouterData()->getPhone() ?? $element->getDefault3(),
'prefix' => $this->contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2()], 'prefix' => $this->contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(),
],
ElementBinding::Fax => [ ElementBinding::Fax => [
'areacode' => $this->contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(), 'areacode' => $this->contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(),
'appendix' => $this->contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4(), 'appendix' => $this->contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4(),
'number' => $this->contact->getLayouterData()->getFax() ?? $element->getDefault3(), 'number' => $this->contact->getLayouterData()->getFax() ?? $element->getDefault3(),
'prefix' => $this->contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2()], 'prefix' => $this->contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(),
ElementBinding::Abteilung => $this->contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(), ],
ElementBinding::Abteilung => $this->contact
->getLayouterData()
->getAbteilung() ?? $element->getDefault1(),
ElementBinding::Custom1 => $this->contact->getCustom1() ?? $element->getDefault1(), ElementBinding::Custom1 => $this->contact->getCustom1() ?? $element->getDefault1(),
ElementBinding::Custom2 => $this->contact->getCustom2() ?? $element->getDefault1(), ElementBinding::Custom2 => $this->contact->getCustom2() ?? $element->getDefault1(),
ElementBinding::Custom3 => $this->contact->getCustom3() ?? $element->getDefault1(), ElementBinding::Custom3 => $this->contact->getCustom3() ?? $element->getDefault1(),
@ -98,30 +112,44 @@ class SaveFiles
ElementBinding::Custom22 => $this->contact->getCustom22() ?? $element->getDefault1(), ElementBinding::Custom22 => $this->contact->getCustom22() ?? $element->getDefault1(),
ElementBinding::Custom23 => $this->contact->getCustom23() ?? $element->getDefault1(), ElementBinding::Custom23 => $this->contact->getCustom23() ?? $element->getDefault1(),
ElementBinding::Custom24 => $this->contact->getCustom24() ?? $element->getDefault1(), ElementBinding::Custom24 => $this->contact->getCustom24() ?? $element->getDefault1(),
ElementBinding::LayouterMail => $this->contact->getLayouterData()->getEmail() ?? $element->getDefault1(), ElementBinding::LayouterMail => $this->contact
ElementBinding::LayouterCountryName => $this->contact->getLayouterData()->getCountryName() ?? $element->getDefault1(), ->getLayouterData()
ElementBinding::LayouterCountryCode => $this->contact->getLayouterData()->getCountryCode() ?? $element->getDefault1(), ->getEmail() ?? $element->getDefault1(),
ElementBinding::LayouterCountryName => $this->contact
->getLayouterData()
->getCountryName() ?? $element->getDefault1(),
ElementBinding::LayouterCountryCode => $this->contact
->getLayouterData()
->getCountryCode() ?? $element->getDefault1(),
ElementBinding::Birthday => $this->contact->getLayouterData()->getBirthday() ?? $element->getDefault1(), ElementBinding::Birthday => $this->contact->getLayouterData()->getBirthday() ?? $element->getDefault1(),
ElementBinding::Homepages => $this->contact->getLayouterData()->getHomepage() ?? $element->getDefault1(), ElementBinding::Homepages => $this->contact
ElementBinding::Salutation => $this->contact->getLayouterData()->getSalutation() ?? $element->getDefault1(), ->getLayouterData()
->getHomepage() ?? $element->getDefault1(),
ElementBinding::Salutation => $this->contact
->getLayouterData()
->getSalutation() ?? $element->getDefault1(),
ElementBinding::UstId => $this->contact->getLayouterData()->getUstid() ?? $element->getDefault1(), ElementBinding::UstId => $this->contact->getLayouterData()->getUstid() ?? $element->getDefault1(),
ElementBinding::KSt => $this->contact->getLayouterData()->getKst() ?? $element->getDefault1(), ElementBinding::KSt => $this->contact->getLayouterData()->getKst() ?? $element->getDefault1(),
ElementBinding::State => $this->contact->getLayouterData()->getState() ?? $element->getDefault1(), ElementBinding::State => $this->contact->getLayouterData()->getState() ?? $element->getDefault1(),
ElementBinding::District => $this->contact->getLayouterData()->getDistrict() ?? $element->getDefault1(), ElementBinding::District => $this->contact->getLayouterData()->getDistrict() ?? $element->getDefault1(),
ElementBinding::Image1 => $this->contact->getLayouterData()->getImage1() ?? $element->getDefault1(), ElementBinding::Image1 => $this->contact->getLayouterData()->getImage1() ?? $element->getDefault1(),
ElementBinding::Image2 => $this->contact->getLayouterData()->getImage2() ?? $element->getDefault1(), ElementBinding::Image2 => $this->contact->getLayouterData()->getImage2() ?? $element->getDefault1(),
ElementBinding::Account => $this->contact->getAccount()->getUuid() ?? $element->getDefault1(),
}; };
if ($elm = $this->data->getElement($element, $this->contact)) { if ($elm = $this->data->getElement($element, $this->contact)) {
if ($element->getType() == ElementType::Image && $elm['value'] != "") { if ($element->getType() == ElementType::Image && $elm['value'] != '') {
$media = $this->mediaManager->getModelByUuid($elm['value']); $media = $this->mediaManager->getModelByUuid($elm['value']);
$elmMedia = $media->getVariant($element->getImage()->aspectRatio); $elmMedia = $media->getVariant($element->getImage()->aspectRatio);
$formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool)$elm['enable']]; $formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool) $elm['enable']];
} else { } else {
$formData[$element->getId()] = ['value' => $elm['value'], 'enable' => $elm['enable']]; $formData[$element->getId()] = ['value' => $elm['value'], 'enable' => $elm['enable']];
} }
} else { } else {
$formData[$element->getId()] = ['value' => $value, 'enable' => $element->getOptional() ? $element->getOptionalDefault() : true]; $formData[$element->getId()] = [
'value' => $value,
'enable' => $element->getOptional() ? $element->getOptionalDefault() : true,
];
} }
} }
@ -141,13 +169,26 @@ class SaveFiles
{ {
$contactUUId = $this->contact->getUuid(); $contactUUId = $this->contact->getUuid();
if ($contactUUId == "") { if ($contactUUId == '') {
$contactUUId = 'guest'; $contactUUId = 'guest';
} }
if (!file_exists('/data/www/old/market/collectlayouter/temp/' . $contactUUId . '/' . $this->data->getLayouterUuid())) { if (
mkdir('/data/www/old/market/collectlayouter/temp/' . $contactUUId . '/' . $this->data->getLayouterUuid(), 0777, true); !file_exists('/data/www/old/market/collectlayouter/temp/' .
$contactUUId .
'/' .
$this->data->getLayouterUuid())
) {
mkdir(
'/data/www/old/market/collectlayouter/temp/' . $contactUUId . '/' . $this->data->getLayouterUuid(),
0o777,
true,
);
} }
$this->pdfFile = sprintf('/data/www/old/market/collectlayouter/temp/%s/%s/print.pdf', $contactUUId, $this->data->getLayouterUuid()); $this->pdfFile = sprintf(
'/data/www/old/market/collectlayouter/temp/%s/%s/print.pdf',
$contactUUId,
$this->data->getLayouterUuid(),
);
$this->rendering(true); $this->rendering(true);
@ -159,7 +200,12 @@ class SaveFiles
$i = 1; $i = 1;
foreach ($this->mpdf->getPreviewFiles() as $f) { foreach ($this->mpdf->getPreviewFiles() as $f) {
$filename = sprintf('/data/www/old/market/collectlayouter/temp/%s/%s/%s.jpeg', $contactUUId, $this->data->getLayouterUuid(), $i); $filename = sprintf(
'/data/www/old/market/collectlayouter/temp/%s/%s/%s.jpeg',
$contactUUId,
$this->data->getLayouterUuid(),
$i,
);
copy($f, $filename); copy($f, $filename);
$this->images[] = $filename; $this->images[] = $filename;
$i++; $i++;
@ -177,6 +223,4 @@ class SaveFiles
{ {
return $this->pdfFile; return $this->pdfFile;
} }
} }

View File

@ -60,7 +60,7 @@ enum ElementBinding: int
case District = 49; case District = 49;
case Image1 = 50; case Image1 = 50;
case Image2 = 51; case Image2 = 51;
case Account = 52;
public static function getForTypePhone(): array public static function getForTypePhone(): array
{ {
@ -80,6 +80,7 @@ enum ElementBinding: int
return $tmp; return $tmp;
} }
public static function getForTypeText(): array public static function getForTypeText(): array
{ {
$tmp = [ $tmp = [
@ -101,6 +102,7 @@ enum ElementBinding: int
self::KSt->name => self::KSt, self::KSt->name => self::KSt,
self::State->name => self::State, self::State->name => self::State,
self::District->name => self::District, self::District->name => self::District,
self::Account->name => self::Account,
]; ];
for ($i = 16; $i <= 39; $i++) { for ($i = 16; $i <= 39; $i++) {
@ -143,21 +145,21 @@ enum ElementBinding: int
public function getSortField(): string public function getSortField(): string
{ {
return match($this) { return match ($this) {
self::none => "", self::none => '',
self::UsernameLogin => 'username', self::UsernameLogin => 'username',
self::UsernameLogin => 'username', self::UsernameLogin => 'username',
self::Company => 'company', self::Company => 'company',
self::Firstname => 'firstname', self::Firstname => 'firstname',
self::Lastname => 'lastname', self::Lastname => 'lastname',
default => '' default => '',
}; };
} }
public function getField(Contact $contact): string public function getField(Contact $contact): string
{ {
return match($this) { return match ($this) {
self::none => "", self::none => '',
self::UsernameLogin => $contact->getUsername(), self::UsernameLogin => $contact->getUsername(),
self::Company => $contact->getLayouterData()->getCompany(), self::Company => $contact->getLayouterData()->getCompany(),
self::Company2 => $contact->getLayouterData()->getCompany2(), self::Company2 => $contact->getLayouterData()->getCompany2(),
@ -166,12 +168,38 @@ enum ElementBinding: int
self::Title => $contact->getLayouterData()->getTitle(), self::Title => $contact->getLayouterData()->getTitle(),
self::Position => $contact->getLayouterData()->getPosition(), self::Position => $contact->getLayouterData()->getPosition(),
self::Function => $contact->getLayouterData()->getFunction(), self::Function => $contact->getLayouterData()->getFunction(),
self::StreetHouseNumber => sprintf("%s %s", $contact->getLayouterData()->getStreet(), $contact->getLayouterData()->getHouseNumber()), self::StreetHouseNumber => sprintf(
self::ZipCity => sprintf("%s %s", $contact->getLayouterData()->getZip(), $contact->getLayouterData()->getCity()), '%s %s',
$contact->getLayouterData()->getStreet(),
$contact->getLayouterData()->getHouseNumber(),
),
self::ZipCity => sprintf(
'%s %s',
$contact->getLayouterData()->getZip(),
$contact->getLayouterData()->getCity(),
),
self::UserCountry => $contact->getCountryCode(), self::UserCountry => $contact->getCountryCode(),
self::Fon => sprintf("%s %s %s %s", $contact->getLayouterData()->getPhoneAreaCode(), $contact->getLayouterData()->getPhonePrefix(), $contact->getLayouterData()->getPhone(), $contact->getLayouterData()->getPhoneAppendix()), self::Fon => sprintf(
self::Mobile => sprintf("%s %s %s %s", $contact->getLayouterData()->getMobileAreaCode(), $contact->getLayouterData()->getMobilePrefix(), $contact->getLayouterData()->getMobile(), $contact->getLayouterData()->getMobileAppendix()), '%s %s %s %s',
self::Fax => sprintf("%s %s %s %s", $contact->getLayouterData()->getFaxAreaCode(), $contact->getLayouterData()->getFaxPrefix(), $contact->getLayouterData()->getFax(), $contact->getLayouterData()->getFaxAppendix()), $contact->getLayouterData()->getPhoneAreaCode(),
$contact->getLayouterData()->getPhonePrefix(),
$contact->getLayouterData()->getPhone(),
$contact->getLayouterData()->getPhoneAppendix(),
),
self::Mobile => sprintf(
'%s %s %s %s',
$contact->getLayouterData()->getMobileAreaCode(),
$contact->getLayouterData()->getMobilePrefix(),
$contact->getLayouterData()->getMobile(),
$contact->getLayouterData()->getMobileAppendix(),
),
self::Fax => sprintf(
'%s %s %s %s',
$contact->getLayouterData()->getFaxAreaCode(),
$contact->getLayouterData()->getFaxPrefix(),
$contact->getLayouterData()->getFax(),
$contact->getLayouterData()->getFaxAppendix(),
),
self::Abteilung => $contact->getLayouterData()->getAbteilung(), self::Abteilung => $contact->getLayouterData()->getAbteilung(),
self::Custom1 => $contact->getCustom1(), self::Custom1 => $contact->getCustom1(),
self::Custom2 => $contact->getCustom2(), self::Custom2 => $contact->getCustom2(),
@ -207,13 +235,17 @@ enum ElementBinding: int
self::KSt => $contact->getLayouterData()->getKst(), self::KSt => $contact->getLayouterData()->getKst(),
self::State => $contact->getLayouterData()->getState(), self::State => $contact->getLayouterData()->getState(),
self::District => $contact->getLayouterData()->getDistrict(), self::District => $contact->getLayouterData()->getDistrict(),
self::Account => $contact->getAccount()->getUuid(),
}; };
} }
public function trans(TranslatorInterface $translator, string $locale = null): string public function trans(TranslatorInterface $translator, null|string $locale = null): string
{ {
return $this->name; return $this->name;
return $translator->trans('elementBinding.' . $this->name, locale: $locale, domain: 'PluginCustomPSCCollectLayouter'); return $translator->trans(
'elementBinding.' . $this->name,
locale: $locale,
domain: 'PluginCustomPSCCollectLayouter',
);
} }
} }

View File

@ -5,7 +5,8 @@ namespace Plugin\Custom\PSC\CollectLayouter\Model;
use Symfony\Contracts\Translation\TranslatableInterface; use Symfony\Contracts\Translation\TranslatableInterface;
use Symfony\Contracts\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
enum ElementType: int { enum ElementType: int
{
case eMail = 1; case eMail = 1;
case Text = 2; case Text = 2;
case Phone = 3; case Phone = 3;
@ -13,9 +14,15 @@ enum ElementType: int {
case StreetHouseNumber = 5; case StreetHouseNumber = 5;
case ZipCity = 6; case ZipCity = 6;
case eMailSplit = 7; case eMailSplit = 7;
case Hidden = 8;
public function trans(TranslatorInterface $translator, string $locale = null): string public function trans(TranslatorInterface $translator, null|string $locale = null): string
{ {
return $translator->trans('elementtype.' . $this->name, locale: $locale, domain: 'PluginCustomPSCCollectLayouter'); return $translator->trans(
'elementtype.' . $this->name,
locale: $locale,
domain: 'PluginCustomPSCCollectLayouter',
);
} }
} }

View File

@ -609,7 +609,6 @@
class: 'form-control form-control-sm upload', class: 'form-control form-control-sm upload',
required: element.required, required: element.required,
}).data('folder', element.mediaFolder).data('element', element.id).attr('data-element', element.id); }).data('folder', element.mediaFolder).data('element', element.id).attr('data-element', element.id);
;
var $uploadButton = $('<button>', { var $uploadButton = $('<button>', {
class: 'btn btn-sm btn-outline-primary upload', class: 'btn btn-sm btn-outline-primary upload',
@ -694,6 +693,17 @@
} }
if(element.type == 8) {
var $obj = $('<input>', {
type: 'hidden',
class: 'form-control form-control-sm',
value: element.default1,
id: element.id,
name: 'data[' + element.id + '][value]'
});
}
if(element.optional) { if(element.optional) {
var $col = $('<div class="col-10"></div>'); var $col = $('<div class="col-10"></div>');
if(element.type == 4) { if(element.type == 4) {

View File

@ -560,6 +560,19 @@
} }
if(element.type == 8) {
var $obj = $('<div/>', { class: 'flex flex-row'});
var $elm = $('<input>', {
type: 'hidden',
class: 'bg-gray-100 p-1 border w-full',
value: element.default1,
id: element.id,
name: 'data[' + element.id + '][value]'
});
$obj.append($elm);
}
var $col = $('<div class="md:basis-2/3"></div>'); var $col = $('<div class="md:basis-2/3"></div>');
if(element.type == 4) { if(element.type == 4) {
var $group = $('<div class=""></div>'); var $group = $('<div class=""></div>');

View File

@ -1,15 +1,6 @@
<?php <?php
/**
* PrintshopCreator Suite namespace Plugin\Custom\PSC\CreativeLayouter\Controller\Backend;
*
* PHP Version 5.3
*
* @author Thomas Peterson <info@thomas-peterson.de>
* @copyright 2012-2013 PrintshopCreator GmbH
* @license Private
* @link http://www.printshopcreator.de
*/
namespace Plugin\System\PSC\CreativeLayouter\Controller\Backend;
use Doctrine\ODM\MongoDB\DocumentManager; use Doctrine\ODM\MongoDB\DocumentManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -18,18 +9,17 @@ use PSC\Shop\EntityBundle\Document\Shop;
use PSC\Shop\EntityBundle\Entity\Account; use PSC\Shop\EntityBundle\Entity\Account;
use PSC\Shop\EntityBundle\Entity\Product; use PSC\Shop\EntityBundle\Entity\Product;
use PSC\Shop\EntityBundle\Entity\Stockbooking; use PSC\Shop\EntityBundle\Entity\Stockbooking;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\SecurityContext;
class XmlController extends AbstractController class XmlController extends AbstractController
{ {
/** /**
* creative * creative
* *
@ -44,25 +34,33 @@ class XmlController extends AbstractController
* @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\ORMException
*/ */
#[Route(path: '/xml/edit/{uuid}', name: 'psc_plugin_creativelayouter_backend_xml_edit')] #[Route(path: '/xml/edit/{uuid}', name: 'psc_plugin_creativelayouter_backend_xml_edit')]
public function editAction(Request $request, \PSC\System\SettingsBundle\Service\Shop $shopService, EntityManagerInterface $entityManager, DocumentManager $documentManager, $uuid) public function editAction(
{ Request $request,
\PSC\System\SettingsBundle\Service\Shop $shopService,
EntityManagerInterface $entityManager,
DocumentManager $documentManager,
$uuid,
) {
$selectedShop = $shopService->getSelectedShop(); $selectedShop = $shopService->getSelectedShop();
$product = $entityManager $product = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop)); ->getRepository('PSC\Shop\EntityBundle\Entity\Product')
->findOneBy(['uuid' => $uuid, 'shop' => $selectedShop]);
/** @var \PSC\Shop\EntityBundle\Document\Product $productDoc */ /** @var \PSC\Shop\EntityBundle\Document\Product $productDoc */
$productDoc = $documentManager $productDoc = $documentManager
->getRepository('PSC\Shop\EntityBundle\Document\Product') ->getRepository('PSC\Shop\EntityBundle\Document\Product')
->findOneBy(array('uid' => (string) $product->getUid())); ->findOneBy(['uid' => (string) $product->getUid()]);
if(!$productDoc) { if (!$productDoc) {
$productDoc = new \PSC\Shop\EntityBundle\Document\Product(); $productDoc = new \PSC\Shop\EntityBundle\Document\Product();
$productDoc->setUid((string)$product->getUid()); $productDoc->setUid((string) $product->getUid());
} }
$form = $this->createForm(EditType::class, ['steplayouterXml' => $product->getSteplayouterXml(), 'colorDb' => $productDoc->getPluginSettingModule('creativeLayouter', 'colorDb')]); $form = $this->createForm(EditType::class, [
'steplayouterXml' => $product->getSteplayouterXml(),
'colorDb' => $productDoc->getPluginSettingModule('creativeLayouter', 'colorDb'),
]);
$form->handleRequest($request); $form->handleRequest($request);
@ -75,9 +73,10 @@ class XmlController extends AbstractController
$entityManager->persist($product); $entityManager->persist($product);
$entityManager->flush(); $entityManager->flush();
} }
return array( return [
'form' => $form->createView(), 'form' => $form->createView(),
'product' => $product 'product' => $product,
); ];
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\CreativeLayouter\Form; namespace Plugin\Custom\PSC\CreativeLayouter\Form;
use PSC\Shop\EntityBundle\Entity\Product; use PSC\Shop\EntityBundle\Entity\Product;
use PSC\System\PluginBundle\Form\Interfaces\Field; use PSC\System\PluginBundle\Form\Interfaces\Field;
@ -29,7 +29,7 @@ class BackendFields extends \PSC\System\PluginBundle\Form\Field implements Fiel
public function getTemplate() public function getTemplate()
{ {
return '@PluginSystemPSCCreativeLayouter/form/field/backend.html.twig'; return '@PluginCustomPSCCreativeLayouter/form/field/backend.html.twig';
} }
public function getModule() public function getModule()
@ -42,7 +42,6 @@ class BackendFields extends \PSC\System\PluginBundle\Form\Field implements Fiel
*/ */
public function formPreSubmit(FormEvent $event) public function formPreSubmit(FormEvent $event)
{ {
} }
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
@ -50,14 +49,17 @@ class BackendFields extends \PSC\System\PluginBundle\Form\Field implements Fiel
/** @var Product $product */ /** @var Product $product */
$product = $options['product']; $product = $options['product'];
$builder->add('uploadSteplayouter2', CheckboxType::class, ['required' => false, 'label' => 'Aktivieren']) $builder->add('uploadSteplayouter2', CheckboxType::class, ['required' => false, 'label' => 'Aktivieren'])->add(
->add("uploadSteplayouter2InitalStatus", ChoiceType::class, array( 'uploadSteplayouter2InitalStatus',
ChoiceType::class,
[
'label' => 'Initalstatus', 'label' => 'Initalstatus',
'choices' => $this->statusService->getPositionStatusAsArray(), 'choices' => $this->statusService->getPositionStatusAsArray(),
'translation_domain' => 'posstatus' 'translation_domain' => 'posstatus',
)); ],
);
if($product) { if ($product) {
$builder->get('uploadSteplayouter2')->setData($product->isUploadSteplayouter2()); $builder->get('uploadSteplayouter2')->setData($product->isUploadSteplayouter2());
$builder->get('uploadSteplayouter2InitalStatus')->setData($product->getUploadSteplayouter2InitalStatus()); $builder->get('uploadSteplayouter2InitalStatus')->setData($product->getUploadSteplayouter2InitalStatus());
} }
@ -67,24 +69,26 @@ class BackendFields extends \PSC\System\PluginBundle\Form\Field implements Fiel
public function getGroup() public function getGroup()
{ {
return "creativelayouter"; return 'creativelayouter';
} }
public function formPostSetData(FormEvent $event) public function formPostSetData(FormEvent $event)
{ {
} }
public function formPostSubmit(FormEvent $event) public function formPostSubmit(FormEvent $event)
{ {
/** @var Product $product */ /** @var Product $product */
$product = $event->getData(); $product = $event->getData();
$product->setUploadSteplayouter2InitalStatus($event->getForm()->get('creativelayouter')->get('uploadSteplayouter2InitalStatus')->getData()); $product->setUploadSteplayouter2InitalStatus(
$product->setUploadSteplayouter2($event->getForm()->get('creativelayouter')->get('uploadSteplayouter2')->getData()); $event->getForm()->get('creativelayouter')->get('uploadSteplayouter2InitalStatus')->getData(),
);
$product->setUploadSteplayouter2(
$event->getForm()->get('creativelayouter')->get('uploadSteplayouter2')->getData(),
);
} }
public function formPreSetData(FormEvent $event) public function formPreSetData(FormEvent $event)
{ {
} }
} }

View File

@ -0,0 +1,52 @@
<?php
namespace Plugin\Custom\PSC\CreativeLayouter\Form\XML;
use PSC\Libraries\AceEditorBundle\Form\Extension\AceEditorType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class EditType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('steplayouterXml', AceEditorType::class, [
'wrapper_attr' => [], // aceeditor wrapper html attributes.
'width' => '100%',
'height' => '500',
'font_size' => 14,
'mode' => 'ace/mode/xml', // every single default mode must have ace/mode/* prefix
'theme' => 'ace/theme/monokai', // every single default theme must have ace/theme/* prefix
'tab_size' => null,
'read_only' => null,
'use_soft_tabs' => null,
'use_wrap_mode' => null,
'show_print_margin' => null,
'required' => false,
'highlight_active_line' => null,
])->add('colorDb', AceEditorType::class, [
'wrapper_attr' => [], // aceeditor wrapper html attributes.
'width' => '100%',
'height' => '500',
'font_size' => 14,
'mode' => 'ace/mode/xml', // every single default mode must have ace/mode/* prefix
'theme' => 'ace/theme/monokai', // every single default theme must have ace/theme/* prefix
'tab_size' => null,
'read_only' => null,
'use_soft_tabs' => null,
'use_wrap_mode' => null,
'show_print_margin' => null,
'required' => false,
'highlight_active_line' => null,
])->add('save', SubmitType::class, ['label' => 'Speichern']);
}
public function getName()
{
return 'product';
}
}

View File

@ -1,11 +1,12 @@
<?php <?php
namespace Plugin\System\PSC\CreativeLayouter;
namespace Plugin\Custom\PSC\CreativeLayouter;
use PSC\System\PluginBundle\Plugin\Base; use PSC\System\PluginBundle\Plugin\Base;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin { class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
{
protected $name = 'Creative Layouter'; protected $name = 'Creative Layouter';
public function getType() public function getType()
@ -22,5 +23,4 @@ class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
{ {
return 1; return 1;
} }
} }

View File

@ -1,4 +1,4 @@
psc_plugin_system_creativelayouter_backend: psc_plugin_custom_creativelayouter_backend:
resource: "@PluginSystemPSCCreativeLayouter/Controller/Backend" resource: "@PluginSystemPSCCreativeLayouter/Controller/Backend"
type: annotation type: annotation
prefix: /backend/plugin/creativelayouter prefix: /backend/plugin/creativelayouter

View File

@ -0,0 +1,11 @@
services:
_defaults:
autowire: true
autoconfigure: true
Plugin\Custom\PSC\CreativeLayouter\:
resource: '../../*/*'
Plugin\Custom\PSC\CreativeLayouter\Form\BackendFields:
tags:
- { name: psc.backend.custom.fields }

View File

@ -5,7 +5,6 @@ import { useItemStore } from '../../../stores/Items'
import RenderElements from './RenderElements.vue' import RenderElements from './RenderElements.vue'
import PriceDisplay from './PriceDisplay.vue' import PriceDisplay from './PriceDisplay.vue'
import type { PreviewResponse } from '../../../model/preview/types' import type { PreviewResponse } from '../../../model/preview/types'
import { debounce } from "@std/async/debounce"
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const itemStore = useItemStore() const itemStore = useItemStore()
@ -21,7 +20,7 @@ let previewValues: Record<string, any> = {}
const handleUpdate = (payload: { elementId: string, newValue: any }) => { const handleUpdate = (payload: { elementId: string, newValue: any }) => {
previewValues[payload.elementId] = payload.newValue; previewValues[payload.elementId] = payload.newValue;
debounce(() => globalStore.loadPreview(itemStore.loadJSON(), previewValues), 500); globalStore.loadPreview(itemStore.loadJSON(), previewValues)
}; };

View File

@ -33,7 +33,7 @@ export default defineConfig({
changeOrigin: true, changeOrigin: true,
configure: (proxy) => { configure: (proxy) => {
proxy.on('proxyReq', (proxyReq) => { proxy.on('proxyReq', (proxyReq) => {
proxyReq.setHeader('Authorization', 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE3NTY5OTYyODUsImV4cCI6MTc1Njk5OTg4NSwicm9sZXMiOlsiUk9MRV9BRE1JTiIsIlJPTEVfU0hPUF9PUEVSQVRPUiIsIlJPTEVfVVNFUiIsIlJPTEVfVVNFUiIsIlJPTEVfUFNDX0NvbGxlY3RfQ29udGFjdF9FZGl0IiwiUk9MRV9QU0NfQ29sbGVjdF9Db250YWN0X0FkZCIsIlJPTEVfUFNDX0NvbGxlY3RfQ29udGFjdF9EZWxldGUiLCJST0xFX1BTQ19Db2xsZWN0X0NvbnRhY3RfTG9jayIsIlJPTEVfUFNDX1IyX1NlbmRjbG91ZF9TaG93Il0sInVpZCI6MX0.GscgpB_vAN_oq4LHqzQ4K8vU0j4U9S4xLh0hCgRaAGTQuYpdHRzO21fCXob4-maN8njEtsHLq7Jpez4k0u47QhRknYrtDT_vw0EKilLpnTYFtxErAY7XqGgitam_C4BtjXKGybGkLrwfSFmlZh1yR_dJA2-hPcOlBjfpjLgOPGmpqClgLH3uv2kBn5E39kveNL5AtEOz18l--At6-UgGQDOXoKPxNNYokUK9_yaWEOezf7LThfBqgeKwOFzKlcbBNGkPWyQjbOaexWfv4DwVUtFuSJrJRYYAMbjPbx0sOThBI-AgpzooiXpLbEZFYOjkCXgyPBVBwp9JI-d0DbpGvA'); proxyReq.setHeader('Authorization', 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE3NTcwNjI0NDQsImV4cCI6MTc1NzA2NjA0NCwicm9sZXMiOlsiUk9MRV9BRE1JTiIsIlJPTEVfU0hPUF9PUEVSQVRPUiIsIlJPTEVfVVNFUiIsIlJPTEVfVVNFUiIsIlJPTEVfUFNDX0NvbGxlY3RfQ29udGFjdF9FZGl0IiwiUk9MRV9QU0NfQ29sbGVjdF9Db250YWN0X0FkZCIsIlJPTEVfUFNDX0NvbGxlY3RfQ29udGFjdF9EZWxldGUiLCJST0xFX1BTQ19Db2xsZWN0X0NvbnRhY3RfTG9jayIsIlJPTEVfUFNDX1IyX1NlbmRjbG91ZF9TaG93Il0sInVpZCI6MX0.DATOKyuWwVpzyhINLPImV3j_PQvEHj8w_ds7NHxfeVcYvksJc0YOV7jmpaJScZZOKFLaLz99AndeHGcHZQs1XUmvOfcoP3_IgqoqTconR6Y9O-fGTt0kbUPfikARxyFRw7VoROJd3l4A7S9Xj2XFItwmwGzt43P0rMzJmEu6TZSTFSgtsMj_Iu6xsc0V9YNqEQJu3JfVJkwNNVEOAdW99IKGEaNAqXkOuDsJ4uWX-G5G-Y18j6VKgYEmpL1eIgT8RWSG0nFILxoJzqfKBdKHBlb6l7javXgqpWaEpWtd_G8gWtMNrNHYo1ifqvjiIvkqV4wJRQSRxP6kE0Wudf3WBQ');
}); });
}, },
}, },

View File

@ -1,5 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\FormLayouter\Controller;
namespace Plugin\Custom\PSC\FormLayouter\Controller;
use Doctrine\ODM\MongoDB\DocumentManager; use Doctrine\ODM\MongoDB\DocumentManager;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@ -18,95 +19,106 @@ use Twig\Loader\FilesystemLoader;
#[Route('/designer')] #[Route('/designer')]
class DesignerController extends AbstractController class DesignerController extends AbstractController
{ {
#[Route('/load/{productId}/{layouterId}', name: 'psc_plugin_formlayouter_load')] #[Route('/load/{productId}/{layouterId}', name: 'psc_plugin_formlayouter_load')]
public function loadAction(Request $request, EntityManagerInterface $entityManager, $productId, $layouterId = "") public function loadAction(Request $request, EntityManagerInterface $entityManager, $productId, $layouterId = '')
{ {
$session = new FormLayouter(); $session = new FormLayouter();
if($request->getSession()->has('formlayouter')) { if ($request->getSession()->has('formlayouter')) {
$session = $request->getSession()->get('formlayouter'); $session = $request->getSession()->get('formlayouter');
} }
if($layouterId != "") { if ($layouterId != '') {
/** @var Layoutdesigndata $layoutDesignData */ /** @var Layoutdesigndata $layoutDesignData */
$layoutDesignData = $entityManager $layoutDesignData = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')->findOneBy(array('uuid' => $layouterId)); ->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')
->findOneBy(['uuid' => $layouterId]);
$session->setOptions($productId, $layoutDesignData->getDesign()); $session->setOptions($productId, $layoutDesignData->getDesign());
} }
return $this->redirectToRoute("psc_plugin_formlayouter_start", ['productId' => $productId, 'layouterId' => $layouterId]); return $this->redirectToRoute('psc_plugin_formlayouter_start', [
'productId' => $productId,
'layouterId' => $layouterId,
]);
} }
#[Route('/start/{productId}/{layouterId}', name: 'psc_plugin_formlayouter_start')] #[Route('/start/{productId}/{layouterId}', name: 'psc_plugin_formlayouter_start')]
public function startAction(Request $request, EntityManagerInterface $entityManager, DocumentManager $documentManager, Layouter $formLayouter, $productId, $layouterId = "") public function startAction(
{ Request $request,
EntityManagerInterface $entityManager,
DocumentManager $documentManager,
Layouter $formLayouter,
$productId,
$layouterId = '',
) {
/** @var Product $product */ /** @var Product $product */
$product = $entityManager $product = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Product') ->getRepository('PSC\Shop\EntityBundle\Entity\Product')
->findOneBy(array('uuid' => $productId)); ->findOneBy(['uuid' => $productId]);
/** @var \PSC\Shop\EntityBundle\Entity\Shop $shop */ /** @var \PSC\Shop\EntityBundle\Entity\Shop $shop */
$shop = $product->getShop(); $shop = $product->getShop();
//\var_dump($shop->getLayout()); //\var_dump($shop->getLayout());
/** @var \PSC\Shop\EntityBundle\Document\Product $productDoc */ /** @var \PSC\Shop\EntityBundle\Document\Product $productDoc */
$productDoc = $documentManager $productDoc = $documentManager
->getRepository('PSC\Shop\EntityBundle\Document\Product') ->getRepository('PSC\Shop\EntityBundle\Document\Product')
->findOneBy(array('uid' => (string)$product->getUid())); ->findOneBy(['uid' => (string) $product->getUid()]);
$session = new FormLayouter(); $session = new FormLayouter();
if($request->getSession()->has('formlayouter')) { if ($request->getSession()->has('formlayouter')) {
$session = $request->getSession()->get('formlayouter'); $session = $request->getSession()->get('formlayouter');
} }
$formLayouter->setXml($productDoc->getPluginSetting('formlayouter', 'xml')); $formLayouter->setXml($productDoc->getPluginSetting('formlayouter', 'xml'));
if($request->get('prev', false) !== false) { if ($request->get('prev', false) !== false) {
$actStep = $formLayouter->getStep($request->get('actStep', 1)-1); $actStep = $formLayouter->getStep($request->get('actStep', 1) - 1);
}elseif($request->get('next', false) !== false) { } elseif ($request->get('next', false) !== false) {
$actStep = $formLayouter->getStep($request->get('actStep', 1)+1); $actStep = $formLayouter->getStep($request->get('actStep', 1) + 1);
}else{ } else {
$actStep = $formLayouter->getStep($request->get('actStep', 1)); $actStep = $formLayouter->getStep($request->get('actStep', 1));
} }
$config = $formLayouter->getConfig(); $config = $formLayouter->getConfig();
$data = []; $data = [];
$form = $this->createForm(FormDesigner::class, $data, ['step' => $actStep, 'session' => $session, 'productId' => $productId]); $form = $this->createForm(FormDesigner::class, $data, [
'step' => $actStep,
'session' => $session,
'productId' => $productId,
]);
$request->getSession()->set('formlayouter', $session); $request->getSession()->set('formlayouter', $session);
$loader = new FilesystemLoader('/data/www/old/application/design/vorlagen/' . $shop->getLayout() . '/step_layouter/'); $loader = new FilesystemLoader('/data/www/old/application/design/vorlagen/' .
$shop->getLayout() .
'/step_layouter/');
$twig = new Environment($loader); $twig = new Environment($loader);
//\var_dump($twig); //\var_dump($twig);
$header = $twig->render('header.html.twig'); $header = $twig->render('header.html.twig');
$footer = $twig->render('footer.html.twig'); $footer = $twig->render('footer.html.twig');
return [ return [
'step' => $actStep, 'step' => $actStep,
'form' => $form->createView(), 'form' => $form->createView(),
'product' => $product, 'product' => $product,
'firstStart' => $layouterId!=""? 1: 0, 'firstStart' => $layouterId != '' ? 1 : 0,
'layouterId' => $layouterId, 'layouterId' => $layouterId,
'config' => $config, 'config' => $config,
'layout' => $shop->getLayout(), 'layout' => $shop->getLayout(),
'header' => $header, 'header' => $header,
'footer' => $footer, 'footer' => $footer,
]; ];
} }
#[Route('/update/{productId}', name: 'psc_plugin_formlayouter_update')] #[Route('/update/{productId}', name: 'psc_plugin_formlayouter_update')]
public function updateAction(Request $request, $productId) public function updateAction(Request $request, $productId)
{ {
$data = json_decode($request->getContent(), true); $data = json_decode($request->getContent(), true);
$session = new FormLayouter(); $session = new FormLayouter();
if($request->getSession()->has('formlayouter')) { if ($request->getSession()->has('formlayouter')) {
$session = $request->getSession()->get('formlayouter'); $session = $request->getSession()->get('formlayouter');
} }
@ -115,6 +127,6 @@ $footer = $twig->render('footer.html.twig');
$request->getSession()->set('formlayouter', $session); $request->getSession()->set('formlayouter', $session);
return new JsonResponse(['success' => true]); return new JsonResponse(['success' => true]);
} }
} }

View File

@ -1,12 +1,13 @@
<?php <?php
namespace Plugin\System\PSC\FormLayouter;
namespace Plugin\Custom\PSC\FormLayouter;
use PSC\System\PluginBundle\Plugin\Base; use PSC\System\PluginBundle\Plugin\Base;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin { class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
{
protected $name = 'Step Layouter'; protected $name = 'FormLayouter';
public function getType() public function getType()
{ {
@ -15,12 +16,11 @@ class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
public function getDescription() public function getDescription()
{ {
return 'Step Layouter'; return 'FormLayouter';
} }
public function getVersion() public function getVersion()
{ {
return 1; return 1;
} }
} }

View File

@ -0,0 +1,239 @@
<?php
/**
* PrintshopCreator Suite
*
* PHP Version 5.3
*
* @author Thomas Peterson <info@thomas-peterson.de>
* @copyright 2012-2013 PrintshopCreator GmbH
* @license Private
* @link http://www.printshopcreator.de
*/
namespace Plugin\Custom\PSC\FormLayouter\Renderer;
use Doctrine\ODM\MongoDB\DocumentManager;
use MongoDB\BSON\ObjectId;
use Plugin\Custom\PSC\FormLayouter\Model\Config;
use Plugin\Custom\PSC\FormLayouter\Model\Pdf\Site;
use PSC\Shop\MediaBundle\Document\Media;
class Pdf
{
/** @var Site */
private $site;
/** @var Config */
private $config;
private $pdflibLic;
private $options;
function __construct(DocumentManager $mongoDb, $pdflib_lic)
{
$this->mongoDb = $mongoDb;
$this->pdflibLic = $pdflib_lic;
}
public function setSite($site)
{
$this->site = $site;
}
public function renderStep($filename)
{
$p = new \PDFlib();
$p->set_option('errorpolicy=return');
$p->set_option('stringformat=utf8');
$p->set_parameter('license', $this->pdflibLic);
if ($p->begin_document($filename, '') == 0) {
die('Error: ' . $p->get_errmsg());
}
$p->set_option('topdown=true');
$p->set_option('usercoordinates=true');
$scale = 1;
if (strtolower($this->config->getPdf()->getUnit()) == 'mm') {
$scale = 2.83465;
} elseif (strtolower($this->config->getPdf()->getUnit()) == 'cm') {
$scale = 28.3465;
}
$p->begin_page_ext(
0,
0,
'width=' .
(($this->site->getWidth() + $this->site->getTrimLeft() + $this->site->getTrimRight()) * $scale) .
' height=' .
(($this->site->getHeight() + $this->site->getTrimTop() + $this->site->getTrimBottom()) * $scale) .
' trimbox={' .
($this->site->getTrimLeft() * $scale) .
' ' .
($this->site->getTrimTop() * $scale) .
' ' .
(($this->site->getWidth() + $this->site->getTrimLeft()) * $scale) .
' ' .
(($this->site->getHeight() + $this->site->getTrimTop()) * $scale) .
'}',
);
foreach ($this->site->getElements() as $element) {
$element->setScale($scale);
$element->setOptions($this->options);
$element->setMongoDb($this->mongoDb);
$element->setSite($this->site);
$element->renderPdf($p);
}
$p->end_page_ext('');
$p->end_document('');
}
public function renderPreviewPdf($sites, $filename)
{
$p = new \PDFlib();
$p->set_option('errorpolicy=return');
$p->set_option('stringformat=utf8');
$p->set_parameter('license', $this->pdflibLic);
if ($p->begin_document($filename, '') == 0) {
die('Error: ' . $p->get_errmsg());
}
$p->set_option('topdown=true');
$p->set_option('usercoordinates=true');
$scale = 1;
if (strtolower($this->config->getPdf()->getUnit()) == 'mm') {
$scale = 2.83465;
} elseif (strtolower($this->config->getPdf()->getUnit()) == 'cm') {
$scale = 28.3465;
}
foreach ($sites as $site) {
$p->begin_page_ext(
0,
0,
'width=' .
(($site->getWidth() + $site->getTrimLeft() + $site->getTrimRight()) * $scale) .
' height=' .
(($site->getHeight() + $site->getTrimTop() + $site->getTrimBottom()) * $scale) .
' trimbox={' .
($site->getTrimLeft() * $scale) .
' ' .
($site->getTrimTop() * $scale) .
' ' .
(($site->getWidth() + $site->getTrimLeft()) * $scale) .
' ' .
(($site->getHeight() + $site->getTrimTop()) * $scale) .
'}',
);
foreach ($site->getElements() as $element) {
if (!$element->isPreview())
continue;
$element->setScale($scale);
$element->setOptions($this->options);
$element->setMongoDb($this->mongoDb);
$element->setSite($site);
$element->renderPdf($p);
}
$p->end_page_ext('');
}
$p->end_document('');
}
public function renderPrintPdf($sites, $filename)
{
$p = new \PDFlib();
$p->set_option('errorpolicy=return');
$p->set_option('stringformat=utf8');
$p->set_parameter('license', $this->pdflibLic);
$p->set_info('Creator', 'PSC');
$p->set_info('Title', 'PDFX4');
if ($this->config->getPdf()->isPdfx4()) {
if ($p->begin_document($filename, 'pdfx=PDF/X-4') == 0) {
die('Error: ' . $p->get_errmsg());
}
/** @var Media $media */
$media = $this->mongoDb
->getRepository('PSC\Shop\MediaBundle\Document\Media')
->findOneBy(['_id' => new ObjectId($this->config->getPdf()->getIccProfile())]);
if ($p->load_iccprofile('/data/www/new/web' . $media->getUrl(), 'usage=outputintent') == 0) {
print 'Error: ' . $p->get_errmsg() . "\n";
print "See www.pdflib.com for output intent ICC profiles.\n";
$p->delete();
return 2;
}
} else {
if ($p->begin_document($filename, '') == 0) {
die('Error: ' . $p->get_errmsg());
}
}
$p->set_option('topdown=true');
$p->set_option('usercoordinates=true');
$scale = 1;
if (strtolower($this->config->getPdf()->getUnit()) == 'mm') {
$scale = 2.83465;
} elseif (strtolower($this->config->getPdf()->getUnit()) == 'cm') {
$scale = 28.3465;
}
foreach ($sites as $site) {
$p->begin_page_ext(
0,
0,
'width=' .
(($site->getWidth() + $site->getTrimLeft() + $site->getTrimRight()) * $scale) .
' height=' .
(($site->getHeight() + $site->getTrimTop() + $site->getTrimBottom()) * $scale) .
' trimbox={' .
($site->getTrimLeft() * $scale) .
' ' .
($site->getTrimTop() * $scale) .
' ' .
(($site->getWidth() + $site->getTrimLeft()) * $scale) .
' ' .
(($site->getHeight() + $site->getTrimTop()) * $scale) .
'}',
);
foreach ($site->getElements() as $element) {
if (!$element->isPrint())
continue;
$element->setScale($scale);
$element->setOptions($this->options);
$element->setMongoDb($this->mongoDb);
$element->setSite($site);
$element->renderPdf($p);
}
$p->end_page_ext('');
}
$p->end_document('');
}
/**
* @param Config $config
*/
public function setConfig($config)
{
$this->config = $config;
}
public function setOptions(array $options)
{
$this->options = $options;
}
}

View File

@ -0,0 +1,12 @@
psc_shop_plugin_custom_formlayouter_frontend:
resource: "@PluginCutomPSCFormLayouter/Controller"
type: annotation
prefix: /plugin/formlayouter/api
psc_shop_plugin_custom_formlayouter_backend:
resource: "@PluginCustomPSCFormLayouter/Controller/Backend"
type: annotation
prefix: /backend/plugin/formlayouter

View File

@ -5,27 +5,27 @@ services:
bind: bind:
$pdflib_lic: 'L900202-010091-135115-PPD3D2-EHE432' $pdflib_lic: 'L900202-010091-135115-PPD3D2-EHE432'
Plugin\System\PSC\FormLayouter\: Plugin\Custom\PSC\FormLayouter\:
resource: '../../*/*' resource: '../../*/*'
Plugin\System\PSC\FormLayouter\Form\Group\FormLayouter: Plugin\Custom\PSC\FormLayouter\Form\Group\FormLayouter:
tags: tags:
- { name: psc.backend.custom.groups } - { name: psc.backend.custom.groups }
psc.plugin.system.psc.theme.formlayouter.group.FormLayouterEditor: psc.plugin.system.psc.theme.formlayouter.group.FormLayouterEditor:
class: Plugin\System\PSC\FormLayouter\Form\Group\FormLayouterEditor class: Plugin\Custom\PSC\FormLayouter\Form\Group\FormLayouterEditor
tags: tags:
- { name: psc.backend.custom.groups, themeType: "bootstrap3" } - { name: psc.backend.custom.groups, themeType: "bootstrap3" }
Plugin\System\PSC\FormLayouter\Form\Field\BackendFields: Plugin\Custom\PSC\FormLayouter\Form\Field\BackendFields:
tags: tags:
- { name: psc.backend.custom.fields } - { name: psc.backend.custom.fields }
Plugin\System\PSC\FormLayouter\Form\FormDesigner: Plugin\Custom\PSC\FormLayouter\Form\FormDesigner:
tags: tags:
- { name: form.type } - { name: form.type }
psc.plugin.system.psc.theme.formlayouter.field.enable_checkbox: psc.plugin.system.psc.theme.formlayouter.field.enable_checkbox:
class: Plugin\System\PSC\FormLayouter\Form\Field\EnableEditor class: Plugin\Custom\PSC\FormLayouter\Form\Field\EnableEditor
tags: tags:
- { name: psc.backend.custom.fields, themeType: "bootstrap3" } - { name: psc.backend.custom.fields, themeType: "bootstrap3" }

View File

@ -1,4 +1,5 @@
<?php <?php
/** /**
* PrintshopCreator Suite * PrintshopCreator Suite
* *
@ -9,15 +10,15 @@
* @license Private * @license Private
* @link http://www.printshopcreator.de * @link http://www.printshopcreator.de
*/ */
namespace Plugin\System\PSC\FormLayouter\Service; namespace Plugin\Custom\PSC\FormLayouter\Service;
use Plugin\System\PSC\FormLayouter\Model\Config; use Plugin\Custom\PSC\FormLayouter\Model\Config;
use Plugin\System\PSC\FormLayouter\Model\Pdf\Site; use Plugin\Custom\PSC\FormLayouter\Model\Pdf\Site;
use Plugin\System\PSC\FormLayouter\Model\Steps\Step; use Plugin\Custom\PSC\FormLayouter\Model\Steps\Step;
use Plugin\System\PSC\FormLayouter\Parser\Parser; use Plugin\Custom\PSC\FormLayouter\Parser\Parser;
class Layouter {
class Layouter
{
/** @var Step[] */ /** @var Step[] */
private $steps = []; private $steps = [];
@ -29,26 +30,25 @@ class Layouter {
public function setXml($xml) public function setXml($xml)
{ {
$parser = new Parser(); $parser = new Parser();
$parser->loadXml($xml); $parser->loadXml($xml);
$this->steps = $parser->parseStep(); $this->steps = $parser->parseStep();
$this->sites = $parser->parseSites(); $this->sites = $parser->parseSites();
$this->config = $parser->parseConfig(); $this->config = $parser->parseConfig();
} }
public function getStep($stepNum = 0) public function getStep($stepNum = 0)
{ {
foreach($this->steps as $step) { foreach ($this->steps as $step) {
if($stepNum == $step->getId()) return $step; if ($stepNum == $step->getId())
return $step;
} }
} }
public function getSite($site = 1) public function getSite($site = 1)
{ {
return $this->sites[$site-1]; return $this->sites[$site - 1];
} }
/** /**
@ -67,3 +67,4 @@ class Layouter {
return $this->sites; return $this->sites;
} }
} }

View File

@ -1,4 +1,5 @@
<?php <?php
/** /**
* PrintshopCreator Suite * PrintshopCreator Suite
* *
@ -9,12 +10,11 @@
* @license Private * @license Private
* @link http://www.printshopcreator.de * @link http://www.printshopcreator.de
*/ */
namespace Plugin\System\PSC\FormLayouter\Session; namespace Plugin\Custom\PSC\FormLayouter\Session;
class FormLayouter implements \Serializable class FormLayouter implements \Serializable
{ {
protected $options = [];
protected $options = array();
protected $actualStep = 0; protected $actualStep = 0;
@ -24,14 +24,13 @@ class FormLayouter implements \Serializable
* @return string the string representation of the object or null * @return string the string representation of the object or null
* @since 5.1.0 * @since 5.1.0
*/ */
#[\Override]
public function serialize() public function serialize()
{ {
return serialize( return serialize([
[
$this->options, $this->options,
$this->actualStep $this->actualStep,
] ]);
);
} }
/** /**
@ -43,12 +42,13 @@ class FormLayouter implements \Serializable
* @return void * @return void
* @since 5.1.0 * @since 5.1.0
*/ */
#[\Override]
public function unserialize($serialized) public function unserialize($serialized)
{ {
$data = unserialize($serialized); $data = unserialize($serialized);
list( list(
$this->options, $this->options,
$this->actualStep $this->actualStep,
) = $data; ) = $data;
} }
@ -58,8 +58,8 @@ class FormLayouter implements \Serializable
*/ */
public function getOptions($articleUUID) public function getOptions($articleUUID)
{ {
if(!isset($this->options[$articleUUID])) { if (!isset($this->options[$articleUUID])) {
return array(); return [];
} }
return $this->options[$articleUUID]; return $this->options[$articleUUID];
} }
@ -90,7 +90,7 @@ class FormLayouter implements \Serializable
public function hasOption($articleUUID, $option) public function hasOption($articleUUID, $option)
{ {
if(!isset($this->options[$articleUUID])) { if (!isset($this->options[$articleUUID])) {
return false; return false;
} }
@ -106,7 +106,7 @@ class FormLayouter implements \Serializable
{ {
return [ return [
$this->options, $this->options,
$this->actualStep $this->actualStep,
]; ];
} }
@ -116,3 +116,4 @@ class FormLayouter implements \Serializable
$this->actualStep = $data[1]; $this->actualStep = $data[1];
} }
} }

View File

@ -1,17 +1,18 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter\Controller;
namespace Plugin\Custom\PSC\HPLayouter\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
#[Route("/authorize")] #[Route('/authorize')]
class AuthorizeController extends AbstractController class AuthorizeController extends AbstractController
{ {
#[Route('/', name: 'psc_plugin_hplayouter_authorize')]
#[Route("/", name: 'psc_plugin_hplayouter_authorize')]
public function indexAction(Request $request) public function indexAction(Request $request)
{ {
die("TEST"); die('TEST');
} }
} }

View File

@ -1,81 +1,79 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter\Controller;
namespace Plugin\Custom\PSC\HPLayouter\Controller;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface;
#[Route("/service")] #[Route('/service')]
class ServiceController extends AbstractController class ServiceController extends AbstractController
{ {
protected static $key = "p489r7nwpefsnfp0"; protected static $key = 'p489r7nwpefsnfp0';
#[Route("/user_info", name: 'psc_plugin_hplayouter_service_userinfo')] #[Route('/user_info', name: 'psc_plugin_hplayouter_service_userinfo')]
public function userInfoAction(Request $request, EntityManagerInterface $entityManager): string public function userInfoAction(Request $request, EntityManagerInterface $entityManager): string
{ {
$settings = $this->getSettings(); $settings = $this->getSettings();
$user_id = 1; $user_id = 1;
if(isset($settings['USERID'])) { if (isset($settings['USERID'])) {
/** @var Contact $contact */ /** @var Contact $contact */
$contact = $entityManager $contact = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Contact')->findOneBy(['uid' => $settings['USERID']]); ->getRepository('PSC\Shop\EntityBundle\Entity\Contact')
->findOneBy(['uid' => $settings['USERID']]);
$user_info = array('id' => $contact->getId(), 'name' => $contact->getEmail()); $user_info = ['id' => $contact->getId(), 'name' => $contact->getEmail()];
}else{ } else {
$user_info = array('id' => 0, 'name' => "anonymous"); $user_info = ['id' => 0, 'name' => 'anonymous'];
} }
echo json_encode($user_info); echo json_encode($user_info);
exit; exit();
} }
#[Route("/projects", name: 'psc_plugin_hplayouter_service_projects')] #[Route('/projects', name: 'psc_plugin_hplayouter_service_projects')]
public function projectsAction(Request $request, EntityManagerInterface $entityManager): string public function projectsAction(Request $request, EntityManagerInterface $entityManager): string
{ {
$h = fopen('services.txt', 'a'); $h = fopen('services.txt', 'a');
fwrite($h, "\n\n\n\r**************************************************************************************\n"); fwrite($h, "\n\n\n\r**************************************************************************************\n");
fwrite($h, "\r****** Date time: ".(date('Y-m-d H:i:s'))." ******\n"); fwrite($h, "\r****** Date time: " . date('Y-m-d H:i:s') . " ******\n");
fwrite($h, "\r****** METHOD GET ***** REQUEST /projects ***** FILE services.php ******\n"); fwrite($h, "\r****** METHOD GET ***** REQUEST /projects ***** FILE services.php ******\n");
fwrite($h, "****** IP: ".$_SERVER['REMOTE_ADDR']." ******\n"); fwrite($h, '****** IP: ' . $_SERVER['REMOTE_ADDR'] . " ******\n");
fwrite($h, "****** HEADERS: ******\n\n"); fwrite($h, "****** HEADERS: ******\n\n");
fwrite($h, "****** METHOD: ******".$request->getMethod()."\n\n"); fwrite($h, '****** METHOD: ******' . $request->getMethod() . "\n\n");
$settings = $this->getSettings(); $settings = $this->getSettings();
fwrite($h, "****** SETTINGS: ******".json_encode($settings)."\n\n"); fwrite($h, '****** SETTINGS: ******' . json_encode($settings) . "\n\n");
$data = []; $data = [];
if($request->isMethod('GET')) { if ($request->isMethod('GET')) {
$repo = $entityManager->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata'); $repo = $entityManager->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata');
/** @var QueryBuilder $qb */ /** @var QueryBuilder $qb */
$qb = $repo->createQueryBuilder('l'); $qb = $repo->createQueryBuilder('l');
$data = []; $data = [];
if(isset($settings['ARTID']) && isset($settings['USERID'])) { if (isset($settings['ARTID'], $settings['USERID'])) {
$qb->andWhere($qb->expr()->orX( $qb->andWhere($qb->expr()->orX($qb->expr()->eq('l.uuid', '?1'), $qb->expr()->eq('l.datatable', '?2')));
$qb->expr()->eq('l.uuid', '?1'),
$qb->expr()->eq('l.datatable', '?2')
));
$qb->setParameter('1', $settings['ARTID']); $qb->setParameter('1', $settings['ARTID']);
$qb->setParameter('2', $settings['USERID']); $qb->setParameter('2', $settings['USERID']);
$query = $qb->getQuery(); $query = $qb->getQuery();
$data = $query->execute(); $data = $query->execute();
} elseif (isset($settings['USERID'])) {
}elseif(isset($settings['USERID'])) {
$qb->andWhere($qb->expr()->eq('l.datatable', '?1')); $qb->andWhere($qb->expr()->eq('l.datatable', '?1'));
$qb->setParameter('1', $settings['USERID']); $qb->setParameter('1', $settings['USERID']);
$query = $qb->getQuery(); $query = $qb->getQuery();
$data = $query->execute(); $data = $query->execute();
}elseif(isset($settings['ARTID'])) { } elseif (isset($settings['ARTID'])) {
$qb->andWhere($qb->expr()->eq('l.uuid', '?1')); $qb->andWhere($qb->expr()->eq('l.uuid', '?1'));
$qb->setParameter('1', $settings['ARTID']); $qb->setParameter('1', $settings['ARTID']);
@ -85,29 +83,24 @@ class ServiceController extends AbstractController
$temp = []; $temp = [];
foreach($data as $row) { foreach ($data as $row) {
$t = $row->getDesign(); $t = $row->getDesign();
$t['id'] = $row->getUid(); $t['id'] = $row->getUid();
$temp[] = $t; $temp[] = $t;
} }
fwrite($h, "****** New: ******".json_encode($temp)."\n\n"); fwrite($h, '****** New: ******' . json_encode($temp) . "\n\n");
echo json_encode($temp); echo json_encode($temp);
} elseif ($request->isMethod('POST')) {
fwrite($h, '****** Name: ******' . $request->get('name') . "\n\n");
}elseif($request->isMethod('POST')) {
fwrite($h, "****** Name: ******".$request->get('name')."\n\n");
$temp = [ $temp = [
'name' => $request->get('name'), 'name' => $request->get('name'),
'articleId' => $settings['UUID'], 'articleId' => $settings['UUID'],
'path' => $request->get('path'), 'path' => $request->get('path'),
'content_context_token' => $request->get('content_context_token'), 'content_context_token' => $request->get('content_context_token'),
'state' => 'EDITING' 'state' => 'EDITING',
]; ];
fwrite($h, "****** New: ******\n\n"); fwrite($h, "****** New: ******\n\n");
@ -115,11 +108,11 @@ class ServiceController extends AbstractController
$layoutDesignData->setArticleUuid($settings['UUID']); $layoutDesignData->setArticleUuid($settings['UUID']);
if(isset($settings['ARTID'])) { if (isset($settings['ARTID'])) {
$layoutDesignData->setUuid($settings['ARTID']); $layoutDesignData->setUuid($settings['ARTID']);
} }
if(isset($settings['USERID'])) { if (isset($settings['USERID'])) {
$layoutDesignData->setDatatable($settings['USERID']); $layoutDesignData->setDatatable($settings['USERID']);
} }
@ -132,62 +125,63 @@ class ServiceController extends AbstractController
$temp['id'] = $layoutDesignData->getUID(); $temp['id'] = $layoutDesignData->getUID();
fwrite($h, "****** New: ******".json_encode($temp)."\n\n"); fwrite($h, '****** New: ******' . json_encode($temp) . "\n\n");
echo json_encode($temp); echo json_encode($temp);
} }
exit; exit();
} }
#[Route("/projects/{id}", name: 'psc_plugin_hplayouter_service_projects_id')] #[Route('/projects/{id}', name: 'psc_plugin_hplayouter_service_projects_id')]
public function projectSaveAction(Request $request, EntityManagerInterface $entityManager, SessionInterface $session, $id): string public function projectSaveAction(
{ Request $request,
EntityManagerInterface $entityManager,
SessionInterface $session,
$id,
): string {
$h = fopen('services.txt', 'a'); $h = fopen('services.txt', 'a');
fwrite($h, "\n\n\n\r**************************************************************************************\n"); fwrite($h, "\n\n\n\r**************************************************************************************\n");
fwrite($h, "\r****** Date time: ".(date('Y-m-d H:i:s'))." ******\n"); fwrite($h, "\r****** Date time: " . date('Y-m-d H:i:s') . " ******\n");
fwrite($h, "\r****** METHOD GET ***** REQUEST /projectsave ***** FILE services.php ******\n"); fwrite($h, "\r****** METHOD GET ***** REQUEST /projectsave ***** FILE services.php ******\n");
fwrite($h, "****** IP: ".$_SERVER['REMOTE_ADDR']." ******\n"); fwrite($h, '****** IP: ' . $_SERVER['REMOTE_ADDR'] . " ******\n");
fwrite($h, "****** HEADERS: ******\n\n"); fwrite($h, "****** HEADERS: ******\n\n");
fwrite($h, "****** METHOD: ******".$request->getMethod()."\n\n"); fwrite($h, '****** METHOD: ******' . $request->getMethod() . "\n\n");
$settings = $this->getSettings(); $settings = $this->getSettings();
$data = []; $data = [];
if($request->isMethod('GET')) { if ($request->isMethod('GET')) {
/** @var Layoutdesigndata $layoutDesignData */ /** @var Layoutdesigndata $layoutDesignData */
$layoutDesignData = $entityManager $layoutDesignData = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')->findOneBy(array('uid' => $id)); ->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')
->findOneBy(['uid' => $id]);
if($layoutDesignData) { if ($layoutDesignData) {
echo json_encode($layoutDesignData->getDesign()); echo json_encode($layoutDesignData->getDesign());
}else{ } else {
echo json_encode(array()); echo json_encode([]);
} }
} elseif ($request->isMethod('PUT')) {
}elseif($request->isMethod('PUT')) {
/** @var Layoutdesigndata $layoutDesignData */ /** @var Layoutdesigndata $layoutDesignData */
$layoutDesignData = $entityManager $layoutDesignData = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')->findOneBy(array('uid' => $id)); ->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')
->findOneBy(['uid' => $id]);
$temp = [ $temp = [
'id' => $id, 'id' => $id,
'name' => $request->get('name'), 'name' => $request->get('name'),
'path' => $request->get('path'), 'path' => $request->get('path'),
'content_context_token' => $request->get('content_context_token') 'content_context_token' => $request->get('content_context_token'),
]; ];
if(isset($settings['ARTID'])) { if (isset($settings['ARTID'])) {
$layoutDesignData->setUuid($settings['ARTID']); $layoutDesignData->setUuid($settings['ARTID']);
} }
if(isset($settings['USERID'])) { if (isset($settings['USERID'])) {
$layoutDesignData->setDatatable($settings['USERID']); $layoutDesignData->setDatatable($settings['USERID']);
} }
@ -199,57 +193,62 @@ class ServiceController extends AbstractController
echo json_encode($temp); echo json_encode($temp);
} }
exit; exit();
} }
#[Route("/projects/{id}/add_to_cart", name: 'psc_plugin_hplayouter_service_project_addcard')] #[Route('/projects/{id}/add_to_cart', name: 'psc_plugin_hplayouter_service_project_addcard')]
public function addCardAction(Request $request, EntityManagerInterface $entityManager, string $id): void public function addCardAction(Request $request, EntityManagerInterface $entityManager, string $id): void
{ {
$h = fopen('services.txt', 'a'); $h = fopen('services.txt', 'a');
fwrite($h, "\n\n\n\r**************************************************************************************\n"); fwrite($h, "\n\n\n\r**************************************************************************************\n");
fwrite($h, "\r****** Date time: ".(date('Y-m-d H:i:s'))." ******\n"); fwrite($h, "\r****** Date time: " . date('Y-m-d H:i:s') . " ******\n");
fwrite($h, "\r****** METHOD GET ***** REQUEST /addcard ***** FILE services.php ******\n"); fwrite($h, "\r****** METHOD GET ***** REQUEST /addcard ***** FILE services.php ******\n");
fwrite($h, "****** IP: ".$_SERVER['REMOTE_ADDR']." ******\n"); fwrite($h, '****** IP: ' . $_SERVER['REMOTE_ADDR'] . " ******\n");
fwrite($h, "****** HEADERS: ******\n\n"); fwrite($h, "****** HEADERS: ******\n\n");
fwrite($h, "****** METHOD: ******".$request->getMethod()."\n\n"); fwrite($h, '****** METHOD: ******' . $request->getMethod() . "\n\n");
/** @var Layoutdesigndata $layoutDesignData */ /** @var Layoutdesigndata $layoutDesignData */
$layoutDesignData = $entityManager $layoutDesignData = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')->findOneBy(array('uid' => $id)); ->getRepository('PSC\Shop\EntityBundle\Entity\Layoutdesigndata')
->findOneBy(['uid' => $id]);
$json = file_get_contents('https://store.hpwallart.com/huelswitt/projects/' . $id);
$json = file_get_contents('https://store.hpwallart.com/huelswitt/projects/'.$id); fwrite($h, '****** JSON: ******' . $json . "\n\n");
fwrite($h, "****** JSON: ******".$json."\n\n");
$decode = json_decode($json, true); $decode = json_decode($json, true);
fwrite($h, "****** METHOD: ******".print_r($decode,true)."\n\n"); fwrite($h, '****** METHOD: ******' . print_r($decode, true) . "\n\n");
$price = 0; $price = 0;
if(isset($decode['price']['base']['price'])) { if (isset($decode['price']['base']['price'])) {
$price = $price + $decode['price']['base']['price']; $price = $price + $decode['price']['base']['price'];
} }
if(isset($decode['price']['fotolia']['price'])) { if (isset($decode['price']['fotolia']['price'])) {
$price = $price + $decode['price']['fotolia']['price']; $price = $price + $decode['price']['fotolia']['price'];
} }
if(isset($decode['price']['pattern_design']['price'])) { if (isset($decode['price']['pattern_design']['price'])) {
$price = $price + $decode['price']['pattern_design']['price']; $price = $price + $decode['price']['pattern_design']['price'];
} }
header('location: /service/steplayouter/savenewlayouter/format/json?modus=8&uuid='.$layoutDesignData->getArticleUuid().'&project_id='.$id.'&hplayouter_price='.$price); header('location: /service/steplayouter/savenewlayouter/format/json?modus=8&uuid=' .
$layoutDesignData->getArticleUuid() .
'&project_id=' .
$id .
'&hplayouter_price=' .
$price);
exit; exit();
} }
protected function getSettings(): array
protected function getSettings(): array { {
$headers = $this->getAllHeadersJorge(); $headers = $this->getAllHeadersJorge();
return $this->decrypt($headers['X-Auth-Token']); return $this->decrypt($headers['X-Auth-Token']);
} }
protected function decrypt( $enc ): array { protected function decrypt($enc): array
{
$str = base64_decode(str_replace("PLUS", "+", $enc)); $str = base64_decode(str_replace('PLUS', '+', $enc));
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
@ -260,18 +259,14 @@ class ServiceController extends AbstractController
protected function getAllHeadersJorge(): array protected function getAllHeadersJorge(): array
{ {
$returnArr = array(); $returnArr = [];
//JORGE //JORGE
foreach ($_SERVER AS $key => $value) { foreach ($_SERVER as $key => $value) {
$key = preg_replace('/^HTTP_/i', '', $key); $key = preg_replace('/^HTTP_/i', '', $key);
$key = str_replace('REDIRECT_', '', $key); $key = str_replace('REDIRECT_', '', $key);
$key = str_replace('Redirect-', '', $key); $key = str_replace('Redirect-', '', $key);
$key = str_replace( $key = str_replace(' ', '-', ucwords(strtolower(str_replace(['-', '_'], ' ', $key))));
" ",
"-",
ucwords(strtolower(str_replace(array("-", "_"), " ", $key)))
);
$returnArr[$key] = $value; $returnArr[$key] = $value;
} }
ksort($returnArr); ksort($returnArr);
@ -279,3 +274,4 @@ class ServiceController extends AbstractController
return $returnArr; return $returnArr;
} }
} }

View File

@ -1,5 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter\Document;
namespace Plugin\Custom\PSC\HPLayouter\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbeddedDocument; use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbeddedDocument;
use Doctrine\ODM\MongoDB\Mapping\Annotations\Field; use Doctrine\ODM\MongoDB\Mapping\Annotations\Field;
@ -28,5 +29,5 @@ class Render
{ {
$this->urlIdentifier = $urlIdentifier; $this->urlIdentifier = $urlIdentifier;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter\Form\Field; namespace Plugin\Custom\PSC\HPLayouter\Form\Field;
use Plugin\System\PSC\HPLayouter\Form\Group\HPLayouter; use Plugin\System\PSC\HPLayouter\Form\Group\HPLayouter;
use PSC\Shop\EntityBundle\Entity\Cms; use PSC\Shop\EntityBundle\Entity\Cms;
@ -14,7 +14,6 @@ use Symfony\Component\HttpFoundation\File\UploadedFile;
class EnableCheckbox implements Field class EnableCheckbox implements Field
{ {
public function getTemplate() public function getTemplate()
{ {
return '@PluginSystemPSCHPLayouter/form/field/enable_checkbox.html.twig'; return '@PluginSystemPSCHPLayouter/form/field/enable_checkbox.html.twig';
@ -30,16 +29,14 @@ class EnableCheckbox implements Field
*/ */
public function formPreSubmit(FormEvent $event) public function formPreSubmit(FormEvent $event)
{ {
} }
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$builder->add('hplayouter', CheckboxType::class, array( $builder->add('hplayouter', CheckboxType::class, [
'label' => 'HP Layouter aktivieren', 'label' => 'HP Layouter aktivieren',
'required' => false 'required' => false,
)); ]);
return $builder; return $builder;
} }
@ -64,3 +61,4 @@ class EnableCheckbox implements Field
// TODO: Implement formPreSetData() method. // TODO: Implement formPreSetData() method.
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter\Form\Group; namespace Plugin\Custom\PSC\HPLayouter\Form\Group;
use PSC\Shop\EntityBundle\Entity\Cms; use PSC\Shop\EntityBundle\Entity\Cms;
use PSC\System\PluginBundle\Form\Group; use PSC\System\PluginBundle\Form\Group;
@ -29,3 +29,4 @@ class HPLayouter extends Group
return self::GROUP_ID; return self::GROUP_ID;
} }
} }

View File

@ -1,11 +1,12 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter;
namespace Plugin\Custom\PSC\HPLayouter;
use PSC\System\PluginBundle\Plugin\Base; use PSC\System\PluginBundle\Plugin\Base;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin { class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
{
protected $name = 'HP Layouter Module'; protected $name = 'HP Layouter Module';
public function getType() public function getType()
@ -22,6 +23,5 @@ class Plugin extends Base implements \PSC\System\PluginBundle\Interfaces\Plugin
{ {
return 1; return 1;
} }
} }

View File

@ -1,5 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\HPLayouter\Queue;
namespace Plugin\Custom\PSC\HPLayouter\Queue;
use Doctrine\Bundle\MongoDBBundle\ManagerRegistry; use Doctrine\Bundle\MongoDBBundle\ManagerRegistry;
use Doctrine\ODM\MongoDB\DocumentManager; use Doctrine\ODM\MongoDB\DocumentManager;
@ -30,8 +31,11 @@ class Render implements QueueInterface, ConfigurableElementInterface
private $_doctrine_mongodb = null; private $_doctrine_mongodb = null;
private $_error = null; private $_error = null;
function __construct(FormFactoryInterface $formFactory, EntityManagerInterface $entityManager, DocumentManager $doctrine_mongodb) function __construct(
{ FormFactoryInterface $formFactory,
EntityManagerInterface $entityManager,
DocumentManager $doctrine_mongodb,
) {
$this->_formFactory = $formFactory; $this->_formFactory = $formFactory;
$this->_entityManager = $entityManager; $this->_entityManager = $entityManager;
$this->_doctrine_mongodb = $doctrine_mongodb; $this->_doctrine_mongodb = $doctrine_mongodb;
@ -62,7 +66,10 @@ class Render implements QueueInterface, ConfigurableElementInterface
public function getForm(FormBuilderInterface $builder, $form_options, EventInterface $event) public function getForm(FormBuilderInterface $builder, $form_options, EventInterface $event)
{ {
$builder->add("urlIdentifier", TextType::class, array('label' => 'Url Identifier', 'attr' => array('class' => 'form-element'))); $builder->add('urlIdentifier', TextType::class, [
'label' => 'Url Identifier',
'attr' => ['class' => 'form-element'],
]);
} }
public function injectDocument(Form $form, EventInterface $event, Queue $objQueue) public function injectDocument(Form $form, EventInterface $event, Queue $objQueue)
@ -88,51 +95,49 @@ class Render implements QueueInterface, ConfigurableElementInterface
* @return bool * @return bool
* @internal param Queue $doc * @internal param Queue $doc
*/ */
public function execute(EventInterface $event, Queue $queue) { public function execute(EventInterface $event, Queue $queue)
{
/** @var \Plugin\System\PSC\HPLayouter\Document\Render $render */ /** @var \Plugin\System\PSC\HPLayouter\Document\Render $render */
$render = $queue->getQueueDocument(); $render = $queue->getQueueDocument();
$eventDoc = $queue->getEventDocument(); $eventDoc = $queue->getEventDocument();
$orderRepo = $this->_entityManager->getRepository('PSC\Shop\EntityBundle\Entity\Order'); $orderRepo = $this->_entityManager->getRepository('PSC\Shop\EntityBundle\Entity\Order');
/** @var \PSC\Shop\EntityBundle\Entity\Order $order */ /** @var \PSC\Shop\EntityBundle\Entity\Order $order */
$order = $orderRepo->findOneBy(array('uuid' => $event->getOrder())); $order = $orderRepo->findOneBy(['uuid' => $event->getOrder()]);
/** @var Orderpos $position */ /** @var Orderpos $position */
foreach($order->getPositions() as $position) { foreach ($order->getPositions() as $position) {
if ($position->getLayouterMode() == 8) {
if($position->getLayouterMode() == 8) {
/** @var Position $objDoc */ /** @var Position $objDoc */
$objDoc = $this->_doctrine_mongodb $objDoc = $this->_doctrine_mongodb
->getRepository('PSCEntityBundle:Position') ->getRepository('PSCEntityBundle:Position')
->findOneByUid((string)$position->getId()); ->findOneByUid((string) $position->getId());
$body = json_encode([
$body = json_encode(array( 'job_id' => $position->getUuid(),
"job_id" => $position->getUuid(), 'barcode_text' => 'test',
"barcode_text" => "test", 'callback_url' => '',
"callback_url" => "" ]);
)); $url =
$url = "https://store.hpwallart.com/".$render->getUrlIdentifier()."/projects/".$objDoc->getTemplatePrintId()."/trigger_rendering"; 'https://store.hpwallart.com/' .
$render->getUrlIdentifier() .
'/projects/' .
$objDoc->getTemplatePrintId() .
'/trigger_rendering';
$client = new Client([ $client = new Client([
'headers' => [ 'Content-Type' => 'application/json' ] 'headers' => ['Content-Type' => 'application/json'],
]); ]);
try { try {
$response = $client->post($url, $response = $client->post($url, ['body' => $body]);
['body' => $body] } catch (\Exception $e) {
);
}catch (\Exception $e) {
$this->_error = $e->getMessage(); $this->_error = $e->getMessage();
return false; return false;
} }
} }
} }
return true; return true;
} }
@ -141,3 +146,4 @@ class Render implements QueueInterface, ConfigurableElementInterface
return $this->_error; return $this->_error;
} }
} }

View File

@ -0,0 +1,6 @@
psc_shop_plugin_hplayouter:
resource: "@PluginCustomPSCHPLayouter/Controller"
type: annotation
prefix: /plugin/custom/psc/hplayouter

View File

@ -3,17 +3,17 @@ services:
autowire: true autowire: true
autoconfigure: true autoconfigure: true
Plugin\System\PSC\HPLayouter\: Plugin\Custom\PSC\HPLayouter\:
resource: '../../*/*' resource: '../../*/*'
Plugin\System\PSC\HPLayouter\Form\Group\HPLayouter: Plugin\Custom\PSC\HPLayouter\Form\Group\HPLayouter:
tags: tags:
- { name: psc.backend.custom.groups } - { name: psc.backend.custom.groups }
Plugin\System\PSC\HPLayouter\Form\Field\EnableCheckbox: Plugin\Custom\PSC\HPLayouter\Form\Field\EnableCheckbox:
tags: tags:
- { name: psc.backend.custom.fields } - { name: psc.backend.custom.fields }
Plugin\System\PSC\HPLayouter\Queue\Render: Plugin\Custom\PSC\HPLayouter\Queue\Render:
tags: tags:
- { name: queues } - { name: queues }

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Plugin\System\PSC\SecuPay\Api; namespace Plugin\Custom\PSC\SecuPay\Api;
use PSC\System\SettingsBundle\Service\Shop; use PSC\System\SettingsBundle\Service\Shop;
use Symfony\Component\Mime\Part\Multipart\FormDataPart; use Symfony\Component\Mime\Part\Multipart\FormDataPart;
@ -19,9 +19,9 @@ class Base
protected HttpClientInterface $client; protected HttpClientInterface $client;
public $isProduction = false; public $isProduction = false;
public $client_id = ""; public $client_id = '';
public $client_secret = ""; public $client_secret = '';
public $contract_id = ""; public $contract_id = '';
public function __construct(HttpClientInterface $client) public function __construct(HttpClientInterface $client)
{ {
@ -39,11 +39,10 @@ class Base
{ {
return [ return [
'Accept' => 'application/json', 'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $token 'Authorization' => 'Bearer ' . $token,
]; ];
} }
protected function generateToken(): array protected function generateToken(): array
{ {
$baseUrl = $this->baseUrlTest; $baseUrl = $this->baseUrlTest;
@ -52,13 +51,11 @@ class Base
} }
$response = $this->client->request('POST', $baseUrl . 'oauth/token', [ $response = $this->client->request('POST', $baseUrl . 'oauth/token', [
'headers' => 'headers' => $this->buildHeaders(),
$this->buildHeaders()
,
'json' => [ 'json' => [
'grant_type' => 'client_credentials', 'grant_type' => 'client_credentials',
'client_id' => $this->client_id, 'client_id' => $this->client_id,
'client_secret' => $this->client_secret 'client_secret' => $this->client_secret,
], ],
]); ]);

Some files were not shown because too many files have changed in this diff Show More