From 3c90d2c5d800ca943e4cc38a0d12015dcb471eea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hyacinthe=20Compaor=C3=A9?=
<131278191+compaoreh338@users.noreply.github.com>
Date: Fri, 19 Sep 2025 17:35:03 +0000
Subject: [PATCH 01/11] FEAT: v12
---
Classes/Controller/GalleryController.php | 25 ++++++++++----------
Classes/Persistence/Matcher.php | 7 +++---
Classes/ViewHelpers/ImageStackViewHelper.php | 20 +++++++++++++++-
Classes/ViewHelpers/LoadAssetsViewHelper.php | 24 +++++++++++--------
composer.json | 2 +-
ext_localconf.php | 2 +-
ext_tables.php | 2 +-
7 files changed, 51 insertions(+), 31 deletions(-)
diff --git a/Classes/Controller/GalleryController.php b/Classes/Controller/GalleryController.php
index 2b18bb97..c7358cbb 100644
--- a/Classes/Controller/GalleryController.php
+++ b/Classes/Controller/GalleryController.php
@@ -32,13 +32,11 @@
class GalleryController extends ActionController
{
protected ImageGalleryRepository $galleryRepository;
-
protected DemandFactory $demandFactory;
-
protected OrderFactory $orderFactory;
+ protected CategoryRepository $categoryRepository;
protected array $configuration = array();
-
protected $settings = [];
protected array $allowedColumns = [
@@ -48,11 +46,16 @@ class GalleryController extends ActionController
'uid',
];
- public function initializeAction(): void
- {
- $this->galleryRepository = GeneralUtility::makeInstance(ImageGalleryRepository::class);
- $this->orderFactory = GeneralUtility::makeInstance(OrderFactory::class);
- $this->demandFactory = GeneralUtility::makeInstance(DemandFactory::class);
+ public function __construct(
+ ImageGalleryRepository $galleryRepository,
+ DemandFactory $demandFactory,
+ OrderFactory $orderFactory,
+ CategoryRepository $categoryRepository
+ ) {
+ $this->galleryRepository = $galleryRepository;
+ $this->demandFactory = $demandFactory;
+ $this->orderFactory = $orderFactory;
+ $this->categoryRepository = $categoryRepository;
}
/**
@@ -68,7 +71,7 @@ public function listAction()
$images = $this->galleryRepository->findByDemand($this->getDemand(), (array)$this->getOrderings(),0,0);
$identifiers = GeneralUtility::trimExplode(',', $this->settings['categories'], TRUE);
- $categories = $this->getCategoryRepository()->findByIdentifiers($identifiers);
+ $categories = $this->categoryRepository->findByIdentifiers($identifiers);
// Assign template variables
$this->view->assign('settings', $this->settings);
$this->view->assign('data', $this->configurationManager->getcontentObject()->data);
@@ -83,10 +86,6 @@ protected function getOrderings(): \Fab\NaturalGallery\Persistence\Order
}
- protected function getCategoryRepository(): CategoryRepository
- {
- return GeneralUtility::makeInstance(CategoryRepository::class);
- }
protected function getDemand(): array
{
diff --git a/Classes/Persistence/Matcher.php b/Classes/Persistence/Matcher.php
index 24e80f21..f2d6bb34 100644
--- a/Classes/Persistence/Matcher.php
+++ b/Classes/Persistence/Matcher.php
@@ -265,13 +265,12 @@ public function getIn(): array
/**
* @param $fieldNameAndPath
* @param $operand
- * @param bool $addWildCard
* @return $this
*/
- public function like($fieldNameAndPath, $operand, bool $addWildCard = true): self
+ public function like($fieldNameAndPath, $operand): self
{
- $wildCardSymbol = $addWildCard ? '%' : '';
- $this->like[] = ['fieldNameAndPath' => $fieldNameAndPath, 'operand' => $wildCardSymbol . $operand . $wildCardSymbol];
+ // Add wildcards by default for LIKE queries
+ $this->like[] = ['fieldNameAndPath' => $fieldNameAndPath, 'operand' => '%' . $operand . '%'];
return $this;
}
diff --git a/Classes/ViewHelpers/ImageStackViewHelper.php b/Classes/ViewHelpers/ImageStackViewHelper.php
index 928adb0a..90b8609a 100644
--- a/Classes/ViewHelpers/ImageStackViewHelper.php
+++ b/Classes/ViewHelpers/ImageStackViewHelper.php
@@ -20,6 +20,8 @@
use TYPO3\CMS\Core\Resource\ProcessedFile;
use TYPO3\CMS\Core\Resource\ResourceFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Core\Site\SiteFinder;
+use TYPO3\CMS\Core\Context\Context;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
/**
@@ -60,7 +62,7 @@ public function render(): string
},$metadataCategories);
}
- $baseUrl = GeneralUtility::getIndpEnv('TYPO3_SITE_URL');
+ $baseUrl = $this->getSiteUrl();
$item = [
'thumbnail' => $baseUrl . $thumbnailFile->getPublicUrl(),
'enlarged' => $baseUrl . $enlargedFile->getPublicUrl(),
@@ -112,4 +114,20 @@ public function getSettings()
{
return $this->templateVariableContainer->get('settings');
}
+
+ /**
+ * Get the site URL
+ * @return string
+ */
+ protected function getSiteUrl(): string
+ {
+ $siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
+
+ // Get current page ID from context or fallback to 1
+ $context = GeneralUtility::makeInstance(Context::class);
+ $pageId = $context->getPropertyFromAspect('frontend.page', 'id', 1);
+
+ $site = $siteFinder->getSiteByPageId($pageId);
+ return (string)$site->getBase();
+ }
}
diff --git a/Classes/ViewHelpers/LoadAssetsViewHelper.php b/Classes/ViewHelpers/LoadAssetsViewHelper.php
index 84fd4fb4..0cad6d00 100644
--- a/Classes/ViewHelpers/LoadAssetsViewHelper.php
+++ b/Classes/ViewHelpers/LoadAssetsViewHelper.php
@@ -28,6 +28,18 @@
*/
class LoadAssetsViewHelper extends AbstractViewHelper
{
+ /**
+ * @var PageRenderer
+ */
+ protected PageRenderer $pageRenderer;
+
+ /**
+ * @param PageRenderer $pageRenderer
+ */
+ public function __construct(PageRenderer $pageRenderer)
+ {
+ $this->pageRenderer = $pageRenderer;
+ }
/**
* @return void
@@ -78,9 +90,9 @@ protected function loadByCorePageRender(array $asset): void
$fileNameAndPath = PathUtility::stripPathSitePrefix($fileNameAndPath);
if ($asset['type'] === 'js') {
- $this->getPageRenderer()->addJsFooterFile($fileNameAndPath);
+ $this->pageRenderer->addJsFooterFile($fileNameAndPath);
} elseif ($asset['type'] === 'css') {
- $this->getPageRenderer()->addCssFile($fileNameAndPath);
+ $this->pageRenderer->addCssFile($fileNameAndPath);
}
}
@@ -125,14 +137,6 @@ protected function resolveFileForApplicationContext(array $asset): string
return $resolvedFile;
}
- /**
- * @return PageRenderer
- */
- protected function getPageRenderer(): PageRenderer
- {
- return GeneralUtility::makeInstance(PageRenderer::class);
- }
-
/**
* Returns an instance of the Frontend object.
*
diff --git a/composer.json b/composer.json
index 4824d873..f65ebb9b 100644
--- a/composer.json
+++ b/composer.json
@@ -27,6 +27,6 @@
}
},
"require": {
- "typo3/cms-core": "^11.5"
+ "typo3/cms-core": "^11.5 | ^12"
}
}
diff --git a/ext_localconf.php b/ext_localconf.php
index 9f1a08e2..163a0518 100644
--- a/ext_localconf.php
+++ b/ext_localconf.php
@@ -2,7 +2,7 @@
use Fab\NaturalGallery\Controller\GalleryController;
-defined('TYPO3_MODE') or die();
+defined('TYPO3') or die();
call_user_func(
function () {
diff --git a/ext_tables.php b/ext_tables.php
index 99e5a011..fa8d6037 100644
--- a/ext_tables.php
+++ b/ext_tables.php
@@ -1,5 +1,5 @@
Date: Mon, 22 Sep 2025 10:07:38 +0000
Subject: [PATCH 02/11] fixup! FEAT: v12
---
composer.json | 2 +-
ext_emconf.php | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/composer.json b/composer.json
index f65ebb9b..7018d477 100644
--- a/composer.json
+++ b/composer.json
@@ -19,7 +19,7 @@
}
},
"replace": {
- "fab/natural_gallery": "self.version"
+ "fab/natural-gallery": "self.version"
},
"extra": {
"typo3/cms": {
diff --git a/ext_emconf.php b/ext_emconf.php
index 6ca3c064..45932676 100644
--- a/ext_emconf.php
+++ b/ext_emconf.php
@@ -1,5 +1,7 @@
'Natural Gallery',
'description' => 'A lazy load, infinite scroll and natural layout list gallery',
From 952daaba43842a23c87e0fbf5de74415afe048e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hyacinthe=20Compaor=C3=A9?=
<131278191+compaoreh338@users.noreply.github.com>
Date: Mon, 22 Sep 2025 10:11:47 +0000
Subject: [PATCH 03/11] fixup! fixup! FEAT: v12
---
Classes/Controller/GalleryController.php | 7 +--
.../Domain/Repository/CategoryRepository.php | 13 +++--
.../Repository/ImageGalleryRepository.php | 47 ++++---------------
Classes/ViewHelpers/ImageStackViewHelper.php | 5 +-
Configuration/TCA/Overrides/tt_content.php | 3 ++
composer.json | 2 +-
ext_emconf.php | 2 +-
ext_localconf.php | 2 +-
ext_tables.php | 6 ---
9 files changed, 31 insertions(+), 56 deletions(-)
create mode 100644 Configuration/TCA/Overrides/tt_content.php
diff --git a/Classes/Controller/GalleryController.php b/Classes/Controller/GalleryController.php
index c7358cbb..79651210 100644
--- a/Classes/Controller/GalleryController.php
+++ b/Classes/Controller/GalleryController.php
@@ -61,12 +61,12 @@ public function __construct(
/**
* @return void|string
*/
- public function listAction()
+ public function listAction(): \Psr\Http\Message\ResponseInterface
{
if (!isset($this->settings['imagesPerRow'])) {
- return 'Please save your plugin settings in the BE beforehand.';
+ return $this->htmlResponse('Please save your plugin settings in the BE beforehand.');
}
$images = $this->galleryRepository->findByDemand($this->getDemand(), (array)$this->getOrderings(),0,0);
@@ -74,9 +74,10 @@ public function listAction()
$categories = $this->categoryRepository->findByIdentifiers($identifiers);
// Assign template variables
$this->view->assign('settings', $this->settings);
- $this->view->assign('data', $this->configurationManager->getcontentObject()->data);
+ $this->view->assign('data', $this->request->getAttribute('currentContentObject')->data);
$this->view->assign('images', $images);
$this->view->assign('categories', $categories);
+ return $this->htmlResponse();
}
protected function getOrderings(): \Fab\NaturalGallery\Persistence\Order
diff --git a/Classes/Domain/Repository/CategoryRepository.php b/Classes/Domain/Repository/CategoryRepository.php
index f6e3ab21..6412aabe 100644
--- a/Classes/Domain/Repository/CategoryRepository.php
+++ b/Classes/Domain/Repository/CategoryRepository.php
@@ -35,6 +35,9 @@ class CategoryRepository
* Initialize Repository
*/
protected string $tableName = 'sys_category';
+ public function __construct(private \TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+ {
+ }
/**
* @throws Exception
@@ -58,7 +61,7 @@ public function findByIdentifiers(array $identifiers): array|QueryResultInterfac
public function findFileCategories($uid): array
{
- $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
+ $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_file_metadata');
$queryBuilder->getRestrictions()->removeAll();
$results = [];
if ($uid){
@@ -72,9 +75,9 @@ public function findFileCategories($uid): array
$queryBuilder->expr()->eq('sys_category.uid', 'sys_category_record_mm.uid_local')
)
->where(
- $queryBuilder->expr()->eq('sys_category_record_mm.uid_foreign', $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)),
- $queryBuilder->expr()->eq('sys_category_record_mm.tablenames', $queryBuilder->createNamedParameter('sys_file_metadata', \PDO::PARAM_STR)) ,
- $queryBuilder->expr()->eq('sys_category_record_mm.fieldname', $queryBuilder->createNamedParameter('categories', \PDO::PARAM_STR))
+ $queryBuilder->expr()->eq('sys_category_record_mm.uid_foreign', $queryBuilder->createNamedParameter($uid, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)),
+ $queryBuilder->expr()->eq('sys_category_record_mm.tablenames', $queryBuilder->createNamedParameter('sys_file_metadata', \TYPO3\CMS\Core\Database\Connection::PARAM_STR)) ,
+ $queryBuilder->expr()->eq('sys_category_record_mm.fieldname', $queryBuilder->createNamedParameter('categories', \TYPO3\CMS\Core\Database\Connection::PARAM_STR))
);
$results = $query->execute()->fetchAllAssociative();
@@ -86,7 +89,7 @@ public function findFileCategories($uid): array
protected function getQueryBuilder(): QueryBuilder
{
/** @var ConnectionPool $connectionPool */
- $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
+ $connectionPool = $this->connectionPool;
return $connectionPool->getQueryBuilderForTable($this->tableName);
}
}
diff --git a/Classes/Domain/Repository/ImageGalleryRepository.php b/Classes/Domain/Repository/ImageGalleryRepository.php
index eefb2743..6af5f3cf 100644
--- a/Classes/Domain/Repository/ImageGalleryRepository.php
+++ b/Classes/Domain/Repository/ImageGalleryRepository.php
@@ -17,6 +17,9 @@ class ImageGalleryRepository
protected string $tableName = 'sys_file';
protected array $settings;
+ public function __construct(private \TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+ {
+ }
public function getDefaultData(string $field):string
{
@@ -102,60 +105,28 @@ public function findByDemand(array|Matcher $demand = [], array $orderings = [],
'sys_file',
'sys_file_metadata',
'sys_file_metadata',
- $queryBuilder->expr()->andX(
- $queryBuilder->expr()->eq('sys_file.uid', 'sys_file_metadata.file'),
- $queryBuilder->expr()->lte('sys_file_metadata.t3ver_state', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->eq('sys_file_metadata.t3ver_wsid', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->orX(
- $queryBuilder->expr()->eq('sys_file_metadata.t3ver_oid', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->eq('sys_file_metadata.t3ver_state', $queryBuilder->createNamedParameter(4, \PDO::PARAM_INT))
- ),
- $queryBuilder->expr()->in('sys_file_metadata.sys_language_uid', [0, -1])
- )
+ $queryBuilder->expr()->and($queryBuilder->expr()->eq('sys_file.uid', 'sys_file_metadata.file'), $queryBuilder->expr()->lte('sys_file_metadata.t3ver_state', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->eq('sys_file_metadata.t3ver_wsid', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->or($queryBuilder->expr()->eq('sys_file_metadata.t3ver_oid', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->eq('sys_file_metadata.t3ver_state', $queryBuilder->createNamedParameter(4, \TYPO3\CMS\Core\Database\Connection::PARAM_INT))), $queryBuilder->expr()->in('sys_file_metadata.sys_language_uid', [0, -1]))
)
->leftJoin(
'sys_file_metadata',
'sys_category_record_mm',
'sys_category_record_mm0',
- $queryBuilder->expr()->andX(
- $queryBuilder->expr()->eq('sys_file_metadata.uid', 'sys_category_record_mm0.uid_foreign'),
- $queryBuilder->expr()->eq('sys_category_record_mm0.tablenames', $queryBuilder->createNamedParameter('sys_file_metadata')),
- $queryBuilder->expr()->eq('sys_category_record_mm0.fieldname', $queryBuilder->createNamedParameter('categories'))
- )
+ $queryBuilder->expr()->and($queryBuilder->expr()->eq('sys_file_metadata.uid', 'sys_category_record_mm0.uid_foreign'), $queryBuilder->expr()->eq('sys_category_record_mm0.tablenames', $queryBuilder->createNamedParameter('sys_file_metadata')), $queryBuilder->expr()->eq('sys_category_record_mm0.fieldname', $queryBuilder->createNamedParameter('categories')))
)
->leftJoin(
'sys_category_record_mm0',
'sys_category',
'sys_category0',
- $queryBuilder->expr()->andX(
- $queryBuilder->expr()->eq('sys_category_record_mm0.uid_local', 'sys_category0.uid'),
- $queryBuilder->expr()->eq('sys_category0.deleted', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->lte('sys_category0.t3ver_state', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->eq('sys_category0.t3ver_wsid', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->orX(
- $queryBuilder->expr()->eq('sys_category0.t3ver_oid', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->eq('sys_category0.t3ver_state', $queryBuilder->createNamedParameter(4, \PDO::PARAM_INT))
- ),
- $queryBuilder->expr()->eq('sys_category0.hidden', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->lte('sys_category0.starttime', $queryBuilder->createNamedParameter($timestamp, \PDO::PARAM_INT)),
- $queryBuilder->expr()->orX(
- $queryBuilder->expr()->eq('sys_category0.endtime', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)),
- $queryBuilder->expr()->gt('sys_category0.endtime', $queryBuilder->createNamedParameter($timestamp, \PDO::PARAM_INT))
- ),
- $queryBuilder->expr()->in('sys_category0.sys_language_uid', [0, -1])
- )
+ $queryBuilder->expr()->and($queryBuilder->expr()->eq('sys_category_record_mm0.uid_local', 'sys_category0.uid'), $queryBuilder->expr()->eq('sys_category0.deleted', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->lte('sys_category0.t3ver_state', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->eq('sys_category0.t3ver_wsid', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->or($queryBuilder->expr()->eq('sys_category0.t3ver_oid', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->eq('sys_category0.t3ver_state', $queryBuilder->createNamedParameter(4, \TYPO3\CMS\Core\Database\Connection::PARAM_INT))), $queryBuilder->expr()->eq('sys_category0.hidden', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->lte('sys_category0.starttime', $queryBuilder->createNamedParameter($timestamp, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->or($queryBuilder->expr()->eq('sys_category0.endtime', $queryBuilder->createNamedParameter(0, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->gt('sys_category0.endtime', $queryBuilder->createNamedParameter($timestamp, \TYPO3\CMS\Core\Database\Connection::PARAM_INT))), $queryBuilder->expr()->in('sys_category0.sys_language_uid', [0, -1]))
)
->where(
- $queryBuilder->expr()->andX(
- $queryBuilder->expr()->eq('sys_file.type', $queryBuilder->createNamedParameter(2, \PDO::PARAM_INT)),
- $queryBuilder->expr()->in('sys_file.uid', (array)$uids)
- )
+ $queryBuilder->expr()->and($queryBuilder->expr()->eq('sys_file.type', $queryBuilder->createNamedParameter(2, \TYPO3\CMS\Core\Database\Connection::PARAM_INT)), $queryBuilder->expr()->in('sys_file.uid', (array)$uids))
)
->orderBy('sys_file.name', 'ASC');
if ($categoryConditions) {
$queryBuilder->andWhere(
- $queryBuilder->expr()->eq('sys_category0.uid', $queryBuilder->createNamedParameter((int)$categoryConditions, \PDO::PARAM_INT))
+ $queryBuilder->expr()->eq('sys_category0.uid', $queryBuilder->createNamedParameter((int)$categoryConditions, \TYPO3\CMS\Core\Database\Connection::PARAM_INT))
);
}
@@ -215,7 +186,7 @@ public function findByUids(array $uids): array
protected function getQueryBuilder(): QueryBuilder
{
/** @var ConnectionPool $connectionPool */
- $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
+ $connectionPool = $this->connectionPool;
return $connectionPool->getQueryBuilderForTable($this->tableName);
}
diff --git a/Classes/ViewHelpers/ImageStackViewHelper.php b/Classes/ViewHelpers/ImageStackViewHelper.php
index 90b8609a..9d6e0ded 100644
--- a/Classes/ViewHelpers/ImageStackViewHelper.php
+++ b/Classes/ViewHelpers/ImageStackViewHelper.php
@@ -30,6 +30,9 @@
class ImageStackViewHelper extends AbstractViewHelper
{
+ public function __construct(private \TYPO3\CMS\Core\Context\Context $context)
+ {
+ }
/**
* @return string
*/
@@ -124,7 +127,7 @@ protected function getSiteUrl(): string
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
// Get current page ID from context or fallback to 1
- $context = GeneralUtility::makeInstance(Context::class);
+ $context = $this->context;
$pageId = $context->getPropertyFromAspect('frontend.page', 'id', 1);
$site = $siteFinder->getSiteByPageId($pageId);
diff --git a/Configuration/TCA/Overrides/tt_content.php b/Configuration/TCA/Overrides/tt_content.php
new file mode 100644
index 00000000..11bef81a
--- /dev/null
+++ b/Configuration/TCA/Overrides/tt_content.php
@@ -0,0 +1,3 @@
+ 'Natural Gallery',
diff --git a/ext_localconf.php b/ext_localconf.php
index 163a0518..5c0f35ac 100644
--- a/ext_localconf.php
+++ b/ext_localconf.php
@@ -8,7 +8,7 @@
function () {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
- 'Fab.natural_gallery',
+ 'NaturalGallery',
'Pi1',
[
GalleryController::class => 'list',
diff --git a/ext_tables.php b/ext_tables.php
index fa8d6037..bf50b48e 100644
--- a/ext_tables.php
+++ b/ext_tables.php
@@ -3,12 +3,6 @@
die ('Access denied.');
}
-\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
- 'Fab.natural_gallery',
- 'Pi1',
- 'Natural Gallery'
-);
-
$extensionName = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase('natural_gallery');
$pluginSignature = strtolower($extensionName) . '_pi1';
From f0aef34f086f5935577848b10374bcfba0d1cb9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hyacinthe=20Compaor=C3=A9?=
<131278191+compaoreh338@users.noreply.github.com>
Date: Mon, 22 Sep 2025 10:29:34 +0000
Subject: [PATCH 04/11] fixup! fixup! fixup! FEAT: v12
---
Configuration/Services.yaml | 15 +++++++++++++++
Configuration/TCA/Overrides/tt_content.php | 2 +-
Resources/Private/Templates/Gallery/List.html | 4 ++--
composer.json | 5 +----
ext_emconf.php | 2 --
ext_localconf.php | 2 +-
6 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml
index 2b8a2ef6..77961f20 100644
--- a/Configuration/Services.yaml
+++ b/Configuration/Services.yaml
@@ -3,3 +3,18 @@ services:
autowire: true
autoconfigure: true
public: false
+
+ Fab\NaturalGallery\Controller\:
+ resource: '../Classes/Controller/'
+ tags: ['controller.service_arguments']
+
+ Fab\NaturalGallery\Domain\Repository\:
+ resource: '../Classes/Domain/Repository/'
+ tags: ['tx_extbase.persistence.repository']
+
+ Fab\NaturalGallery\Persistence\:
+ resource: '../Classes/Persistence/'
+
+ Fab\NaturalGallery\ViewHelpers\:
+ resource: '../Classes/ViewHelpers/'
+ tags: ['typo3.fluid.viewhelper']
diff --git a/Configuration/TCA/Overrides/tt_content.php b/Configuration/TCA/Overrides/tt_content.php
index 11bef81a..288eab82 100644
--- a/Configuration/TCA/Overrides/tt_content.php
+++ b/Configuration/TCA/Overrides/tt_content.php
@@ -1,3 +1,3 @@
-
+
-
diff --git a/Resources/Public/StyleSheets/natural-gallery.full.css b/Resources/Public/StyleSheets/natural-gallery.full.css
index 90f85a80..90f6332b 100644
--- a/Resources/Public/StyleSheets/natural-gallery.full.css
+++ b/Resources/Public/StyleSheets/natural-gallery.full.css
@@ -1,662 +1 @@
-/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */
-/*
- Styles for basic PhotoSwipe functionality (sliding area, open/close transitions)
-*/
-/* pswp = photoswipe */
-.pswp {
- display: none;
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- overflow: hidden;
- -ms-touch-action: none;
- touch-action: none;
- z-index: 1500;
- -webkit-text-size-adjust: 100%;
- /* create separate layer, to avoid paint on window.onscroll in webkit/blink */
- -webkit-backface-visibility: hidden;
- outline: none; }
- .pswp * {
- -webkit-box-sizing: border-box;
- box-sizing: border-box; }
- .pswp img {
- max-width: none; }
-
-/* style is added when JS option showHideOpacity is set to true */
-.pswp--animate_opacity {
- /* 0.001, because opacity:0 doesn't trigger Paint action, which causes lag at start of transition */
- opacity: 0.001;
- will-change: opacity;
- /* for open/close transition */
- -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
- transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
-
-.pswp--open {
- display: block; }
-
-.pswp--zoom-allowed .pswp__img {
- /* autoprefixer: off */
- cursor: -webkit-zoom-in;
- cursor: -moz-zoom-in;
- cursor: zoom-in; }
-
-.pswp--zoomed-in .pswp__img {
- /* autoprefixer: off */
- cursor: -webkit-grab;
- cursor: -moz-grab;
- cursor: grab; }
-
-.pswp--dragging .pswp__img {
- /* autoprefixer: off */
- cursor: -webkit-grabbing;
- cursor: -moz-grabbing;
- cursor: grabbing; }
-
-/*
- Background is added as a separate element.
- As animating opacity is much faster than animating rgba() background-color.
-*/
-.pswp__bg {
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- background: #000;
- opacity: 0;
- -webkit-transform: translateZ(0);
- transform: translateZ(0);
- -webkit-backface-visibility: hidden;
- will-change: opacity; }
-
-.pswp__scroll-wrap {
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- overflow: hidden; }
-
-.pswp__container,
-.pswp__zoom-wrap {
- -ms-touch-action: none;
- touch-action: none;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0; }
-
-/* Prevent selection and tap highlights */
-.pswp__container,
-.pswp__img {
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- -webkit-tap-highlight-color: transparent;
- -webkit-touch-callout: none; }
-
-.pswp__zoom-wrap {
- position: absolute;
- width: 100%;
- -webkit-transform-origin: left top;
- -ms-transform-origin: left top;
- transform-origin: left top;
- /* for open/close transition */
- -webkit-transition: -webkit-transform 333ms cubic-bezier(0.4, 0, 0.22, 1);
- transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1); }
-
-.pswp__bg {
- will-change: opacity;
- /* for open/close transition */
- -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
- transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
-
-.pswp--animated-in .pswp__bg,
-.pswp--animated-in .pswp__zoom-wrap {
- -webkit-transition: none;
- transition: none; }
-
-.pswp__container,
-.pswp__zoom-wrap {
- -webkit-backface-visibility: hidden; }
-
-.pswp__item {
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- overflow: hidden; }
-
-.pswp__img {
- position: absolute;
- width: auto;
- height: auto;
- top: 0;
- left: 0; }
-
-/*
- stretched thumbnail or div placeholder element (see below)
- style is added to avoid flickering in webkit/blink when layers overlap
-*/
-.pswp__img--placeholder {
- -webkit-backface-visibility: hidden; }
-
-/*
- div element that matches size of large image
- large image loads on top of it
-*/
-.pswp__img--placeholder--blank {
- background: #222; }
-
-.pswp--ie .pswp__img {
- width: 100% !important;
- height: auto !important;
- left: 0;
- top: 0; }
-
-/*
- Error message appears when image is not loaded
- (JS option errorMsg controls markup)
-*/
-.pswp__error-msg {
- position: absolute;
- left: 0;
- top: 50%;
- width: 100%;
- text-align: center;
- font-size: 14px;
- line-height: 16px;
- margin-top: -8px;
- color: #CCC; }
-
-.pswp__error-msg a {
- color: #CCC;
- text-decoration: underline; }
-/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */
-/*
-
- Contents:
-
- 1. Buttons
- 2. Share modal and links
- 3. Index indicator ("1 of X" counter)
- 4. Caption
- 5. Loading indicator
- 6. Additional styles (root element, top bar, idle state, hidden state, etc.)
-
-*/
-/*
-
- 1. Buttons
-
- */
-/*