Compare commits
6 Commits
dfdf2a881f
...
feature/is
| Author | SHA1 | Date | |
|---|---|---|---|
| 087c45a927 | |||
| 186157fb62 | |||
| 5b6304d05d | |||
| 2f4ef934b3 | |||
| 7cee735780 | |||
| 34452ef6a3 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
is_imageslider/vendor/
|
||||
@@ -1,8 +1,8 @@
|
||||
parameters:
|
||||
is_imageslider_images_directory: '%kernel.project_dir%/modules/is_imageslider/img/'
|
||||
is_imageslider_images_directory: "%kernel.project_dir%/modules/is_imageslider/img/"
|
||||
is_imageslider_module_uri: !php/const _MODULE_DIR_
|
||||
is_imageslider_images_uri: '%is_imageslider_module_uri%is_imageslider/img/'
|
||||
is_imageslider_placeholder_img: '/modules/is_imageslider/views/img/placeholder.jpeg'
|
||||
is_imageslider_images_uri: "%is_imageslider_module_uri%is_imageslider/img/"
|
||||
is_imageslider_placeholder_img: "/modules/is_imageslider/views/img/placeholder.jpeg"
|
||||
|
||||
services:
|
||||
_defaults:
|
||||
@@ -10,15 +10,15 @@ services:
|
||||
|
||||
oksydan.is_imageslider.module:
|
||||
class: Is_imageslider
|
||||
factory: [ 'Module', 'getInstanceByName' ]
|
||||
factory: ["Module", "getInstanceByName"]
|
||||
public: false
|
||||
arguments:
|
||||
- 'is_imageslider'
|
||||
- "is_imageslider"
|
||||
|
||||
oksydan.is_imageslider.repository.image_slider:
|
||||
class: Oksydan\IsImageslider\Repository\ImageSliderRepository
|
||||
public: true
|
||||
factory: ['@doctrine.orm.default_entity_manager', getRepository]
|
||||
factory: ["@doctrine.orm.default_entity_manager", getRepository]
|
||||
arguments:
|
||||
- Oksydan\IsImageslider\Entity\ImageSlider
|
||||
|
||||
@@ -26,15 +26,15 @@ services:
|
||||
class: Oksydan\IsImageslider\Repository\HookModuleRepository
|
||||
public: true
|
||||
arguments:
|
||||
- '@doctrine.dbal.default_connection'
|
||||
- '%database_prefix%'
|
||||
- "@doctrine.dbal.default_connection"
|
||||
- "%database_prefix%"
|
||||
|
||||
oksydan.is_imageslider.presenter.image_slide_presenter:
|
||||
class: Oksydan\IsImageslider\Presenter\ImageSlidePresenter
|
||||
public: true
|
||||
arguments:
|
||||
- '%is_imageslider_images_uri%'
|
||||
- '%is_imageslider_images_directory%'
|
||||
- "%is_imageslider_images_uri%"
|
||||
- "%is_imageslider_images_directory%"
|
||||
- "@=service('prestashop.adapter.legacy.context').getContext()"
|
||||
|
||||
oksydan.is_imageslider.configuration.slider_configuration:
|
||||
@@ -45,47 +45,52 @@ services:
|
||||
class: Oksydan\IsImageslider\Hook\AbstractHook
|
||||
public: true
|
||||
arguments:
|
||||
- '@oksydan.is_imageslider.module'
|
||||
- "@oksydan.is_imageslider.module"
|
||||
- "@=service('prestashop.adapter.legacy.context').getContext()"
|
||||
|
||||
oksydan.is_imageslider.hook.abstract_display_hook:
|
||||
class: Oksydan\IsImageslider\Hook\AbstractDisplayHook
|
||||
parent: 'oksydan.is_imageslider.hook.abstract_hook'
|
||||
parent: "oksydan.is_imageslider.hook.abstract_hook"
|
||||
public: true
|
||||
arguments:
|
||||
- '@oksydan.is_imageslider.configuration.slider_configuration'
|
||||
- "@oksydan.is_imageslider.configuration.slider_configuration"
|
||||
|
||||
oksydan.is_imageslider.hook.abstract_cacheable_display_hook:
|
||||
class: Oksydan\IsImageslider\Hook\AbstractCacheableDisplayHook
|
||||
parent: 'oksydan.is_imageslider.hook.abstract_display_hook'
|
||||
parent: "oksydan.is_imageslider.hook.abstract_display_hook"
|
||||
public: true
|
||||
arguments:
|
||||
- '@oksydan.is_imageslider.repository.image_slider'
|
||||
- '@oksydan.is_imageslider.presenter.image_slide_presenter'
|
||||
- '@oksydan.is_imageslider.cache.template_cache'
|
||||
- "@oksydan.is_imageslider.repository.image_slider"
|
||||
- "@oksydan.is_imageslider.presenter.image_slide_presenter"
|
||||
- "@oksydan.is_imageslider.cache.template_cache"
|
||||
|
||||
oksydan.is_imageslider.hook.display_home:
|
||||
class: Oksydan\IsImageslider\Hook\DisplayHome
|
||||
parent: 'oksydan.is_imageslider.hook.abstract_cacheable_display_hook'
|
||||
parent: "oksydan.is_imageslider.hook.abstract_cacheable_display_hook"
|
||||
public: true
|
||||
|
||||
oksydan.is_imageslider.hook.display_hero_slider:
|
||||
class: Oksydan\IsImageslider\Hook\DisplayHome
|
||||
parent: "oksydan.is_imageslider.hook.abstract_cacheable_display_hook"
|
||||
public: true
|
||||
|
||||
oksydan.is_imageslider.hook.display_header:
|
||||
class: Oksydan\IsImageslider\Hook\DisplayHeader
|
||||
parent: 'oksydan.is_imageslider.hook.abstract_cacheable_display_hook'
|
||||
parent: "oksydan.is_imageslider.hook.abstract_cacheable_display_hook"
|
||||
public: true
|
||||
|
||||
# Modification of the module into a widget
|
||||
oksydan.is_imageslider.hook.widget_capability:
|
||||
class: Oksydan\IsImageslider\Hook\WidgetCapability
|
||||
parent: 'oksydan.is_imageslider.hook.abstract_cacheable_display_hook'
|
||||
parent: "oksydan.is_imageslider.hook.abstract_cacheable_display_hook"
|
||||
public: true
|
||||
|
||||
oksydan.is_imageslider.cache.template_cache:
|
||||
class: Oksydan\IsImageslider\Cache\TemplateCache
|
||||
public: true
|
||||
arguments:
|
||||
- '@oksydan.is_imageslider.module'
|
||||
- "@oksydan.is_imageslider.module"
|
||||
- "@=service('prestashop.adapter.legacy.context').getContext()"
|
||||
- '@oksydan.is_imageslider.repository.hook_module_repository'
|
||||
- '@prestashop.adapter.legacy.configuration'
|
||||
- '@oksydan.is_imageslider.repository.image_slider'
|
||||
- "@oksydan.is_imageslider.repository.hook_module_repository"
|
||||
- "@prestashop.adapter.legacy.configuration"
|
||||
- "@oksydan.is_imageslider.repository.image_slider"
|
||||
|
||||
@@ -10,6 +10,7 @@ if (file_exists(__DIR__ . '/vendor/autoload.php')) {
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
}
|
||||
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Oksydan\IsImageslider\Hook\HookInterface;
|
||||
use Oksydan\IsImageslider\Installer\ImageSliderInstaller;
|
||||
use PrestaShop\PrestaShop\Adapter\SymfonyContainer;
|
||||
@@ -55,6 +56,7 @@ class Is_imageslider extends Module implements WidgetInterface
|
||||
parent::install()
|
||||
&& $this->registerHook('displayHeader')
|
||||
&& $this->registerHook('displayHome')
|
||||
&& $this->registerHook('displayHeroSlider')
|
||||
&& $this->getInstaller()->createTables();
|
||||
}
|
||||
|
||||
@@ -66,11 +68,11 @@ class Is_imageslider extends Module implements WidgetInterface
|
||||
return $this->getInstaller()->dropTables() && parent::uninstall();
|
||||
}
|
||||
|
||||
public function getContent(): void
|
||||
public function getContent()
|
||||
{
|
||||
\Tools::redirectAdmin(SymfonyContainer::getInstance()->get('router')->generate('is_imageslider_controller'));
|
||||
$url = SymfonyContainer::getInstance()->get('router')->generate('is_imageslider_controller');
|
||||
return new RedirectResponse($url);
|
||||
}
|
||||
|
||||
/**
|
||||
* @template T
|
||||
*
|
||||
|
||||
@@ -79,6 +79,9 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
|
||||
$imageSlide->setPosition($this->imageSliderRepository->getHighestPosition() + 1);
|
||||
$this->addAssociatedShops($imageSlide, $data['shop_association'] ?? null);
|
||||
|
||||
$uploadedImage = !empty($data['image']) ? $this->uploadFile($data['image']) : null;
|
||||
$uploadedImageMobile = !empty($data['image_mobile']) ? $this->uploadFile($data['image_mobile']) : null;
|
||||
|
||||
foreach ($this->languages as $language) {
|
||||
$langId = (int) $language['id_lang'];
|
||||
$lang = $this->langRepository->findOneById($langId);
|
||||
@@ -87,16 +90,16 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
|
||||
$imageSliderLang
|
||||
->setLang($lang)
|
||||
->setTitle($data['title'][$langId] ?? '')
|
||||
->setUrl($data['url'][$langId] ?? '')
|
||||
->setUrl($data['url'] ?? '')
|
||||
->setLegend($data['legend'][$langId] ?? '')
|
||||
->setDescription($data['description'][$langId] ?? '');
|
||||
|
||||
if (!empty($data['image'][$langId])) {
|
||||
$imageSliderLang->setImage($this->uploadFile($data['image'][$langId]));
|
||||
if ($uploadedImage !== null) {
|
||||
$imageSliderLang->setImage($uploadedImage);
|
||||
}
|
||||
|
||||
if (!empty($data['image_mobile'][$langId])) {
|
||||
$imageSliderLang->setImageMobile($this->uploadFile($data['image_mobile'][$langId]));
|
||||
if ($uploadedImageMobile !== null) {
|
||||
$imageSliderLang->setImageMobile($uploadedImageMobile);
|
||||
}
|
||||
|
||||
$imageSlide->addImageSliderLang($imageSliderLang);
|
||||
@@ -122,6 +125,9 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
|
||||
$imageSlide->setDisplayTo($data['display_to'] ?? new \DateTime());
|
||||
$this->addAssociatedShops($imageSlide, $data['shop_association'] ?? null);
|
||||
|
||||
$uploadedImage = !empty($data['image']) ? $this->uploadFile($data['image']) : null;
|
||||
$uploadedImageMobile = !empty($data['image_mobile']) ? $this->uploadFile($data['image_mobile']) : null;
|
||||
|
||||
foreach ($this->languages as $language) {
|
||||
$langId = (int) $language['id_lang'];
|
||||
$imageSliderLang = $imageSlide->getImageSliderLangByLangId($langId);
|
||||
@@ -136,22 +142,22 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
|
||||
|
||||
$imageSliderLang
|
||||
->setTitle($data['title'][$langId] ?? '')
|
||||
->setUrl($data['url'][$langId] ?? '')
|
||||
->setUrl($data['url'] ?? '')
|
||||
->setLegend($data['legend'][$langId] ?? '')
|
||||
->setDescription($data['description'][$langId] ?? '');
|
||||
|
||||
if (!empty($data['image'][$langId])) {
|
||||
if ($uploadedImage !== null) {
|
||||
if ($imageSliderLang->getImage() !== null) {
|
||||
$this->eraseFile($imageSliderLang->getImage());
|
||||
}
|
||||
$imageSliderLang->setImage($this->uploadFile($data['image'][$langId]));
|
||||
$imageSliderLang->setImage($uploadedImage);
|
||||
}
|
||||
|
||||
if (!empty($data['image_mobile'][$langId])) {
|
||||
if ($imageSliderLang->getImage() !== null) {
|
||||
if ($uploadedImageMobile !== null) {
|
||||
if ($imageSliderLang->getImageMobile() !== null) {
|
||||
$this->eraseFile($imageSliderLang->getImageMobile());
|
||||
}
|
||||
$imageSliderLang->setImageMobile($this->uploadFile($data['image_mobile'][$langId]));
|
||||
$imageSliderLang->setImageMobile($uploadedImageMobile);
|
||||
}
|
||||
|
||||
if ($newImageSliderLang) {
|
||||
|
||||
@@ -5,7 +5,6 @@ declare(strict_types=1);
|
||||
namespace Oksydan\IsImageslider\Form;
|
||||
|
||||
use Oksydan\IsImageslider\Translations\TranslationDomains;
|
||||
use Oksydan\IsImageslider\Type\TranslatableFile;
|
||||
use PrestaShopBundle\Form\Admin\Type\FormattedTextareaType;
|
||||
use PrestaShopBundle\Form\Admin\Type\ImagePreviewType;
|
||||
use PrestaShopBundle\Form\Admin\Type\ShopChoiceTreeType;
|
||||
@@ -63,37 +62,25 @@ class ImageSliderType extends TranslatorAwareType
|
||||
}
|
||||
|
||||
$builder
|
||||
->add('image_preview', TranslatableType::class, [
|
||||
'type' => ImagePreviewType::class,
|
||||
->add('image_preview', ImagePreviewType::class, [
|
||||
'label' => $this->trans('Image preview', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
|
||||
'locales' => $this->locales,
|
||||
'required' => false,
|
||||
])
|
||||
->add('image', TranslatableFile::class, [
|
||||
'type' => FileType::class,
|
||||
->add('image', FileType::class, [
|
||||
'label' => $this->trans('Image', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
|
||||
'locales' => $this->locales,
|
||||
'options' => [
|
||||
'data_class' => null,
|
||||
'constraints' => $imageConstrains,
|
||||
],
|
||||
'required' => true,
|
||||
'required' => !$isEdit,
|
||||
])
|
||||
->add('image_mobile_preview', TranslatableType::class, [
|
||||
'type' => ImagePreviewType::class,
|
||||
->add('image_mobile_preview', ImagePreviewType::class, [
|
||||
'label' => $this->trans('Image mobile preview', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
|
||||
'locales' => $this->locales,
|
||||
'required' => false,
|
||||
])
|
||||
->add('image_mobile', TranslatableFile::class, [
|
||||
'type' => FileType::class,
|
||||
->add('image_mobile', FileType::class, [
|
||||
'label' => $this->trans('Image mobile', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
|
||||
'locales' => $this->locales,
|
||||
'options' => [
|
||||
'data_class' => null,
|
||||
'constraints' => $imageConstrains,
|
||||
],
|
||||
'required' => true,
|
||||
'required' => false,
|
||||
])
|
||||
->add('title', TranslatableType::class, [
|
||||
'type' => TextType::class,
|
||||
@@ -107,16 +94,12 @@ class ImageSliderType extends TranslatorAwareType
|
||||
'locales' => $this->locales,
|
||||
'required' => false,
|
||||
])
|
||||
->add('url', TranslatableType::class, [
|
||||
'type' => TextType::class,
|
||||
->add('url', TextType::class, [
|
||||
'label' => $this->trans('Link', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
|
||||
'locales' => $this->locales,
|
||||
'required' => true,
|
||||
'options' => [
|
||||
'constraints' => [
|
||||
new NotBlank(),
|
||||
],
|
||||
],
|
||||
])
|
||||
->add('description', TranslatableType::class, [
|
||||
'type' => FormattedTextareaType::class,
|
||||
|
||||
@@ -77,16 +77,20 @@ class ImageSliderFormDataProvider implements FormDataProviderInterface
|
||||
$slideData['display_from'] = $imageSlide->getDisplayFrom();
|
||||
$slideData['display_to'] = $imageSlide->getDisplayTo();
|
||||
|
||||
$firstLang = true;
|
||||
foreach ($imageSlide->getSliderLangs() as $imageSlideLang) {
|
||||
$slideData['title'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getTitle();
|
||||
$slideData['legend'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getLegend();
|
||||
$slideData['url'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getUrl();
|
||||
$slideData['description'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getDescription();
|
||||
$slideData['image'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getImage();
|
||||
$slideData['image_mobile'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getImageMobile();
|
||||
|
||||
$slideData['image_preview'][$imageSlideLang->getLang()->getId()] = $this->imagesliderImageThumbProvider->getPath($imageSlideLang->getImage()) ?? $this->placeholderImage;
|
||||
$slideData['image_mobile_preview'][$imageSlideLang->getLang()->getId()] = $this->imagesliderImageThumbProvider->getPath($imageSlideLang->getImageMobile()) ?? $this->placeholderImage;
|
||||
if ($firstLang) {
|
||||
$slideData['url'] = $imageSlideLang->getUrl();
|
||||
$slideData['image'] = $imageSlideLang->getImage();
|
||||
$slideData['image_mobile'] = $imageSlideLang->getImageMobile();
|
||||
$slideData['image_preview'] = $this->imagesliderImageThumbProvider->getPath($imageSlideLang->getImage()) ?? $this->placeholderImage;
|
||||
$slideData['image_mobile_preview'] = $this->imagesliderImageThumbProvider->getPath($imageSlideLang->getImageMobile()) ?? $this->placeholderImage;
|
||||
$firstLang = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $slideData;
|
||||
@@ -113,11 +117,11 @@ class ImageSliderFormDataProvider implements FormDataProviderInterface
|
||||
public function getDefaultData(): array
|
||||
{
|
||||
return [
|
||||
'image_preview' => $this->getImagePreviewPlaceholder(),
|
||||
'image_mobile_preview' => $this->getImagePreviewPlaceholder(),
|
||||
'image_preview' => $this->placeholderImage,
|
||||
'image_mobile_preview' => $this->placeholderImage,
|
||||
'title' => [],
|
||||
'legend' => [],
|
||||
'url' => [],
|
||||
'url' => '',
|
||||
'description' => [],
|
||||
'active' => false,
|
||||
'display_from' => new \DateTime(),
|
||||
|
||||
@@ -58,7 +58,7 @@ final class ImageSliderQueryBuilder extends AbstractDoctrineQueryBuilder
|
||||
$searchCriteria->getOrderWay()
|
||||
)
|
||||
->setFirstResult($searchCriteria->getOffset() ?? 0)
|
||||
->setMaxResults($searchCriteria->getLimit());
|
||||
->setMaxResults($searchCriteria->getLimit() ?? 10);
|
||||
|
||||
$qb->orderBy('position');
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ return array(
|
||||
'Oksydan\\IsImageslider\\Hook\\AbstractHook' => $baseDir . '/src/Hook/AbstractHook.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\DisplayHeader' => $baseDir . '/src/Hook/DisplayHeader.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\DisplayHome' => $baseDir . '/src/Hook/DisplayHome.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\DisplayHeroSlider' => $baseDir . '/src/Hook/DisplayHeroSlider.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\HookInterface' => $baseDir . '/src/Hook/HookInterface.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\WidgetCapability' => $baseDir . '/src/Hook/WidgetCapability.php',
|
||||
'Oksydan\\IsImageslider\\Installer\\ActionDatabaseAbstract' => $baseDir . '/src/Installer/ActionDatabaseAbstract.php',
|
||||
|
||||
@@ -46,6 +46,7 @@ class ComposerStaticInit9ba08c95d0af82fb7a45da2b6d8d15e0
|
||||
'Oksydan\\IsImageslider\\Hook\\AbstractHook' => __DIR__ . '/../..' . '/src/Hook/AbstractHook.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\DisplayHeader' => __DIR__ . '/../..' . '/src/Hook/DisplayHeader.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\DisplayHome' => __DIR__ . '/../..' . '/src/Hook/DisplayHome.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\DisplayHeroSlider' => __DIR__ . '/../..' . '/src/Hook/DisplayHeroSlider.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\HookInterface' => __DIR__ . '/../..' . '/src/Hook/HookInterface.php',
|
||||
'Oksydan\\IsImageslider\\Hook\\WidgetCapability' => __DIR__ . '/../..' . '/src/Hook/WidgetCapability.php',
|
||||
'Oksydan\\IsImageslider\\Installer\\ActionDatabaseAbstract' => __DIR__ . '/../..' . '/src/Installer/ActionDatabaseAbstract.php',
|
||||
|
||||
Reference in New Issue
Block a user