8 Commits

11 changed files with 304 additions and 295 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
is_imageslider/vendor/

View File

@@ -1,7 +1,6 @@
imports: imports:
- { resource: ../common.yml } - { resource: ../common.yml }
services: services:
_defaults: _defaults:
public: true public: true
@@ -11,7 +10,7 @@ services:
public: true public: true
class: Oksydan\IsImageslider\Controller\IsImagesliderController class: Oksydan\IsImageslider\Controller\IsImagesliderController
arguments: arguments:
- '@oksydan.is_imageslider.handler.file_eraser' - "@oksydan.is_imageslider.handler.file_eraser"
- "@=service('prestashop.adapter.legacy.context').getLanguages(false)" - "@=service('prestashop.adapter.legacy.context').getLanguages(false)"
- "@oksydan.is_imageslider.cache.template_cache" - "@oksydan.is_imageslider.cache.template_cache"
@@ -19,144 +18,146 @@ services:
oksydan.is_imageslider.image_slider_installer: oksydan.is_imageslider.image_slider_installer:
class: 'Oksydan\IsImageslider\Installer\ImageSliderInstaller' class: 'Oksydan\IsImageslider\Installer\ImageSliderInstaller'
arguments: arguments:
- '@doctrine.dbal.default_connection' - "@doctrine.dbal.default_connection"
- '@oksydan.is_imageslider.installer.database_yml_parser' - "@oksydan.is_imageslider.installer.database_yml_parser"
- "@=service('prestashop.adapter.legacy.context').getContext()" - "@=service('prestashop.adapter.legacy.context').getContext()"
oksydan.is_imageslider.installer.database_yml_parser: oksydan.is_imageslider.installer.database_yml_parser:
class: 'Oksydan\IsImageslider\Installer\DatabaseYamlParser' class: 'Oksydan\IsImageslider\Installer\DatabaseYamlParser'
arguments: arguments:
- '@oksydan.is_imageslider.installer.database_yml_parser_provider' - "@oksydan.is_imageslider.installer.database_yml_parser_provider"
oksydan.is_imageslider.installer.database_yml_parser_provider: oksydan.is_imageslider.installer.database_yml_parser_provider:
class: 'Oksydan\IsImageslider\Installer\Provider\DatabaseYamlProvider' class: 'Oksydan\IsImageslider\Installer\Provider\DatabaseYamlProvider'
arguments: arguments:
- '@oksydan.is_imageslider.module' - "@oksydan.is_imageslider.module"
oksydan.is_imageslider.installer.action_databse_create_table: oksydan.is_imageslider.installer.action_databse_create_table:
class: 'Oksydan\IsImageslider\Installer\ActionDatabaseCrateTable' class: 'Oksydan\IsImageslider\Installer\ActionDatabaseCrateTable'
parent: 'oksydan.is_imageslider.installer.abstract_action_databse' parent: "oksydan.is_imageslider.installer.abstract_action_databse"
public: true public: true
oksydan.is_imageslider.installer.action_databse_drop_table: oksydan.is_imageslider.installer.action_databse_drop_table:
class: 'Oksydan\IsImageslider\Installer\ActionDatabaseDropTable' class: 'Oksydan\IsImageslider\Installer\ActionDatabaseDropTable'
parent: 'oksydan.is_imageslider.installer.abstract_action_databse' parent: "oksydan.is_imageslider.installer.abstract_action_databse"
public: true public: true
oksydan.is_imageslider.installer.abstract_action_databse: oksydan.is_imageslider.installer.abstract_action_databse:
class: 'Oksydan\IsImageslider\Installer\ActionDatabaseAbstract' class: 'Oksydan\IsImageslider\Installer\ActionDatabaseAbstract'
abstract: true abstract: true
arguments: arguments:
- '@doctrine.dbal.default_connection' - "@doctrine.dbal.default_connection"
- '%database_prefix%' - "%database_prefix%"
oksydan.is_imageslider.handler.file_uploader: oksydan.is_imageslider.handler.file_uploader:
class: 'Oksydan\IsImageslider\Handler\FileUploader' class: 'Oksydan\IsImageslider\Handler\FileUploader'
arguments: arguments:
$targetDirectory: '%is_imageslider_images_directory%' $targetDirectory: "%is_imageslider_images_directory%"
oksydan.is_imageslider.handler.file_eraser: oksydan.is_imageslider.handler.file_eraser:
class: 'Oksydan\IsImageslider\Handler\FileEraser' class: 'Oksydan\IsImageslider\Handler\FileEraser'
arguments: arguments:
$targetDirectory: '%is_imageslider_images_directory%' $targetDirectory: "%is_imageslider_images_directory%"
#creation/edition form #creation/edition form
oksydan.is_imageslider.form.identifiable_object.data_provider.image_slider_form_data_provider: oksydan.is_imageslider.form.identifiable_object.data_provider.image_slider_form_data_provider:
class: 'Oksydan\IsImageslider\Form\Provider\ImageSliderFormDataProvider' class: 'Oksydan\IsImageslider\Form\Provider\ImageSliderFormDataProvider'
arguments: arguments:
- '@oksydan.is_imageslider.repository.image_slider' - "@oksydan.is_imageslider.repository.image_slider"
- '@oksydan.is_imageslider.provider.image_provider' - "@oksydan.is_imageslider.provider.image_provider"
- '@prestashop.core.admin.lang.repository' - "@prestashop.core.admin.lang.repository"
- '%is_imageslider_placeholder_img%' - "%is_imageslider_placeholder_img%"
- '@prestashop.adapter.shop.context' - "@prestashop.adapter.shop.context"
oksydan.is_imageslider.form.identifiable_object.builder.image_slider_form_builder: oksydan.is_imageslider.form.identifiable_object.builder.image_slider_form_builder:
class: 'PrestaShop\PrestaShop\Core\Form\IdentifiableObject\Builder\FormBuilder' class: 'PrestaShop\PrestaShop\Core\Form\IdentifiableObject\Builder\FormBuilder'
factory: 'prestashop.core.form.builder.form_builder_factory:create' factory:
["@prestashop.core.form.builder.form_builder_factory", "create"]
arguments: arguments:
- 'Oksydan\IsImageslider\Form\ImageSliderType' - 'Oksydan\IsImageslider\Form\ImageSliderType'
- '@oksydan.is_imageslider.form.identifiable_object.data_provider.image_slider_form_data_provider' - "@oksydan.is_imageslider.form.identifiable_object.data_provider.image_slider_form_data_provider"
oksydan.is_imageslider.form.identifiable_object.data_handler.image_slider_form_data_handler: oksydan.is_imageslider.form.identifiable_object.data_handler.image_slider_form_data_handler:
class: 'Oksydan\IsImageslider\Form\DataHandler\ImageSliderFormDataHandler' class: 'Oksydan\IsImageslider\Form\DataHandler\ImageSliderFormDataHandler'
arguments: arguments:
- '@oksydan.is_imageslider.repository.image_slider' - "@oksydan.is_imageslider.repository.image_slider"
- '@prestashop.core.admin.lang.repository' - "@prestashop.core.admin.lang.repository"
- '@doctrine.orm.default_entity_manager' - "@doctrine.orm.default_entity_manager"
- '@oksydan.is_imageslider.handler.file_uploader' - "@oksydan.is_imageslider.handler.file_uploader"
- '@oksydan.is_imageslider.handler.file_eraser' - "@oksydan.is_imageslider.handler.file_eraser"
- "@=service('prestashop.adapter.legacy.context').getLanguages()" - "@=service('prestashop.adapter.legacy.context').getLanguages()"
oksydan.is_imageslider.form.identifiable_object.handler.image_slider_form_handler: oksydan.is_imageslider.form.identifiable_object.handler.image_slider_form_handler:
class: 'PrestaShop\PrestaShop\Core\Form\IdentifiableObject\Handler\FormHandler' class: 'PrestaShop\PrestaShop\Core\Form\IdentifiableObject\Handler\FormHandler'
factory: 'prestashop.core.form.identifiable_object.handler.form_handler_factory:create' factory:
[
"@prestashop.core.form.identifiable_object.handler.form_handler_factory",
"create",
]
arguments: arguments:
- '@oksydan.is_imageslider.form.identifiable_object.data_handler.image_slider_form_data_handler' - "@oksydan.is_imageslider.form.identifiable_object.data_handler.image_slider_form_data_handler"
#grid services #grid services
oksydan.is_imageslider.grid.definition.factory.image_sliders: oksydan.is_imageslider.grid.definition.factory.image_sliders:
class: 'Oksydan\IsImageslider\Grid\Definition\Factory\ImageSliderGridDefinitionFactory' class: 'Oksydan\IsImageslider\Grid\Definition\Factory\ImageSliderGridDefinitionFactory'
parent: 'prestashop.core.grid.definition.factory.abstract_grid_definition' parent: "prestashop.core.grid.definition.factory.abstract_grid_definition"
public: true public: true
oksydan.is_imageslider.grid.query.image_slider_query_builder: oksydan.is_imageslider.grid.query.image_slider_query_builder:
class: 'Oksydan\IsImageslider\Grid\Query\ImageSliderQueryBuilder' class: 'Oksydan\IsImageslider\Grid\Query\ImageSliderQueryBuilder'
parent: 'prestashop.core.grid.abstract_query_builder' parent: "prestashop.core.grid.abstract_query_builder"
public: true public: true
arguments: arguments:
- '@prestashop.adapter.shop.context' - "@prestashop.adapter.shop.context"
- "@=service('prestashop.adapter.legacy.context').getContext().language.id" - "@=service('prestashop.adapter.legacy.context').getContext().language.id"
oksydan.is_imageslider.grid.image_slider_grid_factory: oksydan.is_imageslider.grid.image_slider_grid_factory:
class: 'PrestaShop\PrestaShop\Core\Grid\GridFactory' class: 'PrestaShop\PrestaShop\Core\Grid\GridFactory'
arguments: arguments:
- '@oksydan.is_imageslider.grid.definition.factory.image_sliders' - "@oksydan.is_imageslider.grid.definition.factory.image_sliders"
- '@oksydan.is_imageslider.grid.data.factory.image_slider_decorator' - "@oksydan.is_imageslider.grid.data.factory.image_slider_decorator"
- '@prestashop.core.grid.filter.form_factory' - "@prestashop.core.grid.filter.form_factory"
- '@prestashop.core.hook.dispatcher' - "@prestashop.core.hook.dispatcher"
oksydan.is_imageslider.grid.data.factory.image_slider_data_factory: oksydan.is_imageslider.grid.data.factory.image_slider_data_factory:
class: '%prestashop.core.grid.data.factory.doctrine_grid_data_factory%' class: "%prestashop.core.grid.data.factory.doctrine_grid_data_factory%"
arguments: arguments:
- '@oksydan.is_imageslider.grid.query.image_slider_query_builder' - "@oksydan.is_imageslider.grid.query.image_slider_query_builder"
- '@prestashop.core.hook.dispatcher' - "@prestashop.core.hook.dispatcher"
- '@prestashop.core.grid.query.doctrine_query_parser' - "@prestashop.core.grid.query.doctrine_query_parser"
- 'is_imageslider' - "is_imageslider"
oksydan.is_imageslider.grid.data.factory.image_slider_decorator: oksydan.is_imageslider.grid.data.factory.image_slider_decorator:
class: 'Oksydan\IsImageslider\Grid\Data\Factory\ImageSliderGridDataFactory' class: 'Oksydan\IsImageslider\Grid\Data\Factory\ImageSliderGridDataFactory'
arguments: arguments:
- '@oksydan.is_imageslider.grid.data.factory.image_slider_data_factory' - "@oksydan.is_imageslider.grid.data.factory.image_slider_data_factory"
- '@oksydan.is_imageslider.provider.image_provider' - "@oksydan.is_imageslider.provider.image_provider"
# config form # config form
oksydan.is_imageslider.image_slider.configuration: oksydan.is_imageslider.image_slider.configuration:
class: 'Oksydan\IsImageslider\Form\DataConfiguration\ImageSliderDataConfiguration' class: 'Oksydan\IsImageslider\Form\DataConfiguration\ImageSliderDataConfiguration'
arguments: arguments:
- '@prestashop.adapter.legacy.configuration' - "@prestashop.adapter.legacy.configuration"
- '@prestashop.adapter.shop.context' - "@prestashop.adapter.shop.context"
- '@prestashop.adapter.multistore_feature' - "@prestashop.adapter.multistore_feature"
oksydan.is_imageslider.image_slider_configuration.form_provider: oksydan.is_imageslider.image_slider_configuration.form_provider:
class: 'Oksydan\IsImageslider\Form\Provider\ImageSliderConfigurationFormDataProvider' class: 'Oksydan\IsImageslider\Form\Provider\ImageSliderConfigurationFormDataProvider'
arguments: arguments:
- '@oksydan.is_imageslider.image_slider.configuration' - "@oksydan.is_imageslider.image_slider.configuration"
oksydan.is_imageslider.image_slider_configuration.form_handler: oksydan.is_imageslider.image_slider_configuration.form_handler:
class: 'PrestaShop\PrestaShop\Core\Form\Handler' class: 'PrestaShop\PrestaShop\Core\Form\Handler'
arguments: arguments:
- '@form.factory' - "@form.factory"
- '@prestashop.core.hook.dispatcher' - "@prestashop.core.hook.dispatcher"
- '@oksydan.is_imageslider.image_slider_configuration.form_provider' - "@oksydan.is_imageslider.image_slider_configuration.form_provider"
- 'Oksydan\IsImageslider\Form\ImageSliderConfigurationType' - 'Oksydan\IsImageslider\Form\ImageSliderConfigurationType'
- 'ConfigurationForm' - "ConfigurationForm"
oksydan.is_imageslider.form.image_slider_type: oksydan.is_imageslider.form.image_slider_type:
class: 'Oksydan\IsImageslider\Form\ImageSliderType' class: 'Oksydan\IsImageslider\Form\ImageSliderType'
parent: 'form.type.translatable.aware' parent: "form.type.translatable.aware"
arguments: arguments:
- '@=service("prestashop.adapter.multistore_feature").isUsed()' - '@=service("prestashop.adapter.multistore_feature").isUsed()'
public: true public: true
@@ -165,27 +166,32 @@ services:
oksydan.is_imageslider.form.image_slider_configuration_type: oksydan.is_imageslider.form.image_slider_configuration_type:
class: 'Oksydan\IsImageslider\Form\ImageSliderConfigurationType' class: 'Oksydan\IsImageslider\Form\ImageSliderConfigurationType'
parent: 'form.type.translatable.aware' parent: "form.type.translatable.aware"
public: true public: true
tags: tags:
- { name: form.type } - { name: form.type }
Oksydan\IsImageslider\Type\TranslatableFile: Oksydan\IsImageslider\Type\TranslatableFile:
class: 'Oksydan\IsImageslider\Type\TranslatableFile' class: 'Oksydan\IsImageslider\Type\TranslatableFile'
parent: 'form.type.common.translatable' parent: "form.type.translatable.aware"
public: true public: true
tags: tags:
- { name: form.type } - { name: form.type }
arguments:
$availableLocales: "@=service('prestashop.adapter.legacy.context').getLanguages()"
$saveFormLocaleChoice: false
$defaultFormLanguageId: "@=service('prestashop.adapter.legacy.context').getLanguage().id"
$defaultShopLanguageId: "@=service('prestashop.adapter.legacy.context').getLanguage().id"
oksydan.is_imageslider.grid.position_definition: oksydan.is_imageslider.grid.position_definition:
class: PrestaShop\PrestaShop\Core\Grid\Position\PositionDefinition class: PrestaShop\PrestaShop\Core\Grid\Position\PositionDefinition
arguments: arguments:
- 'image_slider' - "image_slider"
- 'id_slide' - "id_slide"
- 'position' - "position"
oksydan.is_imageslider.provider.image_provider: oksydan.is_imageslider.provider.image_provider:
class: 'Oksydan\IsImageslider\Provider\ImageProvider' class: 'Oksydan\IsImageslider\Provider\ImageProvider'
public: true public: true
arguments: arguments:
- '%is_imageslider_images_uri%' - "%is_imageslider_images_uri%"

View File

@@ -1,8 +1,8 @@
parameters: 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_module_uri: !php/const _MODULE_DIR_
is_imageslider_images_uri: '%is_imageslider_module_uri%is_imageslider/img/' is_imageslider_images_uri: "%is_imageslider_module_uri%is_imageslider/img/"
is_imageslider_placeholder_img: '/modules/is_imageslider/views/img/placeholder.jpeg' is_imageslider_placeholder_img: "/modules/is_imageslider/views/img/placeholder.jpeg"
services: services:
_defaults: _defaults:
@@ -10,15 +10,15 @@ services:
oksydan.is_imageslider.module: oksydan.is_imageslider.module:
class: Is_imageslider class: Is_imageslider
factory: [ 'Module', 'getInstanceByName' ] factory: ["Module", "getInstanceByName"]
public: false public: false
arguments: arguments:
- 'is_imageslider' - "is_imageslider"
oksydan.is_imageslider.repository.image_slider: oksydan.is_imageslider.repository.image_slider:
class: Oksydan\IsImageslider\Repository\ImageSliderRepository class: Oksydan\IsImageslider\Repository\ImageSliderRepository
public: true public: true
factory: ['@doctrine.orm.default_entity_manager', getRepository] factory: ["@doctrine.orm.default_entity_manager", getRepository]
arguments: arguments:
- Oksydan\IsImageslider\Entity\ImageSlider - Oksydan\IsImageslider\Entity\ImageSlider
@@ -26,15 +26,15 @@ services:
class: Oksydan\IsImageslider\Repository\HookModuleRepository class: Oksydan\IsImageslider\Repository\HookModuleRepository
public: true public: true
arguments: arguments:
- '@doctrine.dbal.default_connection' - "@doctrine.dbal.default_connection"
- '%database_prefix%' - "%database_prefix%"
oksydan.is_imageslider.presenter.image_slide_presenter: oksydan.is_imageslider.presenter.image_slide_presenter:
class: Oksydan\IsImageslider\Presenter\ImageSlidePresenter class: Oksydan\IsImageslider\Presenter\ImageSlidePresenter
public: true public: true
arguments: arguments:
- '%is_imageslider_images_uri%' - "%is_imageslider_images_uri%"
- '%is_imageslider_images_directory%' - "%is_imageslider_images_directory%"
- "@=service('prestashop.adapter.legacy.context').getContext()" - "@=service('prestashop.adapter.legacy.context').getContext()"
oksydan.is_imageslider.configuration.slider_configuration: oksydan.is_imageslider.configuration.slider_configuration:
@@ -45,47 +45,52 @@ services:
class: Oksydan\IsImageslider\Hook\AbstractHook class: Oksydan\IsImageslider\Hook\AbstractHook
public: true public: true
arguments: arguments:
- '@oksydan.is_imageslider.module' - "@oksydan.is_imageslider.module"
- "@=service('prestashop.adapter.legacy.context').getContext()" - "@=service('prestashop.adapter.legacy.context').getContext()"
oksydan.is_imageslider.hook.abstract_display_hook: oksydan.is_imageslider.hook.abstract_display_hook:
class: Oksydan\IsImageslider\Hook\AbstractDisplayHook class: Oksydan\IsImageslider\Hook\AbstractDisplayHook
parent: 'oksydan.is_imageslider.hook.abstract_hook' parent: "oksydan.is_imageslider.hook.abstract_hook"
public: true public: true
arguments: arguments:
- '@oksydan.is_imageslider.configuration.slider_configuration' - "@oksydan.is_imageslider.configuration.slider_configuration"
oksydan.is_imageslider.hook.abstract_cacheable_display_hook: oksydan.is_imageslider.hook.abstract_cacheable_display_hook:
class: Oksydan\IsImageslider\Hook\AbstractCacheableDisplayHook class: Oksydan\IsImageslider\Hook\AbstractCacheableDisplayHook
parent: 'oksydan.is_imageslider.hook.abstract_display_hook' parent: "oksydan.is_imageslider.hook.abstract_display_hook"
public: true public: true
arguments: arguments:
- '@oksydan.is_imageslider.repository.image_slider' - "@oksydan.is_imageslider.repository.image_slider"
- '@oksydan.is_imageslider.presenter.image_slide_presenter' - "@oksydan.is_imageslider.presenter.image_slide_presenter"
- '@oksydan.is_imageslider.cache.template_cache' - "@oksydan.is_imageslider.cache.template_cache"
oksydan.is_imageslider.hook.display_home: oksydan.is_imageslider.hook.display_home:
class: Oksydan\IsImageslider\Hook\DisplayHome 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 public: true
oksydan.is_imageslider.hook.display_header: oksydan.is_imageslider.hook.display_header:
class: Oksydan\IsImageslider\Hook\DisplayHeader 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 public: true
# Modification of the module into a widget # Modification of the module into a widget
oksydan.is_imageslider.hook.widget_capability: oksydan.is_imageslider.hook.widget_capability:
class: Oksydan\IsImageslider\Hook\WidgetCapability 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 public: true
oksydan.is_imageslider.cache.template_cache: oksydan.is_imageslider.cache.template_cache:
class: Oksydan\IsImageslider\Cache\TemplateCache class: Oksydan\IsImageslider\Cache\TemplateCache
public: true public: true
arguments: arguments:
- '@oksydan.is_imageslider.module' - "@oksydan.is_imageslider.module"
- "@=service('prestashop.adapter.legacy.context').getContext()" - "@=service('prestashop.adapter.legacy.context').getContext()"
- '@oksydan.is_imageslider.repository.hook_module_repository' - "@oksydan.is_imageslider.repository.hook_module_repository"
- '@prestashop.adapter.legacy.configuration' - "@prestashop.adapter.legacy.configuration"
- '@oksydan.is_imageslider.repository.image_slider' - "@oksydan.is_imageslider.repository.image_slider"

View File

@@ -10,6 +10,7 @@ if (file_exists(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/vendor/autoload.php';
} }
use Symfony\Component\HttpFoundation\RedirectResponse;
use Oksydan\IsImageslider\Hook\HookInterface; use Oksydan\IsImageslider\Hook\HookInterface;
use Oksydan\IsImageslider\Installer\ImageSliderInstaller; use Oksydan\IsImageslider\Installer\ImageSliderInstaller;
use PrestaShop\PrestaShop\Adapter\SymfonyContainer; use PrestaShop\PrestaShop\Adapter\SymfonyContainer;
@@ -55,6 +56,7 @@ class Is_imageslider extends Module implements WidgetInterface
parent::install() parent::install()
&& $this->registerHook('displayHeader') && $this->registerHook('displayHeader')
&& $this->registerHook('displayHome') && $this->registerHook('displayHome')
&& $this->registerHook('displayHeroSlider')
&& $this->getInstaller()->createTables(); && $this->getInstaller()->createTables();
} }
@@ -66,11 +68,11 @@ class Is_imageslider extends Module implements WidgetInterface
return $this->getInstaller()->dropTables() && parent::uninstall(); 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 * @template T
* *

View File

@@ -79,6 +79,9 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
$imageSlide->setPosition($this->imageSliderRepository->getHighestPosition() + 1); $imageSlide->setPosition($this->imageSliderRepository->getHighestPosition() + 1);
$this->addAssociatedShops($imageSlide, $data['shop_association'] ?? null); $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) { foreach ($this->languages as $language) {
$langId = (int) $language['id_lang']; $langId = (int) $language['id_lang'];
$lang = $this->langRepository->findOneById($langId); $lang = $this->langRepository->findOneById($langId);
@@ -87,16 +90,16 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
$imageSliderLang $imageSliderLang
->setLang($lang) ->setLang($lang)
->setTitle($data['title'][$langId] ?? '') ->setTitle($data['title'][$langId] ?? '')
->setUrl($data['url'][$langId] ?? '') ->setUrl($data['url'] ?? '')
->setLegend($data['legend'][$langId] ?? '') ->setLegend($data['legend'][$langId] ?? '')
->setDescription($data['description'][$langId] ?? ''); ->setDescription($data['description'][$langId] ?? '');
if (!empty($data['image'][$langId])) { if ($uploadedImage !== null) {
$imageSliderLang->setImage($this->uploadFile($data['image'][$langId])); $imageSliderLang->setImage($uploadedImage);
} }
if (!empty($data['image_mobile'][$langId])) { if ($uploadedImageMobile !== null) {
$imageSliderLang->setImageMobile($this->uploadFile($data['image_mobile'][$langId])); $imageSliderLang->setImageMobile($uploadedImageMobile);
} }
$imageSlide->addImageSliderLang($imageSliderLang); $imageSlide->addImageSliderLang($imageSliderLang);
@@ -122,6 +125,9 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
$imageSlide->setDisplayTo($data['display_to'] ?? new \DateTime()); $imageSlide->setDisplayTo($data['display_to'] ?? new \DateTime());
$this->addAssociatedShops($imageSlide, $data['shop_association'] ?? null); $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) { foreach ($this->languages as $language) {
$langId = (int) $language['id_lang']; $langId = (int) $language['id_lang'];
$imageSliderLang = $imageSlide->getImageSliderLangByLangId($langId); $imageSliderLang = $imageSlide->getImageSliderLangByLangId($langId);
@@ -136,22 +142,22 @@ class ImageSliderFormDataHandler implements FormDataHandlerInterface
$imageSliderLang $imageSliderLang
->setTitle($data['title'][$langId] ?? '') ->setTitle($data['title'][$langId] ?? '')
->setUrl($data['url'][$langId] ?? '') ->setUrl($data['url'] ?? '')
->setLegend($data['legend'][$langId] ?? '') ->setLegend($data['legend'][$langId] ?? '')
->setDescription($data['description'][$langId] ?? ''); ->setDescription($data['description'][$langId] ?? '');
if (!empty($data['image'][$langId])) { if ($uploadedImage !== null) {
if ($imageSliderLang->getImage() !== null) { if ($imageSliderLang->getImage() !== null) {
$this->eraseFile($imageSliderLang->getImage()); $this->eraseFile($imageSliderLang->getImage());
} }
$imageSliderLang->setImage($this->uploadFile($data['image'][$langId])); $imageSliderLang->setImage($uploadedImage);
} }
if (!empty($data['image_mobile'][$langId])) { if ($uploadedImageMobile !== null) {
if ($imageSliderLang->getImage() !== null) { if ($imageSliderLang->getImageMobile() !== null) {
$this->eraseFile($imageSliderLang->getImageMobile()); $this->eraseFile($imageSliderLang->getImageMobile());
} }
$imageSliderLang->setImageMobile($this->uploadFile($data['image_mobile'][$langId])); $imageSliderLang->setImageMobile($uploadedImageMobile);
} }
if ($newImageSliderLang) { if ($newImageSliderLang) {

View File

@@ -43,8 +43,7 @@ class ImageSliderConfigurationType extends TranslatorAwareType
'min' => $minTime, 'min' => $minTime,
'max' => $maxTime, 'max' => $maxTime,
'invalidMessage' => $rangeInvalidMessage, 'invalidMessage' => $rangeInvalidMessage,
'maxMessage' => $rangeInvalidMessage, 'notInRangeMessage' => $rangeInvalidMessage
'minMessage' => $rangeInvalidMessage,
]), ]),
], ],
]) ])

View File

@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Oksydan\IsImageslider\Form; namespace Oksydan\IsImageslider\Form;
use Oksydan\IsImageslider\Translations\TranslationDomains; use Oksydan\IsImageslider\Translations\TranslationDomains;
use Oksydan\IsImageslider\Type\TranslatableFile;
use PrestaShopBundle\Form\Admin\Type\FormattedTextareaType; use PrestaShopBundle\Form\Admin\Type\FormattedTextareaType;
use PrestaShopBundle\Form\Admin\Type\ImagePreviewType; use PrestaShopBundle\Form\Admin\Type\ImagePreviewType;
use PrestaShopBundle\Form\Admin\Type\ShopChoiceTreeType; use PrestaShopBundle\Form\Admin\Type\ShopChoiceTreeType;
@@ -16,7 +15,7 @@ use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Validator\Constraints\File; use Symfony\Component\Validator\Constraints\File;
use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Validator\Constraints\NotBlank;
@@ -63,37 +62,25 @@ class ImageSliderType extends TranslatorAwareType
} }
$builder $builder
->add('image_preview', TranslatableType::class, [ ->add('image_preview', ImagePreviewType::class, [
'type' => ImagePreviewType::class,
'label' => $this->trans('Image preview', TranslationDomains::TRANSLATION_DOMAIN_ADMIN), 'label' => $this->trans('Image preview', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
'locales' => $this->locales,
'required' => false, 'required' => false,
]) ])
->add('image', TranslatableFile::class, [ ->add('image', FileType::class, [
'type' => FileType::class,
'label' => $this->trans('Image', TranslationDomains::TRANSLATION_DOMAIN_ADMIN), 'label' => $this->trans('Image', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
'locales' => $this->locales,
'options' => [
'data_class' => null, 'data_class' => null,
'constraints' => $imageConstrains, 'constraints' => $imageConstrains,
], 'required' => !$isEdit,
'required' => true,
]) ])
->add('image_mobile_preview', TranslatableType::class, [ ->add('image_mobile_preview', ImagePreviewType::class, [
'type' => ImagePreviewType::class,
'label' => $this->trans('Image mobile preview', TranslationDomains::TRANSLATION_DOMAIN_ADMIN), 'label' => $this->trans('Image mobile preview', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
'locales' => $this->locales,
'required' => false, 'required' => false,
]) ])
->add('image_mobile', TranslatableFile::class, [ ->add('image_mobile', FileType::class, [
'type' => FileType::class,
'label' => $this->trans('Image mobile', TranslationDomains::TRANSLATION_DOMAIN_ADMIN), 'label' => $this->trans('Image mobile', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
'locales' => $this->locales,
'options' => [
'data_class' => null, 'data_class' => null,
'constraints' => $imageConstrains, 'constraints' => $imageConstrains,
], 'required' => false,
'required' => true,
]) ])
->add('title', TranslatableType::class, [ ->add('title', TranslatableType::class, [
'type' => TextType::class, 'type' => TextType::class,
@@ -107,16 +94,12 @@ class ImageSliderType extends TranslatorAwareType
'locales' => $this->locales, 'locales' => $this->locales,
'required' => false, 'required' => false,
]) ])
->add('url', TranslatableType::class, [ ->add('url', TextType::class, [
'type' => TextType::class,
'label' => $this->trans('Link', TranslationDomains::TRANSLATION_DOMAIN_ADMIN), 'label' => $this->trans('Link', TranslationDomains::TRANSLATION_DOMAIN_ADMIN),
'locales' => $this->locales,
'required' => true, 'required' => true,
'options' => [
'constraints' => [ 'constraints' => [
new NotBlank(), new NotBlank(),
], ],
],
]) ])
->add('description', TranslatableType::class, [ ->add('description', TranslatableType::class, [
'type' => FormattedTextareaType::class, 'type' => FormattedTextareaType::class,

View File

@@ -77,16 +77,20 @@ class ImageSliderFormDataProvider implements FormDataProviderInterface
$slideData['display_from'] = $imageSlide->getDisplayFrom(); $slideData['display_from'] = $imageSlide->getDisplayFrom();
$slideData['display_to'] = $imageSlide->getDisplayTo(); $slideData['display_to'] = $imageSlide->getDisplayTo();
$firstLang = true;
foreach ($imageSlide->getSliderLangs() as $imageSlideLang) { foreach ($imageSlide->getSliderLangs() as $imageSlideLang) {
$slideData['title'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getTitle(); $slideData['title'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getTitle();
$slideData['legend'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getLegend(); $slideData['legend'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getLegend();
$slideData['url'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getUrl();
$slideData['description'][$imageSlideLang->getLang()->getId()] = $imageSlideLang->getDescription(); $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; if ($firstLang) {
$slideData['image_mobile_preview'][$imageSlideLang->getLang()->getId()] = $this->imagesliderImageThumbProvider->getPath($imageSlideLang->getImageMobile()) ?? $this->placeholderImage; $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; return $slideData;
@@ -113,11 +117,11 @@ class ImageSliderFormDataProvider implements FormDataProviderInterface
public function getDefaultData(): array public function getDefaultData(): array
{ {
return [ return [
'image_preview' => $this->getImagePreviewPlaceholder(), 'image_preview' => $this->placeholderImage,
'image_mobile_preview' => $this->getImagePreviewPlaceholder(), 'image_mobile_preview' => $this->placeholderImage,
'title' => [], 'title' => [],
'legend' => [], 'legend' => [],
'url' => [], 'url' => '',
'description' => [], 'description' => [],
'active' => false, 'active' => false,
'display_from' => new \DateTime(), 'display_from' => new \DateTime(),

View File

@@ -57,8 +57,8 @@ final class ImageSliderQueryBuilder extends AbstractDoctrineQueryBuilder
$searchCriteria->getOrderBy(), $searchCriteria->getOrderBy(),
$searchCriteria->getOrderWay() $searchCriteria->getOrderWay()
) )
->setFirstResult($searchCriteria->getOffset()) ->setFirstResult($searchCriteria->getOffset() ?? 0)
->setMaxResults($searchCriteria->getLimit()); ->setMaxResults($searchCriteria->getLimit() ?? 10);
$qb->orderBy('position'); $qb->orderBy('position');

View File

@@ -31,6 +31,7 @@ return array(
'Oksydan\\IsImageslider\\Hook\\AbstractHook' => $baseDir . '/src/Hook/AbstractHook.php', 'Oksydan\\IsImageslider\\Hook\\AbstractHook' => $baseDir . '/src/Hook/AbstractHook.php',
'Oksydan\\IsImageslider\\Hook\\DisplayHeader' => $baseDir . '/src/Hook/DisplayHeader.php', 'Oksydan\\IsImageslider\\Hook\\DisplayHeader' => $baseDir . '/src/Hook/DisplayHeader.php',
'Oksydan\\IsImageslider\\Hook\\DisplayHome' => $baseDir . '/src/Hook/DisplayHome.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\\HookInterface' => $baseDir . '/src/Hook/HookInterface.php',
'Oksydan\\IsImageslider\\Hook\\WidgetCapability' => $baseDir . '/src/Hook/WidgetCapability.php', 'Oksydan\\IsImageslider\\Hook\\WidgetCapability' => $baseDir . '/src/Hook/WidgetCapability.php',
'Oksydan\\IsImageslider\\Installer\\ActionDatabaseAbstract' => $baseDir . '/src/Installer/ActionDatabaseAbstract.php', 'Oksydan\\IsImageslider\\Installer\\ActionDatabaseAbstract' => $baseDir . '/src/Installer/ActionDatabaseAbstract.php',

View File

@@ -46,6 +46,7 @@ class ComposerStaticInit9ba08c95d0af82fb7a45da2b6d8d15e0
'Oksydan\\IsImageslider\\Hook\\AbstractHook' => __DIR__ . '/../..' . '/src/Hook/AbstractHook.php', 'Oksydan\\IsImageslider\\Hook\\AbstractHook' => __DIR__ . '/../..' . '/src/Hook/AbstractHook.php',
'Oksydan\\IsImageslider\\Hook\\DisplayHeader' => __DIR__ . '/../..' . '/src/Hook/DisplayHeader.php', 'Oksydan\\IsImageslider\\Hook\\DisplayHeader' => __DIR__ . '/../..' . '/src/Hook/DisplayHeader.php',
'Oksydan\\IsImageslider\\Hook\\DisplayHome' => __DIR__ . '/../..' . '/src/Hook/DisplayHome.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\\HookInterface' => __DIR__ . '/../..' . '/src/Hook/HookInterface.php',
'Oksydan\\IsImageslider\\Hook\\WidgetCapability' => __DIR__ . '/../..' . '/src/Hook/WidgetCapability.php', 'Oksydan\\IsImageslider\\Hook\\WidgetCapability' => __DIR__ . '/../..' . '/src/Hook/WidgetCapability.php',
'Oksydan\\IsImageslider\\Installer\\ActionDatabaseAbstract' => __DIR__ . '/../..' . '/src/Installer/ActionDatabaseAbstract.php', 'Oksydan\\IsImageslider\\Installer\\ActionDatabaseAbstract' => __DIR__ . '/../..' . '/src/Installer/ActionDatabaseAbstract.php',