Fixes
This commit is contained in:
parent
532248c01b
commit
3c3c642042
@ -64,6 +64,11 @@ server {
|
|||||||
try_files $uri @sfFront;
|
try_files $uri @sfFront;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# location /w2p/ {
|
||||||
|
# proxy_pass http://tp:8080/w2p/;
|
||||||
|
# proxy_temp_path /tmp/proxy;
|
||||||
|
#}
|
||||||
|
|
||||||
location @sfFront { # Symfony
|
location @sfFront { # Symfony
|
||||||
if ($request_method = 'OPTIONS') {
|
if ($request_method = 'OPTIONS') {
|
||||||
add_header 'Access-Control-Allow-Origin' '*';
|
add_header 'Access-Control-Allow-Origin' '*';
|
||||||
|
|||||||
@ -25,6 +25,12 @@
|
|||||||
"@symfony/ux-live-component/dist/live.min.css": true
|
"@symfony/ux-live-component/dist/live.min.css": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"@symfony/ux-vue": {
|
||||||
|
"vue": {
|
||||||
|
"enabled": true,
|
||||||
|
"fetch": "eager"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"entrypoints": []
|
"entrypoints": []
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import { initTabs } from 'david-ai';
|
|||||||
|
|
||||||
// Initialize tabs functionality
|
// Initialize tabs functionality
|
||||||
initTabs();
|
initTabs();
|
||||||
|
import { registerVueControllerComponents } from '@symfony/ux-vue';
|
||||||
|
registerVueControllerComponents()
|
||||||
import { startStimulusApp } from '@symfony/stimulus-bundle';
|
import { startStimulusApp } from '@symfony/stimulus-bundle';
|
||||||
const app = startStimulusApp();
|
const app = startStimulusApp();
|
||||||
Alpine.plugin(persist)
|
Alpine.plugin(persist)
|
||||||
|
|||||||
41
src/new/assets/vue/controllers/PackageSearch.js
Normal file
41
src/new/assets/vue/controllers/PackageSearch.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/**
|
||||||
|
| Single-File Components - e.g. PackageSearch.vue -
|
||||||
|
| are supported when using Webpack Encore.
|
||||||
|
*/
|
||||||
|
import { ref, computed } from 'vue';
|
||||||
|
import PackageList from "./components/PackageList.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
PackageList
|
||||||
|
},
|
||||||
|
props: ['news'],
|
||||||
|
setup(props) {
|
||||||
|
const search = ref('');
|
||||||
|
|
||||||
|
const filteredPackages = computed(() => {
|
||||||
|
return props.packages.filter(
|
||||||
|
uxPackage => uxPackage.humanName.toLowerCase().includes(search.value.toLowerCase())
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
search,
|
||||||
|
filteredPackages
|
||||||
|
}
|
||||||
|
},
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
v-model="search"
|
||||||
|
class="form-control"
|
||||||
|
type="search"
|
||||||
|
placeholder="This search is built in Vue.js!"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div class="mt-3">
|
||||||
|
PackageList
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
};
|
||||||
21
src/new/assets/vue/controllers/components/PackageList.js
Normal file
21
src/new/assets/vue/controllers/components/PackageList.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
export default {
|
||||||
|
props: ['packages'],
|
||||||
|
template: `
|
||||||
|
<div v-if="packages.length === 0">
|
||||||
|
No packages found. Sad trombone...
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-else class="PackageList">
|
||||||
|
|
||||||
|
<div v-for="package in packages" class="PackageListItem">
|
||||||
|
<div class="PackageListItem__icon" :style="{'--gradient': package.gradient}">
|
||||||
|
<img :src="package.imageUrl" :alt="package.humanName">
|
||||||
|
</div>
|
||||||
|
<h4 class="PackageListItem__label">
|
||||||
|
<a :href="package.url">{{ package.humanName }}</a>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
};
|
||||||
@ -94,6 +94,7 @@
|
|||||||
"symfony/ux-chartjs": "^2.19",
|
"symfony/ux-chartjs": "^2.19",
|
||||||
"symfony/ux-live-component": "^2.12",
|
"symfony/ux-live-component": "^2.12",
|
||||||
"symfony/ux-twig-component": "^2.12",
|
"symfony/ux-twig-component": "^2.12",
|
||||||
|
"symfony/ux-vue": "^2.23",
|
||||||
"symfony/validator": "*",
|
"symfony/validator": "*",
|
||||||
"symfony/web-link": "*",
|
"symfony/web-link": "*",
|
||||||
"symfony/yaml": "*",
|
"symfony/yaml": "*",
|
||||||
|
|||||||
554
src/new/composer.lock
generated
554
src/new/composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -62,5 +62,6 @@ return [
|
|||||||
Symfony\UX\Chartjs\ChartjsBundle::class => ['all' => true],
|
Symfony\UX\Chartjs\ChartjsBundle::class => ['all' => true],
|
||||||
Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true],
|
Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle::class => ['all' => true],
|
||||||
Symfonycasts\SassBundle\SymfonycastsSassBundle::class => ['all' => true],
|
Symfonycasts\SassBundle\SymfonycastsSassBundle::class => ['all' => true],
|
||||||
Dunglas\DoctrineJsonOdm\Bundle\DunglasDoctrineJsonOdmBundle::class => ['all' => true]
|
Dunglas\DoctrineJsonOdm\Bundle\DunglasDoctrineJsonOdmBundle::class => ['all' => true],
|
||||||
|
Symfony\UX\Vue\VueBundle::class => ['all' => true],
|
||||||
];
|
];
|
||||||
|
|||||||
@ -334,4 +334,52 @@ return [
|
|||||||
'version' => '3.1.2',
|
'version' => '3.1.2',
|
||||||
'type' => 'css',
|
'type' => 'css',
|
||||||
],
|
],
|
||||||
|
'vue' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@vue/runtime-dom' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@vue/compiler-dom' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@vue/shared' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@vue/runtime-core' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@vue/compiler-core' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@vue/reactivity' => [
|
||||||
|
'version' => '3.5.13',
|
||||||
|
],
|
||||||
|
'@symfony/ux-vue' => [
|
||||||
|
'path' => './vendor/symfony/ux-vue/assets/dist/loader.js',
|
||||||
|
],
|
||||||
|
'pinia' => [
|
||||||
|
'version' => '3.0.1',
|
||||||
|
],
|
||||||
|
'@vue/devtools-api' => [
|
||||||
|
'version' => '7.7.2',
|
||||||
|
],
|
||||||
|
'@vue/devtools-kit' => [
|
||||||
|
'version' => '7.7.2',
|
||||||
|
],
|
||||||
|
'@vue/devtools-shared' => [
|
||||||
|
'version' => '7.7.2',
|
||||||
|
],
|
||||||
|
'perfect-debounce' => [
|
||||||
|
'version' => '1.0.0',
|
||||||
|
],
|
||||||
|
'hookable' => [
|
||||||
|
'version' => '5.5.3',
|
||||||
|
],
|
||||||
|
'birpc' => [
|
||||||
|
'version' => '0.2.19',
|
||||||
|
],
|
||||||
|
'splitpanes' => [
|
||||||
|
'version' => '4.0.3',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@ -32,6 +32,9 @@ class Product
|
|||||||
#[Field(type: 'string')]
|
#[Field(type: 'string')]
|
||||||
protected $ansprechPartner;
|
protected $ansprechPartner;
|
||||||
|
|
||||||
|
#[Field(type: 'boolean')]
|
||||||
|
protected bool $rawText = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \DateTime $ablaufDatum;
|
* @var \DateTime $ablaufDatum;
|
||||||
*/
|
*/
|
||||||
@ -250,7 +253,6 @@ class Product
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var boolean $uploadFromLatestOrder;
|
* @var boolean $uploadFromLatestOrder;
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
#[Field(type: 'bool')]
|
#[Field(type: 'bool')]
|
||||||
protected $uploadFromLatestOrder;
|
protected $uploadFromLatestOrder;
|
||||||
@ -263,7 +265,6 @@ class Product
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var boolean $uploadProvided;
|
* @var boolean $uploadProvided;
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
#[Field(type: 'bool')]
|
#[Field(type: 'bool')]
|
||||||
protected $uploadProvided;
|
protected $uploadProvided;
|
||||||
@ -274,7 +275,6 @@ class Product
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string $uploadProvidedFile;
|
* @var string $uploadProvidedFile;
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
#[Field(type: 'string')]
|
#[Field(type: 'string')]
|
||||||
protected $uploadProvidedFile;
|
protected $uploadProvidedFile;
|
||||||
@ -1021,4 +1021,14 @@ class Product
|
|||||||
{
|
{
|
||||||
$this->uploadProvidedDownload = $uploadProvidedDownload;
|
$this->uploadProvidedDownload = $uploadProvidedDownload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isRawText(): bool
|
||||||
|
{
|
||||||
|
return (bool)$this->rawText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRawText(bool $var): void
|
||||||
|
{
|
||||||
|
$this->rawText = $var;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,7 @@ class Product
|
|||||||
protected $extraSettings;
|
protected $extraSettings;
|
||||||
protected $availability;
|
protected $availability;
|
||||||
protected $weight;
|
protected $weight;
|
||||||
|
protected $rawText = false;
|
||||||
protected $text;
|
protected $text;
|
||||||
/**
|
/**
|
||||||
* @var integer
|
* @var integer
|
||||||
@ -3132,4 +3133,13 @@ class Product
|
|||||||
{
|
{
|
||||||
$this->noIndex = $noIndex;
|
$this->noIndex = $noIndex;
|
||||||
}
|
}
|
||||||
|
public function isRawText(): bool
|
||||||
|
{
|
||||||
|
return (bool)$this->rawText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRawText(bool $rawText): void
|
||||||
|
{
|
||||||
|
$this->rawText = $rawText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,6 +65,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full px-4">
|
<div class="w-full px-4">
|
||||||
|
<div {{ vue_component('PackageSearch', {news: news}) }}>
|
||||||
|
Loading...
|
||||||
|
</div>
|
||||||
{{ form_row(form.introduction)}}
|
{{ form_row(form.introduction)}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -95,9 +95,9 @@ class EditController extends AbstractController
|
|||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param $uid
|
* @param $uid
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/edit/add/lang/data/{uid}', name: 'backend_production_product_edit_add_lang_data')]
|
#[Route(path: '/edit/add/lang/data/{uid}', name: 'backend_production_product_edit_add_lang_data')]
|
||||||
@ -124,9 +124,9 @@ class EditController extends AbstractController
|
|||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param $uid
|
* @param $uid
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/edit/fetch/lang/data/{uid}', name: 'backend_production_product_edit_fetch_lang_data')]
|
#[Route(path: '/edit/fetch/lang/data/{uid}', name: 'backend_production_product_edit_fetch_lang_data')]
|
||||||
@ -158,17 +158,19 @@ class EditController extends AbstractController
|
|||||||
/**
|
/**
|
||||||
* edit
|
* edit
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
||||||
* @param $url
|
* @param $url
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
* @throws \Doctrine\ORM\ORMException
|
* @throws \Doctrine\ORM\ORMException
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/edit/check/url/{url}', name: 'backend_production_product_check_url')]
|
#[Route(path: '/edit/check/url/{url}', name: 'backend_production_product_check_url')]
|
||||||
public function checkUrlAction(Request $request, EntityManagerInterface $entityManager, \PSC\System\SettingsBundle\Service\Shop $shopService, $url)
|
public function checkUrlAction(Request $request, EntityManagerInterface $entityManager, \PSC\System\SettingsBundle\Service\Shop $shopService, $url)
|
||||||
{
|
{
|
||||||
/** @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop */
|
/**
|
||||||
|
* @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop
|
||||||
|
*/
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
|
|
||||||
$products = $entityManager
|
$products = $entityManager
|
||||||
@ -176,7 +178,9 @@ class EditController extends AbstractController
|
|||||||
|
|
||||||
if (count($products) > 0) {
|
if (count($products) > 0) {
|
||||||
$tmp = array();
|
$tmp = array();
|
||||||
/** @var Product $product */
|
/**
|
||||||
|
* @var Product $product
|
||||||
|
*/
|
||||||
foreach ($products as $product) {
|
foreach ($products as $product) {
|
||||||
$tmp[] = $product->getTitle();
|
$tmp[] = $product->getTitle();
|
||||||
}
|
}
|
||||||
@ -191,13 +195,13 @@ class EditController extends AbstractController
|
|||||||
*
|
*
|
||||||
* @template()
|
* @template()
|
||||||
*
|
*
|
||||||
* @param Request $request Request
|
* @param Request $request Request
|
||||||
* @param Field $fieldService
|
* @param Field $fieldService
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
||||||
* @param DocumentManager $documentManager
|
* @param DocumentManager $documentManager
|
||||||
* @param SessionInterface $session
|
* @param SessionInterface $session
|
||||||
* @param $type
|
* @param $type
|
||||||
* @return array|\Symfony\Component\HttpFoundation\RedirectResponse
|
* @return array|\Symfony\Component\HttpFoundation\RedirectResponse
|
||||||
* @throws \Doctrine\ODM\MongoDB\MongoDBException
|
* @throws \Doctrine\ODM\MongoDB\MongoDBException
|
||||||
* @throws \Doctrine\ORM\ORMException
|
* @throws \Doctrine\ORM\ORMException
|
||||||
@ -215,10 +219,14 @@ class EditController extends AbstractController
|
|||||||
$customFields = $fieldService->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
$customFields = $fieldService->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
||||||
$customGroups = $fieldService->getGroups(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
$customGroups = $fieldService->getGroups(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
||||||
|
|
||||||
/** @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop */
|
/**
|
||||||
|
* @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop
|
||||||
|
*/
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
|
|
||||||
/** @var Shop $shop */
|
/**
|
||||||
|
* @var Shop $shop
|
||||||
|
*/
|
||||||
$shop = $documentManager
|
$shop = $documentManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Document\Shop')
|
->getRepository('PSC\Shop\EntityBundle\Document\Shop')
|
||||||
->findOneBy(array('uid' => (string) $selectedShop->getUid()));
|
->findOneBy(array('uid' => (string) $selectedShop->getUid()));
|
||||||
@ -229,7 +237,9 @@ class EditController extends AbstractController
|
|||||||
$customProductFields = $fieldService->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $type);
|
$customProductFields = $fieldService->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $type);
|
||||||
$customProductGroups = $fieldService->getProductGroups(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $type);
|
$customProductGroups = $fieldService->getProductGroups(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $type);
|
||||||
|
|
||||||
/** @var Domain[] $domains */
|
/**
|
||||||
|
* @var Domain[] $domains
|
||||||
|
*/
|
||||||
$domains = $entityManager
|
$domains = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->getAllByShopId($selectedShop);
|
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->getAllByShopId($selectedShop);
|
||||||
|
|
||||||
@ -290,6 +300,7 @@ class EditController extends AbstractController
|
|||||||
$productDoc->setCustomTabEnable($product->isCustomTabEnable());
|
$productDoc->setCustomTabEnable($product->isCustomTabEnable());
|
||||||
$productDoc->setHintEnable($product->isHintEnable());
|
$productDoc->setHintEnable($product->isHintEnable());
|
||||||
$productDoc->setAsRequest($product->isAsRequest());
|
$productDoc->setAsRequest($product->isAsRequest());
|
||||||
|
$productDoc->setRawText($product->isRawText());
|
||||||
|
|
||||||
$documentManager->persist($productDoc);
|
$documentManager->persist($productDoc);
|
||||||
$documentManager->flush();
|
$documentManager->flush();
|
||||||
@ -321,16 +332,16 @@ class EditController extends AbstractController
|
|||||||
*
|
*
|
||||||
* @template()
|
* @template()
|
||||||
*
|
*
|
||||||
* @param Request $request Request
|
* @param Request $request Request
|
||||||
* @param Field $fieldService
|
* @param Field $fieldService
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param DocumentManager $documentManager
|
* @param DocumentManager $documentManager
|
||||||
* @param PaginatorInterface $paginator
|
* @param PaginatorInterface $paginator
|
||||||
* @param SessionInterface $session
|
* @param SessionInterface $session
|
||||||
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
||||||
* @param Status $statusService
|
* @param Status $statusService
|
||||||
* @param \PSC\Shop\OrderBundle\Service\Order $orderService
|
* @param \PSC\Shop\OrderBundle\Service\Order $orderService
|
||||||
* @param string $uuid Uuid
|
* @param string $uuid Uuid
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws \Doctrine\ODM\MongoDB\MongoDBException
|
* @throws \Doctrine\ODM\MongoDB\MongoDBException
|
||||||
@ -352,19 +363,27 @@ class EditController extends AbstractController
|
|||||||
$customFields = $fieldService->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
$customFields = $fieldService->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
||||||
$customGroups = $fieldService->getGroups(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
$customGroups = $fieldService->getGroups(\PSC\System\PluginBundle\Form\Interfaces\Field::Product);
|
||||||
|
|
||||||
/** @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop */
|
/**
|
||||||
|
* @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop
|
||||||
|
*/
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
|
|
||||||
/** @var Shop $shop */
|
/**
|
||||||
|
* @var Shop $shop
|
||||||
|
*/
|
||||||
$shop = $documentManager
|
$shop = $documentManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Document\Shop')
|
->getRepository('PSC\Shop\EntityBundle\Document\Shop')
|
||||||
->findOneBy(array('uid' => (string) $selectedShop->getUid()));
|
->findOneBy(array('uid' => (string) $selectedShop->getUid()));
|
||||||
|
|
||||||
/** @var Product $product */
|
/**
|
||||||
|
* @var Product $product
|
||||||
|
*/
|
||||||
$product = $entityManager
|
$product = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('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(array('uid' => (string) $product->getUid()));
|
||||||
@ -422,6 +441,7 @@ class EditController extends AbstractController
|
|||||||
$product->setCustomTabEnable($productDoc->isCustomTabEnable());
|
$product->setCustomTabEnable($productDoc->isCustomTabEnable());
|
||||||
$product->setHintEnable($productDoc->isHintEnable());
|
$product->setHintEnable($productDoc->isHintEnable());
|
||||||
$product->setAsRequest($productDoc->isAsRequest());
|
$product->setAsRequest($productDoc->isAsRequest());
|
||||||
|
$product->setRawText($productDoc->isRawText());
|
||||||
} elseif (!$productDoc) {
|
} elseif (!$productDoc) {
|
||||||
$productDoc = new \PSC\Shop\EntityBundle\Document\Product();
|
$productDoc = new \PSC\Shop\EntityBundle\Document\Product();
|
||||||
$productDoc->setAblaufDatum($product->getAblaufDatum());
|
$productDoc->setAblaufDatum($product->getAblaufDatum());
|
||||||
@ -468,6 +488,7 @@ class EditController extends AbstractController
|
|||||||
$productDoc->setHintEnable($product->isHintEnable());
|
$productDoc->setHintEnable($product->isHintEnable());
|
||||||
$productDoc->setAsRequest($product->isAsRequest());
|
$productDoc->setAsRequest($product->isAsRequest());
|
||||||
$productDoc->setNoIndex($product->isNoIndex());
|
$productDoc->setNoIndex($product->isNoIndex());
|
||||||
|
$productDoc->setRawText($product->isRawText());
|
||||||
|
|
||||||
$documentManager->persist($productDoc);
|
$documentManager->persist($productDoc);
|
||||||
$documentManager->flush();
|
$documentManager->flush();
|
||||||
@ -515,6 +536,7 @@ class EditController extends AbstractController
|
|||||||
$product->setCustomTabEnable($productDoc->isCustomTabEnable());
|
$product->setCustomTabEnable($productDoc->isCustomTabEnable());
|
||||||
$product->setHintEnable($productDoc->isHintEnable());
|
$product->setHintEnable($productDoc->isHintEnable());
|
||||||
$product->setAsRequest($productDoc->isAsRequest());
|
$product->setAsRequest($productDoc->isAsRequest());
|
||||||
|
$product->setRawText($productDoc->isRawText());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->isMethod('POST') && $productDoc) {
|
if ($request->isMethod('POST') && $productDoc) {
|
||||||
@ -568,6 +590,7 @@ class EditController extends AbstractController
|
|||||||
$productDoc->setCustomTabEnable($product->isCustomTabEnable());
|
$productDoc->setCustomTabEnable($product->isCustomTabEnable());
|
||||||
$productDoc->setHintEnable($product->isHintEnable());
|
$productDoc->setHintEnable($product->isHintEnable());
|
||||||
$productDoc->setAsRequest($product->isAsRequest());
|
$productDoc->setAsRequest($product->isAsRequest());
|
||||||
|
$productDoc->setRawText($product->isRawText());
|
||||||
|
|
||||||
$this->historyService->createHistoryEntry(new PSCHistory((string)$product->getUID()), $product, $productDoc);
|
$this->historyService->createHistoryEntry(new PSCHistory((string)$product->getUID()), $product, $productDoc);
|
||||||
$entityManager->persist($product);
|
$entityManager->persist($product);
|
||||||
@ -583,7 +606,9 @@ class EditController extends AbstractController
|
|||||||
$this->logService->createLogEntry($selectedShop, $this->getUser(), LogEntry::INFO, PSCShopProductBundle::class, $product->getTitle(), "Product has been updated");
|
$this->logService->createLogEntry($selectedShop, $this->getUser(), LogEntry::INFO, PSCShopProductBundle::class, $product->getTitle(), "Product has been updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var Domain[] $domains */
|
/**
|
||||||
|
* @var Domain[] $domains
|
||||||
|
*/
|
||||||
$domains = $entityManager
|
$domains = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->getAllByShopId($selectedShop);
|
->getRepository('PSC\Shop\EntityBundle\Entity\Domain')->getAllByShopId($selectedShop);
|
||||||
|
|
||||||
@ -645,11 +670,11 @@ class EditController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param SessionInterface $session
|
* @param SessionInterface $session
|
||||||
* @param $uuid
|
* @param $uuid
|
||||||
* @return array|Response|\Symfony\Component\HttpFoundation\RedirectResponse
|
* @return array|Response|\Symfony\Component\HttpFoundation\RedirectResponse
|
||||||
* @throws \Doctrine\ORM\ORMException
|
* @throws \Doctrine\ORM\ORMException
|
||||||
*/
|
*/
|
||||||
@ -663,10 +688,14 @@ class EditController extends AbstractController
|
|||||||
SessionInterface $session,
|
SessionInterface $session,
|
||||||
$uuid
|
$uuid
|
||||||
) {
|
) {
|
||||||
/** @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop */
|
/**
|
||||||
|
* @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop
|
||||||
|
*/
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
|
|
||||||
/** @var Product $product */
|
/**
|
||||||
|
* @var Product $product
|
||||||
|
*/
|
||||||
$product = $entityManager
|
$product = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
||||||
|
|
||||||
@ -706,12 +735,11 @@ class EditController extends AbstractController
|
|||||||
/**
|
/**
|
||||||
* Copy Seite
|
* Copy Seite
|
||||||
*
|
*
|
||||||
*
|
* @param Request $request
|
||||||
* @param Request $request
|
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
||||||
* @param \PSC\System\SettingsBundle\Service\Shop $shopService
|
* @param \PSC\Shop\ProductBundle\Service\Product $productService
|
||||||
* @param \PSC\Shop\ProductBundle\Service\Product $productService
|
* @param EntityManagerInterface $entityManager
|
||||||
* @param EntityManagerInterface $entityManager
|
* @param $uuid
|
||||||
* @param $uuid
|
|
||||||
* @return array|\Symfony\Component\HttpFoundation\RedirectResponse
|
* @return array|\Symfony\Component\HttpFoundation\RedirectResponse
|
||||||
* @throws \Doctrine\ORM\ORMException
|
* @throws \Doctrine\ORM\ORMException
|
||||||
* @throws \Doctrine\ORM\OptimisticLockException
|
* @throws \Doctrine\ORM\OptimisticLockException
|
||||||
@ -723,10 +751,14 @@ class EditController extends AbstractController
|
|||||||
|
|
||||||
$obj = ['which' => 1];
|
$obj = ['which' => 1];
|
||||||
|
|
||||||
/** @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop */
|
/**
|
||||||
|
* @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop
|
||||||
|
*/
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
|
|
||||||
/** @var Product $product */
|
/**
|
||||||
|
* @var Product $product
|
||||||
|
*/
|
||||||
$product = $entityManager
|
$product = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@ namespace PSC\Shop\ProductBundle\Form\Backend\Product;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use PSC\Backend\DashboardBundle\Form\Type\DatePickerType;
|
use PSC\Backend\DashboardBundle\Form\Type\DatePickerType;
|
||||||
|
use PSC\Libraries\AceEditorBundle\Form\Extension\AceEditorType;
|
||||||
use PSC\Shop\EntityBundle\Entity\Productgroup;
|
use PSC\Shop\EntityBundle\Entity\Productgroup;
|
||||||
use PSC\Shop\MediaBundle\Form\Type\MediaType;
|
use PSC\Shop\MediaBundle\Form\Type\MediaType;
|
||||||
use PSC\System\PluginBundle\Form\Chain\Field;
|
use PSC\System\PluginBundle\Form\Chain\Field;
|
||||||
@ -42,10 +43,14 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
|||||||
class ProductType extends AbstractType
|
class ProductType extends AbstractType
|
||||||
{
|
{
|
||||||
protected $shop = null;
|
protected $shop = null;
|
||||||
/** @var Status */
|
/**
|
||||||
|
* @var Status
|
||||||
|
*/
|
||||||
protected $statusService = null;
|
protected $statusService = null;
|
||||||
|
|
||||||
/** @var Field */
|
/**
|
||||||
|
* @var Field
|
||||||
|
*/
|
||||||
protected $fields;
|
protected $fields;
|
||||||
|
|
||||||
protected $formFactory;
|
protected $formFactory;
|
||||||
@ -88,6 +93,7 @@ class ProductType extends AbstractType
|
|||||||
->add('title', TextType::class)
|
->add('title', TextType::class)
|
||||||
->add('subTitle', TextType::class, ['required' => false, 'label' => 'subTitle'])
|
->add('subTitle', TextType::class, ['required' => false, 'label' => 'subTitle'])
|
||||||
->add('createdAt', DatePickerType::class, array('disabled' => true))
|
->add('createdAt', DatePickerType::class, array('disabled' => true))
|
||||||
|
->add('rawText', CheckboxType::class, ['label' => 'rawText', 'required' => false])
|
||||||
->add('image1', MediaType::class, array())
|
->add('image1', MediaType::class, array())
|
||||||
->add('image2', MediaType::class, array())
|
->add('image2', MediaType::class, array())
|
||||||
->add('image3', MediaType::class, array())
|
->add('image3', MediaType::class, array())
|
||||||
@ -108,42 +114,94 @@ class ProductType extends AbstractType
|
|||||||
->add('zusatzAbmessung', TextType::class, array('required' => false, 'label' => 'Additionaldimension'))
|
->add('zusatzAbmessung', TextType::class, array('required' => false, 'label' => 'Additionaldimension'))
|
||||||
->add('zusatzDesigner', TextType::class, array('required' => false, 'label' => 'Additiondesigner'))
|
->add('zusatzDesigner', TextType::class, array('required' => false, 'label' => 'Additiondesigner'))
|
||||||
->add('zusatzShipping', TextType::class, array('required' => false, 'label' => 'Additionalshippinginformation'))
|
->add('zusatzShipping', TextType::class, array('required' => false, 'label' => 'Additionalshippinginformation'))
|
||||||
->add('extraSettings', TextareaType::class, array('required' => false, 'label' => 'Extrasettings'))
|
->add('extraSettings', TextareaType::class, array('required' => false, 'label' => 'Extrasettings'));
|
||||||
->add('description', TextareaType::class, array(
|
|
||||||
|
if ($options['data']->isRawText()) {
|
||||||
|
$builder->add(
|
||||||
|
'description', AceEditorType::class, array(
|
||||||
|
'label' => 'description',
|
||||||
|
'wrapper_attr' => array(), // aceeditor wrapper html attributes.
|
||||||
|
'width' => '90%',
|
||||||
|
'height' => '500',
|
||||||
|
'font_size' => 14,
|
||||||
|
'mode' => 'ace/mode/html', // 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(
|
||||||
|
'text', AceEditorType::class, array(
|
||||||
|
'label' => 'text',
|
||||||
|
'wrapper_attr' => array(), // aceeditor wrapper html attributes.
|
||||||
|
'width' => '90%',
|
||||||
|
'height' => '500',
|
||||||
|
'font_size' => 14,
|
||||||
|
'mode' => 'ace/mode/html', // 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
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
$builder->add(
|
||||||
|
'description', TextareaType::class, array(
|
||||||
|
'label' => 'description',
|
||||||
|
'required' => false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
'text', TextareaType::class, array(
|
||||||
|
'label' => 'Additionaldescription',
|
||||||
|
'required' => false
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$builder->add(
|
||||||
|
'hintText', TextareaType::class, array(
|
||||||
'label' => 'description',
|
'label' => 'description',
|
||||||
'required' => false
|
'required' => false
|
||||||
))
|
)
|
||||||
->add('text', TextareaType::class, array(
|
)
|
||||||
'label' => 'Additionaldescription',
|
->add('customTabEnable', CheckboxType::class, array('required' => false, 'label' => 'Active'))
|
||||||
'required' => false
|
->add('customTabTitle', TextType::class, array('required' => false, 'label' => 'Tabname'))
|
||||||
))
|
->add(
|
||||||
->add('hintText', TextareaType::class, array(
|
'customTabText', TextareaType::class, array(
|
||||||
'label' => 'description',
|
'label' => 'Tabtext',
|
||||||
'required' => false
|
'required' => false
|
||||||
))
|
)
|
||||||
->add('customTabEnable', CheckboxType::class, array('required' => false, 'label' => 'Active'))
|
)
|
||||||
->add('customTabTitle', TextType::class, array('required' => false, 'label' => 'Tabname'))
|
->add(
|
||||||
->add('customTabText', TextareaType::class, array(
|
'product_groups', EntityType::class, array(
|
||||||
'label' => 'Tabtext',
|
'class' => 'PSC\Shop\EntityBundle\Entity\Productgroup',
|
||||||
'required' => false
|
'choice_label' => function (Productgroup $choice, $key, $value) {
|
||||||
))
|
if ($choice->isEnable()) {
|
||||||
->add('product_groups', EntityType::class, array(
|
return $choice->getTitle();
|
||||||
'class' => 'PSC\Shop\EntityBundle\Entity\Productgroup',
|
} else {
|
||||||
'choice_label' => function (Productgroup $choice, $key, $value) {
|
return $choice->getTitle() . ' (disabled)';
|
||||||
if ($choice->isEnable()) {
|
}
|
||||||
return $choice->getTitle();
|
},
|
||||||
} else {
|
'multiple' => true,
|
||||||
return $choice->getTitle() . ' (disabled)';
|
'required' => false,
|
||||||
|
'query_builder' => function (EntityRepository $er) {
|
||||||
|
return $er->createQueryBuilder('u')
|
||||||
|
->where('u.shop = :shop')->setParameter('shop', $this->shop->getSelectedShop()->getId());
|
||||||
}
|
}
|
||||||
},
|
)
|
||||||
'multiple' => true,
|
)
|
||||||
'required' => false,
|
->add(
|
||||||
'query_builder' => function (EntityRepository $er) {
|
'releatedProducts', EntityType::class, array(
|
||||||
return $er->createQueryBuilder('u')
|
|
||||||
->where('u.shop = :shop')->setParameter('shop', $this->shop->getSelectedShop()->getId());
|
|
||||||
}
|
|
||||||
))
|
|
||||||
->add('releatedProducts', EntityType::class, array(
|
|
||||||
'class' => 'PSC\Shop\EntityBundle\Entity\Product',
|
'class' => 'PSC\Shop\EntityBundle\Entity\Product',
|
||||||
'choice_label' => 'title',
|
'choice_label' => 'title',
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
@ -152,8 +210,10 @@ class ProductType extends AbstractType
|
|||||||
return $er->createQueryBuilder('u')
|
return $er->createQueryBuilder('u')
|
||||||
->where('u.shop = :shop AND u.originalProduct = 0')->setParameter('shop', $this->shop->getSelectedShop()->getId());
|
->where('u.shop = :shop AND u.originalProduct = 0')->setParameter('shop', $this->shop->getSelectedShop()->getId());
|
||||||
}
|
}
|
||||||
))
|
)
|
||||||
->add('language', ChoiceType::class, array(
|
)
|
||||||
|
->add(
|
||||||
|
'language', ChoiceType::class, array(
|
||||||
'choices' => array(
|
'choices' => array(
|
||||||
'Alle' => 'all',
|
'Alle' => 'all',
|
||||||
'de_DE' => 'de_DE',
|
'de_DE' => 'de_DE',
|
||||||
@ -163,15 +223,18 @@ class ProductType extends AbstractType
|
|||||||
'il_IL' => 'il_IL',
|
'il_IL' => 'il_IL',
|
||||||
),
|
),
|
||||||
'label' => 'language'
|
'label' => 'language'
|
||||||
))
|
)
|
||||||
->add('availability', ChoiceType::class, array(
|
)
|
||||||
|
->add(
|
||||||
|
'availability', ChoiceType::class, array(
|
||||||
'choices' => array(
|
'choices' => array(
|
||||||
'instock' => 'in_stock',
|
'instock' => 'in_stock',
|
||||||
'outofstock' => 'out_of_stock',
|
'outofstock' => 'out_of_stock',
|
||||||
'preorder' => 'preorder'
|
'preorder' => 'preorder'
|
||||||
),
|
),
|
||||||
'label' => 'Availability'
|
'label' => 'Availability'
|
||||||
))
|
)
|
||||||
|
)
|
||||||
->add('videoId', TextType::class, ['required' => false, 'label' => 'VideoId'])
|
->add('videoId', TextType::class, ['required' => false, 'label' => 'VideoId'])
|
||||||
->add('metaKeywords', TextType::class, ['required' => false, 'label' => 'Keywords'])
|
->add('metaKeywords', TextType::class, ['required' => false, 'label' => 'Keywords'])
|
||||||
->add('metaDescription', TextareaType::class, ['required' => false, 'label' => 'description'])
|
->add('metaDescription', TextareaType::class, ['required' => false, 'label' => 'description'])
|
||||||
@ -206,111 +269,153 @@ class ProductType extends AbstractType
|
|||||||
->add('custom11', TextType::class, ['required' => false, 'label' => 'Custom 11'])
|
->add('custom11', TextType::class, ['required' => false, 'label' => 'Custom 11'])
|
||||||
->add('custom12', TextType::class, ['required' => false, 'label' => 'Custom 12'])
|
->add('custom12', TextType::class, ['required' => false, 'label' => 'Custom 12'])
|
||||||
->add('uploadProduct', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
->add('uploadProduct', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
||||||
->add("uploadProductInitalStatus", ChoiceType::class, array(
|
->add(
|
||||||
|
"uploadProductInitalStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Initialstatus',
|
'label' => 'Initialstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
))
|
)
|
||||||
|
)
|
||||||
->add('uploadFromLatestOrder', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
->add('uploadFromLatestOrder', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
||||||
->add("uploadFromLatestOrderInitalStatus", ChoiceType::class, array(
|
->add(
|
||||||
|
"uploadFromLatestOrderInitalStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Initialstatus',
|
'label' => 'Initialstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
))
|
)
|
||||||
->add("initialStatus", ChoiceType::class, array(
|
)
|
||||||
|
->add(
|
||||||
|
"initialStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Masterinitialstatus',
|
'label' => 'Masterinitialstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
))
|
)
|
||||||
|
)
|
||||||
->add('uploadPost', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
->add('uploadPost', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
||||||
->add("uploadPostInitalStatus", ChoiceType::class, array(
|
->add(
|
||||||
|
"uploadPostInitalStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Initialstatus',
|
'label' => 'Initialstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
))
|
)
|
||||||
|
)
|
||||||
->add('uploadEmail', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
->add('uploadEmail', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
||||||
->add("uploadEmailInitalStatus", ChoiceType::class, array(
|
->add(
|
||||||
|
"uploadEmailInitalStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Initialstatus',
|
'label' => 'Initialstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
))
|
)
|
||||||
|
)
|
||||||
->add('uploadProvided', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
->add('uploadProvided', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
||||||
->add('uploadProvidedFile', MediaType::class, array('label' => 'Datei'))
|
->add('uploadProvidedFile', MediaType::class, array('label' => 'Datei'))
|
||||||
->add("uploadProvidedInitalStatus", ChoiceType::class, array(
|
->add(
|
||||||
|
"uploadProvidedInitalStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Initalstatus',
|
'label' => 'Initalstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
))
|
)
|
||||||
|
)
|
||||||
->add('uploadProvidedDownload', CheckboxType::class, ['required' => false, 'label' => 'Download'])
|
->add('uploadProvidedDownload', CheckboxType::class, ['required' => false, 'label' => 'Download'])
|
||||||
->add('uploadCenter', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
->add('uploadCenter', CheckboxType::class, ['required' => false, 'label' => 'Activate'])
|
||||||
->add("uploadCenterInitalStatus", ChoiceType::class, array(
|
->add(
|
||||||
|
"uploadCenterInitalStatus", ChoiceType::class, array(
|
||||||
'required' => true,
|
'required' => true,
|
||||||
'label' => 'Initialstatus',
|
'label' => 'Initialstatus',
|
||||||
'choices' => $this->statusService->getPositionStatusAsArray(),
|
'choices' => $this->statusService->getPositionStatusAsArray(),
|
||||||
'translation_domain' => 'posstatus'
|
'translation_domain' => 'posstatus'
|
||||||
));
|
)
|
||||||
|
);
|
||||||
|
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
/**
|
||||||
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
||||||
$builder->add($field->buildForm($this->formFactory->createNamedBuilder($field->getGroup()), $options));
|
$builder->add($field->buildForm($this->formFactory->createNamedBuilder($field->getGroup()), $options));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
/**
|
||||||
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
||||||
$builder->add($field->buildForm($this->formFactory->createNamedBuilder($field->getGroup()), $options));
|
$builder->add($field->buildForm($this->formFactory->createNamedBuilder($field->getGroup()), $options));
|
||||||
}
|
}
|
||||||
|
|
||||||
$builder->add('save', SubmitType::class, array('label' => 'save'));
|
$builder->add('save', SubmitType::class, array('label' => 'save'));
|
||||||
|
|
||||||
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($options) {
|
$builder->addEventListener(
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($options) {
|
||||||
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
/**
|
||||||
$field->formPreSetData($event);
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
||||||
|
$field->formPreSetData($event);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
||||||
|
$field->formPreSetData($event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
);
|
||||||
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
|
||||||
$field->formPreSetData($event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($options) {
|
$builder->addEventListener(
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
FormEvents::POST_SET_DATA, function (FormEvent $event) use ($options) {
|
||||||
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
/**
|
||||||
$field->formPostSetData($event);
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
||||||
|
$field->formPostSetData($event);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
||||||
|
$field->formPostSetData($event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
);
|
||||||
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
|
||||||
$field->formPostSetData($event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use ($options) {
|
$builder->addEventListener(
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
FormEvents::POST_SUBMIT, function (FormEvent $event) use ($options) {
|
||||||
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
/**
|
||||||
$field->formPostSubmit($event);
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
||||||
|
$field->formPostSubmit($event);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
||||||
|
$field->formPostSubmit($event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
);
|
||||||
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
|
||||||
$field->formPostSubmit($event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($options) {
|
$builder->addEventListener(
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($options) {
|
||||||
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
/**
|
||||||
$field->formPreSubmit($event);
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product) as $field) {
|
||||||
|
$field->formPreSubmit($event);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @var \PSC\System\PluginBundle\Form\Interfaces\Field $field
|
||||||
|
*/
|
||||||
|
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
||||||
|
$field->formPreSubmit($event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */
|
);
|
||||||
foreach ($this->fields->getProductFields(\PSC\System\PluginBundle\Form\Interfaces\Field::Product, $options['productType']) as $field) {
|
|
||||||
$field->formPreSubmit($event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getName()
|
public function getName()
|
||||||
@ -320,12 +425,14 @@ class ProductType extends AbstractType
|
|||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$resolver->setDefaults(array(
|
$resolver->setDefaults(
|
||||||
|
array(
|
||||||
'data_class' => 'PSC\Shop\EntityBundle\Entity\Product',
|
'data_class' => 'PSC\Shop\EntityBundle\Entity\Product',
|
||||||
'productType' => 0,
|
'productType' => 0,
|
||||||
'product' => null,
|
'product' => null,
|
||||||
'productDoc' => null,
|
'productDoc' => null,
|
||||||
'translation_domain' => 'core_product_edit'
|
'translation_domain' => 'core_product_edit'
|
||||||
));
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -431,13 +431,30 @@ a[href^="#formlayouter"] {display:none;}
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="row mb-3">
|
||||||
|
{{ form_label(form.rawText) }}
|
||||||
|
<div class="col-md-8">
|
||||||
|
{{ form_widget(form.rawText) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<h5>{{ 'description'|trans }}</h5>
|
<h5>{{ 'description'|trans }}</h5>
|
||||||
|
|
||||||
|
|
||||||
|
{% if product.rawText %}
|
||||||
|
{{ form_widget(form.description) }}
|
||||||
|
{% else %}
|
||||||
{{ form_widget(form.description, {attr: {'class': 'form-control summernote'}}) }}
|
{{ form_widget(form.description, {attr: {'class': 'form-control summernote'}}) }}
|
||||||
|
{% endif %}
|
||||||
<h5>{{ 'Additionaldescription'|trans }}</h5>
|
<h5>{{ 'Additionaldescription'|trans }}</h5>
|
||||||
|
{% if product.rawText %}
|
||||||
|
{{ form_widget(form.text) }}
|
||||||
|
{% else %}
|
||||||
{{ form_widget(form.text, {attr: {'class': 'form-control summernote'}}) }}
|
{{ form_widget(form.text, {attr: {'class': 'form-control summernote'}}) }}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane" id="seo" role="tabpanel">
|
<div class="tab-pane" id="seo" role="tabpanel">
|
||||||
|
|||||||
@ -940,6 +940,18 @@
|
|||||||
"symfony/ux-twig-component": {
|
"symfony/ux-twig-component": {
|
||||||
"version": "v2.12.0"
|
"version": "v2.12.0"
|
||||||
},
|
},
|
||||||
|
"symfony/ux-vue": {
|
||||||
|
"version": "2.23",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "2.9",
|
||||||
|
"ref": "7a6b5e211acc7b10b7190e704b40f6d2bca01adf"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"assets/vue/controllers/Hello.vue"
|
||||||
|
]
|
||||||
|
},
|
||||||
"symfony/validator": {
|
"symfony/validator": {
|
||||||
"version": "4.3",
|
"version": "4.3",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
|||||||
@ -6,7 +6,8 @@ use Symfony\Contracts\HttpClient\HttpClientInterface;
|
|||||||
use function array_merge;
|
use function array_merge;
|
||||||
|
|
||||||
|
|
||||||
abstract class Base {
|
abstract class Base
|
||||||
|
{
|
||||||
|
|
||||||
private string $apiUrl = 'https://api.print.app/v1/';
|
private string $apiUrl = 'https://api.print.app/v1/';
|
||||||
|
|
||||||
|
|||||||
@ -33,13 +33,14 @@ class DesignController extends AbstractController
|
|||||||
{
|
{
|
||||||
$selectedShop = $shopService->getSelectedShop();
|
$selectedShop = $shopService->getSelectedShop();
|
||||||
|
|
||||||
/** @var Product $product */
|
/**
|
||||||
|
* @var Product $product
|
||||||
|
*/
|
||||||
$product = $entityManager
|
$product = $entityManager
|
||||||
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
->getRepository('PSC\Shop\EntityBundle\Entity\Product')->findOneBy(array('uuid' => $uuid, 'shop' => $selectedShop));
|
||||||
|
|
||||||
|
|
||||||
$output = $design->getDesigns($folder);
|
$output = $design->getDesigns($folder);
|
||||||
|
|
||||||
$data = ['folders' => [], 'designs' => []];
|
$data = ['folders' => [], 'designs' => []];
|
||||||
if (isset($output['root']) && isset($output['root']['id']) && $output['root']['id'] == 'root') {
|
if (isset($output['root']) && isset($output['root']['id']) && $output['root']['id'] == 'root') {
|
||||||
foreach ($output['root']['items'] as $item) {
|
foreach ($output['root']['items'] as $item) {
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
<img src="{{ design.pages[0]['preview'] }}" class="card-img-top">
|
<img src="{{ design.pages[0]['preview'] }}" class="card-img-top">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h6 class="card-title">{{design.title}} title</h6>
|
<h6 class="card-title">{{design.title}} title</h6>
|
||||||
<button type="button" onClick="choose('{{design.id}}', '{{ design.pages[0]['preview']|join(';')}}')" class="btn btn-sm btn-primary">Benutzen</button>
|
<button type="button" onClick="module.choose('{{design.id}}', '{{ design.pages[0]['preview']|join(';')}}')" class="btn btn-sm btn-primary">Benutzen</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer">
|
<div class="card-footer">
|
||||||
<small class="text-muted">Last updated {{design.modified|date("H:i:s d.m.Y")}}</small>
|
<small class="text-muted">Last updated {{design.modified|date("H:i:s d.m.Y")}}</small>
|
||||||
@ -27,14 +27,20 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script type="text/javascript">
|
||||||
function choose(id, previews)
|
const module = {};
|
||||||
|
</script>
|
||||||
|
<script type="module">
|
||||||
|
import $ from 'jquery'
|
||||||
|
import * as bootstrap from 'bootstrap'
|
||||||
|
module.choose = function(id, previews)
|
||||||
{
|
{
|
||||||
parent.document.getElementById('product_pitchprint_r2_uploadPitchprintDesignId').value = id;
|
parent.document.getElementById('product_pitchprint_r2_uploadPitchprintDesignId').value = id;
|
||||||
parent.document.getElementById('product_pitchprint_r2_uploadPitchprintDesignPreviews').value = previews;
|
parent.document.getElementById('product_pitchprint_r2_uploadPitchprintDesignPreviews').value = previews;
|
||||||
var useDesignModal = parent.document.getElementById('useDesignR2');
|
var useDesignModal = parent.document.getElementById('useDesignR2');
|
||||||
parent.loadChoosenDesign2();
|
parent.loadChoosenDesign2();
|
||||||
parent.$(useDesignModal).modal('hide');
|
var modal = parent.bootstrap.Modal.getOrCreateInstance(useDesignModal);
|
||||||
|
modal.toggle();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -63,7 +63,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal" data-bs-backdrop="static" tabindex="-1" id="useDesignR2">
|
<div class="modal" tabindex="-1" id="useDesignR2">
|
||||||
<div class="modal-dialog modal-fullscreen">
|
<div class="modal-dialog modal-fullscreen">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user