Explorar o código

general refactoring: add ot_core and ot_stats

Olivier Massot %!s(int64=5) %!d(string=hai) anos
pai
achega
c4e246c0d4
Modificáronse 76 ficheiros con 748 adicións e 293 borrados
  1. 0 0
      docker/conf/LocalConfiguration.php
  2. 0 0
      docker/conf/composer.json
  3. 12 5
      ot_admin/Classes/Command/CreateSiteCommand.php
  4. 21 7
      ot_admin/Classes/Controller/SiteController.php
  5. 4 3
      ot_connect/Classes/Middleware/RequestHandler.php
  6. 2 2
      ot_connect/Configuration/RequestMiddlewares.php
  7. 1 1
      ot_connect/ext_emconf.php
  8. 2 2
      ot_core/Classes/Cache/OtCacheManager.php
  9. 1 1
      ot_core/Classes/Domain/Model/Donor.php
  10. 1 1
      ot_core/Classes/Domain/Model/Event.php
  11. 1 1
      ot_core/Classes/Domain/Model/Member.php
  12. 1 1
      ot_core/Classes/Domain/Model/Organization.php
  13. 2 2
      ot_core/Classes/Domain/Repository/ApiPagedCollection.php
  14. 2 2
      ot_core/Classes/Domain/Repository/BaseApiRepository.php
  15. 3 3
      ot_core/Classes/Domain/Repository/DonorRepository.php
  16. 3 3
      ot_core/Classes/Domain/Repository/EventRepository.php
  17. 3 3
      ot_core/Classes/Domain/Repository/MemberRepository.php
  18. 3 3
      ot_core/Classes/Domain/Repository/OrganizationRepository.php
  19. 2 2
      ot_core/Classes/Exception/ApiRequestException.php
  20. 3 61
      ot_core/Classes/Page/OtPageRepository.php
  21. 40 0
      ot_core/Classes/ViewHelpers/OtAbstractViewHelper.php
  22. 18 0
      ot_core/Readme.md
  23. BIN=BIN
      ot_core/Resources/Public/Icons/Extension.png
  24. BIN=BIN
      ot_core/Resources/Public/Icons/Extension_white.png
  25. 33 0
      ot_core/composer.json
  26. 31 0
      ot_core/ext_emconf.php
  27. 67 0
      ot_stats/Classes/Controller/OtStatsController.php
  28. 25 0
      ot_stats/Classes/Settings/StatsSettingsRepository.php
  29. 46 0
      ot_stats/Classes/ViewHelpers/MatomoSiteIdViewHelper.php
  30. 21 0
      ot_stats/Readme.md
  31. 17 0
      ot_stats/Resources/Private/Language/locallang_mod.xlf
  32. 9 0
      ot_stats/Resources/Private/Layouts/Backend/Default.html
  33. 29 0
      ot_stats/Resources/Private/Partials/Matomo.html
  34. 52 0
      ot_stats/Resources/Private/Templates/OtStats/Index.html
  35. BIN=BIN
      ot_stats/Resources/Public/Icons/Extension.png
  36. BIN=BIN
      ot_stats/Resources/Public/Icons/Extension_white.png
  37. BIN=BIN
      ot_stats/Resources/Public/Icons/pie-chart.png
  38. 20 0
      ot_stats/Resources/Public/assets/Backend/style/ot_stats.css
  39. 26 0
      ot_stats/composer.json
  40. 31 0
      ot_stats/ext_emconf.php
  41. 29 0
      ot_stats/ext_tables.php
  42. 8 0
      ot_stats/ext_tables.sql
  43. 9 8
      ot_templating/Classes/Controller/OtCustomizerController.php
  44. 1 1
      ot_templating/Classes/News/NewsFilter.php
  45. 76 0
      ot_templating/Classes/Templating/TemplateRepository.php
  46. 0 35
      ot_templating/Classes/Utility/Tsfe.php
  47. 2 14
      ot_templating/Classes/ViewHelpers/Carousel/ImagesViewHelper.php
  48. 4 9
      ot_templating/Classes/ViewHelpers/Donors/GetAllViewHelper.php
  49. 5 8
      ot_templating/Classes/ViewHelpers/Events/GetAllViewHelper.php
  50. 5 8
      ot_templating/Classes/ViewHelpers/Events/GetByIdViewHelper.php
  51. 5 11
      ot_templating/Classes/ViewHelpers/Events/GetNextViewHelper.php
  52. 3 3
      ot_templating/Classes/ViewHelpers/EventsPage/GetIdViewHelper.php
  53. 3 4
      ot_templating/Classes/ViewHelpers/EventsPage/GetUriViewHelper.php
  54. 4 3
      ot_templating/Classes/ViewHelpers/GetPageUidViewHelper.php
  55. 0 7
      ot_templating/Classes/ViewHelpers/ImagePViewHelper.php
  56. 2 3
      ot_templating/Classes/ViewHelpers/LoginFailedViewHelper.php
  57. 4 7
      ot_templating/Classes/ViewHelpers/Members/GetAllCaViewHelper.php
  58. 4 7
      ot_templating/Classes/ViewHelpers/Members/GetAllViewHelper.php
  59. 5 8
      ot_templating/Classes/ViewHelpers/Organizations/GetByIdViewHelper.php
  60. 4 7
      ot_templating/Classes/ViewHelpers/Organizations/GetChildrenViewHelper.php
  61. 2 2
      ot_templating/Classes/ViewHelpers/Request/GetArgumentViewHelper.php
  62. 2 2
      ot_templating/Classes/ViewHelpers/Request/GetParameterViewHelper.php
  63. 2 11
      ot_templating/Classes/ViewHelpers/Request/GetViewHelper.php
  64. 2 2
      ot_templating/Classes/ViewHelpers/Request/WithPageViewHelper.php
  65. 3 3
      ot_templating/Classes/ViewHelpers/RootPage/GetIdViewHelper.php
  66. 3 5
      ot_templating/Classes/ViewHelpers/RootPage/GetUriViewHelper.php
  67. 5 5
      ot_templating/Classes/ViewHelpers/Template/CurrentViewHelper.php
  68. 6 5
      ot_templating/Classes/ViewHelpers/Template/GetPreferenceViewHelper.php
  69. 6 5
      ot_templating/Classes/ViewHelpers/Template/GetPreferencesViewHelper.php
  70. 2 2
      ot_templating/Classes/ViewHelpers/Utilities/CountViewHelper.php
  71. 3 0
      ot_templating/Resources/Private/Partials/Classic/Header.html
  72. 3 0
      ot_templating/Resources/Private/Partials/Modern/Header.html
  73. BIN=BIN
      ot_templating/Resources/Public/Icons/color-palette.png
  74. 1 1
      ot_templating/ext_emconf.php
  75. 1 3
      ot_templating/ext_tables.php
  76. 2 1
      ot_templating/ext_tables.sql

+ 0 - 0
docker/mount/LocalConfiguration.php → docker/conf/LocalConfiguration.php


+ 0 - 0
docker/mount/composer.json → docker/conf/composer.json


+ 12 - 5
ot_admin/Classes/Command/CreateSiteCommand.php

@@ -7,6 +7,7 @@ use Opentalent\OtAdmin\Controller\SiteController;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
 use Symfony\Component\Console\Style\SymfonyStyle;
 
 
@@ -40,6 +41,11 @@ class CreateSiteCommand extends Command
                 'organization_id',
                 'organization_id',
                 InputArgument::REQUIRED,
                 InputArgument::REQUIRED,
                 "The organization's id in the opentalent DB"
                 "The organization's id in the opentalent DB"
+            )->addOption(
+                'dev',
+                null,
+                InputOption::VALUE_NONE,
+                "Add this option to get url like 'http://host/subdomain' instead of 'http://subdomain/host'"
             );
             );
     }
     }
 
 
@@ -50,20 +56,21 @@ class CreateSiteCommand extends Command
      *
      *
      * @param InputInterface $input
      * @param InputInterface $input
      * @param OutputInterface $output
      * @param OutputInterface $output
+     * @throws \Exception
      */
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     protected function execute(InputInterface $input, OutputInterface $output)
     {
     {
-        // Make sure the _cli_ user is loaded
-        // TYPO3\CMS\Core\Core\Bootstrap::initializeBackendAuthentication();
-
         $org_id = $input->getArgument('organization_id');
         $org_id = $input->getArgument('organization_id');
+        $isDev = $input->getOption('dev');
 
 
         $io = new SymfonyStyle($input, $output);
         $io = new SymfonyStyle($input, $output);
 
 
         $siteController = new SiteController();
         $siteController = new SiteController();
-        $rootUid = $siteController->createSiteAction($org_id);
+        $rootUid = $siteController->createSiteAction(
+            $org_id,
+            $isDev ? $siteController::MODE_DEV : $siteController::MODE_PROD
+        );
 
 
         $io->success(sprintf("A new website has been created with root page uid=" . $rootUid));
         $io->success(sprintf("A new website has been created with root page uid=" . $rootUid));
     }
     }
-
 }
 }

+ 21 - 7
ot_admin/Classes/Controller/SiteController.php

@@ -2,10 +2,11 @@
 
 
 namespace Opentalent\OtAdmin\Controller;
 namespace Opentalent\OtAdmin\Controller;
 
 
-use Opentalent\OtTemplating\Domain\Model\Organization;
-use Opentalent\OtTemplating\Domain\Repository\OrganizationRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use http\Exception\RuntimeException;
+use Opentalent\OtCore\Domain\Model\Organization;
+use Opentalent\OtCore\Domain\Repository\OrganizationRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
+use Opentalent\OtCore\Page\OtPageRepository;
 use PDO;
 use PDO;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareInterface;
 use Symfony\Component\Yaml\Yaml;
 use Symfony\Component\Yaml\Yaml;
@@ -56,7 +57,7 @@ class SiteController extends ActionController
     const DEFAULT_COLOR = 'light-blue';
     const DEFAULT_COLOR = 'light-blue';
 
 
     // BE rights
     // BE rights
-    CONST PRODUCT_MAPPING = [
+    const PRODUCT_MAPPING = [
         "school-standard" => 1, // Association writer basic
         "school-standard" => 1, // Association writer basic
         "artist-standard" => 1, // Association writer basic
         "artist-standard" => 1, // Association writer basic
         "school-premium" => 3, // Association writer full
         "school-premium" => 3, // Association writer full
@@ -64,6 +65,9 @@ class SiteController extends ActionController
         "manager" => 3, // Association writer full
         "manager" => 3, // Association writer full
     ];
     ];
 
 
+    const MODE_PROD = 1;
+    const MODE_DEV = 1;
+
     /**
     /**
      * Doctrine connection pool
      * Doctrine connection pool
      * @var object|LoggerAwareInterface|\TYPO3\CMS\Core\SingletonInterface
      * @var object|LoggerAwareInterface|\TYPO3\CMS\Core\SingletonInterface
@@ -103,10 +107,13 @@ class SiteController extends ActionController
      * returns the root page uid of the newly created site
      * returns the root page uid of the newly created site
      *
      *
      * @param int $organizationId
      * @param int $organizationId
+     * @param int $mode Can be either MODE_PROD or MODE_DEV, MODE_PROD being the normal behaviour.
+     *                    If MODE_DEV is used, sites urls will be of the form 'http://host/subdomain'
+     *                    instead of 'http://subdomain/host'
      * @return int Uid of the root page of the newly created website
      * @return int Uid of the root page of the newly created website
      * @throws \RuntimeException|\Exception
      * @throws \RuntimeException|\Exception
      */
      */
-    public function createSiteAction(int $organizationId) {
+    public function createSiteAction(int $organizationId, int $mode=self::MODE_PROD) {
 
 
         $organization = $this->fetchOrganization($organizationId);
         $organization = $this->fetchOrganization($organizationId);
 
 
@@ -385,7 +392,14 @@ class SiteController extends ActionController
             );
             );
 
 
             // Build and update the domain
             // Build and update the domain
-            $domain = $organization->getSubDomain() .  '.opentalent.fr';
+            if ($mode == self::MODE_PROD) {
+                $domain = $organization->getSubDomain() .  '.opentalent.fr';
+            } elseif ($mode == self::MODE_DEV) {
+                $domain = $organization->getSubDomain() . '/';
+            } else {
+                throw new RuntimeException('Unknown value for $mode: ' . $mode);
+            }
+
             $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_domain');
             $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_domain');
             $queryBuilder->insert('sys_domain')
             $queryBuilder->insert('sys_domain')
                 ->values([
                 ->values([

+ 4 - 3
ot_templating/Classes/Middleware/RequestHandler.php → ot_connect/Classes/Middleware/RequestHandler.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-namespace Opentalent\OtTemplating\Middleware;
+namespace Opentalent\OtConnect\Middleware;
 
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\ServerRequestInterface;
@@ -8,7 +8,8 @@ use Psr\Http\Server\RequestHandlerInterface;
 use TYPO3\CMS\Core\Http\RedirectResponse;
 use TYPO3\CMS\Core\Http\RedirectResponse;
 
 
 /**
 /**
- * Hooks into the frontend request and process the request
+ * Hooks into the frontend request and process the request in order to
+ * rewrite the uri and remove the 'logintype=logout' part after it was processed.
  *
  *
  * @internal
  * @internal
  */
  */
@@ -31,7 +32,7 @@ class RequestHandler implements MiddlewareInterface
             return new RedirectResponse(
             return new RedirectResponse(
                 $uri->withQuery($newQuery),
                 $uri->withQuery($newQuery),
                 303,
                 303,
-                ['X-Redirect-By' => 'OtTemplating logout redirection']
+                ['X-Redirect-By' => 'OtConnect logout redirection']
             );
             );
         }
         }
 
 

+ 2 - 2
ot_templating/Configuration/RequestMiddlewares.php → ot_connect/Configuration/RequestMiddlewares.php

@@ -5,8 +5,8 @@
  */
  */
 return [
 return [
     'frontend' => [
     'frontend' => [
-        'ottemplating-errorhandler' => [
-            'target' => Opentalent\OtTemplating\Middleware\RequestHandler::class,
+        'logout-rewriter' => [
+            'target' => Opentalent\OtConnect\Middleware\RequestHandler::class,
             'before' => [
             'before' => [
                 'typo3/cms-adminpanel/data-persister'
                 'typo3/cms-adminpanel/data-persister'
             ],
             ],

+ 1 - 1
ot_connect/ext_emconf.php

@@ -18,7 +18,7 @@ $EM_CONF[$_EXTKEY] = [
     'uploadfolder' => 0,
     'uploadfolder' => 0,
     'createDirs' => '',
     'createDirs' => '',
     'clearCacheOnLoad' => 0,
     'clearCacheOnLoad' => 0,
-    'version' => '0.1.0',
+    'version' => '1.0.0',
     'constraints' => [
     'constraints' => [
         'depends' => [
         'depends' => [
             'typo3' => '8.7.0-10.4.99',
             'typo3' => '8.7.0-10.4.99',

+ 2 - 2
ot_templating/Classes/Utility/OtCacheManager.php → ot_core/Classes/Cache/OtCacheManager.php

@@ -1,8 +1,8 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Utility;
+namespace Opentalent\OtCore\Cache;
 
 
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ResponseInterface;
 use RuntimeException;
 use RuntimeException;
 use TYPO3\CMS\Core\Service\OpcodeCacheService;
 use TYPO3\CMS\Core\Service\OpcodeCacheService;

+ 1 - 1
ot_templating/Classes/Domain/Model/Donor.php → ot_core/Classes/Domain/Model/Donor.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-namespace Opentalent\OtTemplating\Domain\Model;
+namespace Opentalent\OtCore\Domain\Model;
 
 
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 
 

+ 1 - 1
ot_templating/Classes/Domain/Model/Event.php → ot_core/Classes/Domain/Model/Event.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-namespace Opentalent\OtTemplating\Domain\Model;
+namespace Opentalent\OtCore\Domain\Model;
 
 
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 
 

+ 1 - 1
ot_templating/Classes/Domain/Model/Member.php → ot_core/Classes/Domain/Model/Member.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-namespace Opentalent\OtTemplating\Domain\Model;
+namespace Opentalent\OtCore\Domain\Model;
 
 
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 
 

+ 1 - 1
ot_templating/Classes/Domain/Model/Organization.php → ot_core/Classes/Domain/Model/Organization.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-namespace Opentalent\OtTemplating\Domain\Model;
+namespace Opentalent\OtCore\Domain\Model;
 
 
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
 
 

+ 2 - 2
ot_templating/Classes/Domain/Repository/ApiPagedCollection.php → ot_core/Classes/Domain/Repository/ApiPagedCollection.php

@@ -1,12 +1,12 @@
 <?php
 <?php
 
 
 
 
-namespace Opentalent\OtTemplating\Domain\Repository;
+namespace Opentalent\OtCore\Domain\Repository;
 
 
 /**
 /**
  * Represents an unserialized api response of 'PagedCollection' type
  * Represents an unserialized api response of 'PagedCollection' type
  *
  *
- * @package Opentalent\OtTemplating\Domain\Repository
+ * @package Opentalent\OtCore\Domain\Repository
  */
  */
 class ApiPagedCollection
 class ApiPagedCollection
 {
 {

+ 2 - 2
ot_templating/Classes/Domain/Repository/BaseApiRepository.php → ot_core/Classes/Domain/Repository/BaseApiRepository.php

@@ -1,10 +1,10 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Domain\Repository;
+namespace Opentalent\OtCore\Domain\Repository;
 
 
 use GuzzleHttp\Client;
 use GuzzleHttp\Client;
 use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Exception\GuzzleException;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
+use Opentalent\OtCore\Exception\ApiRequestException;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
 use Psr\Log\LoggerAwareTrait;

+ 3 - 3
ot_templating/Classes/Domain/Repository/DonorRepository.php → ot_core/Classes/Domain/Repository/DonorRepository.php

@@ -1,9 +1,9 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Domain\Repository;
+namespace Opentalent\OtCore\Domain\Repository;
 
 
-use Opentalent\OtTemplating\Domain\Model\Donor;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
+use Opentalent\OtCore\Domain\Model\Donor;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 class DonorRepository extends BaseApiRepository
 class DonorRepository extends BaseApiRepository
 {
 {

+ 3 - 3
ot_templating/Classes/Domain/Repository/EventRepository.php → ot_core/Classes/Domain/Repository/EventRepository.php

@@ -1,11 +1,11 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Domain\Repository;
+namespace Opentalent\OtCore\Domain\Repository;
 
 
 use DateTimeZone;
 use DateTimeZone;
 use Exception;
 use Exception;
-use Opentalent\OtTemplating\Domain\Model\Event;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
+use Opentalent\OtCore\Domain\Model\Event;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 class EventRepository extends BaseApiRepository
 class EventRepository extends BaseApiRepository
 {
 {

+ 3 - 3
ot_templating/Classes/Domain/Repository/MemberRepository.php → ot_core/Classes/Domain/Repository/MemberRepository.php

@@ -1,11 +1,11 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Domain\Repository;
+namespace Opentalent\OtCore\Domain\Repository;
 
 
 use DateTimeZone;
 use DateTimeZone;
 use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Exception\GuzzleException;
-use Opentalent\OtTemplating\Domain\Model\Member;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
+use Opentalent\OtCore\Domain\Model\Member;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 class MemberRepository extends BaseApiRepository
 class MemberRepository extends BaseApiRepository
 {
 {

+ 3 - 3
ot_templating/Classes/Domain/Repository/OrganizationRepository.php → ot_core/Classes/Domain/Repository/OrganizationRepository.php

@@ -1,10 +1,10 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Domain\Repository;
+namespace Opentalent\OtCore\Domain\Repository;
 
 
 use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Exception\GuzzleException;
-use Opentalent\OtTemplating\Domain\Model\Organization;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
+use Opentalent\OtCore\Domain\Model\Organization;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 class OrganizationRepository extends BaseApiRepository
 class OrganizationRepository extends BaseApiRepository
 {
 {

+ 2 - 2
ot_templating/Classes/Exception/ApiRequestException.php → ot_core/Classes/Exception/ApiRequestException.php

@@ -1,6 +1,6 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Exception;
+namespace Opentalent\OtCore\Exception;
 
 
 use Exception;
 use Exception;
 
 
@@ -10,7 +10,7 @@ use Exception;
  * An ApiRequestException is raised when a request to the
  * An ApiRequestException is raised when a request to the
  * Opentalent Api did not return a valid answer.
  * Opentalent Api did not return a valid answer.
  *
  *
- * @package Opentalent\OtTemplating\Exception
+ * @package Opentalent\OtCore\Exception
  */
  */
 class ApiRequestException extends Exception
 class ApiRequestException extends Exception
 {
 {

+ 3 - 61
ot_templating/Classes/Page/OtPageRepository.php → ot_core/Classes/Page/OtPageRepository.php

@@ -1,6 +1,6 @@
 <?php
 <?php
 
 
-namespace Opentalent\OtTemplating\Page;
+namespace Opentalent\OtCore\Page;
 
 
 use FluidTYPO3\Vhs\Service\PageService;
 use FluidTYPO3\Vhs\Service\PageService;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -15,32 +15,12 @@ use TYPO3\CMS\Frontend\Page\PageRepository;
  *
  *
  * Provides some useful methods to query typo3 pages
  * Provides some useful methods to query typo3 pages
  *
  *
- * @package Opentalent\OtTemplating\Page
+ * @package Opentalent\OtCore\Page
  */
  */
 class OtPageRepository extends PageRepository
 class OtPageRepository extends PageRepository
 {
 {
-    CONST templates = [
-        'Classic' => [
-            'name' => 'Classique',
-            'description' => "Le thème classique, simple et complet. C'est le thème par défaut.",
-            'picture' => 'EXT:ot_templating/Resources/Public/media/theme_classic.png'
-        ],
-        'Modern' => [
-            'name' => 'Moderne',
-            'description' => '[Nouveauté 2020] Un thème moderne et intuitif.',
-            'picture' => 'EXT:ot_templating/Resources/Public/media/theme_modern.png'
-        ]
-    ];
-
-    CONST defaultTemplate = 'Classic';
-
-    CONST defaultPreferences = [
-        'themeColor' => 'lightblue',
-        'displayCarousel' => '1'
-    ];
-
     /**
     /**
-     * Returns the root page of the given page,
+     * Returns the root page of the given page website,
      * or the page itself if the given page is
      * or the page itself if the given page is
      * already the rootpage of the site
      * already the rootpage of the site
      *
      *
@@ -61,7 +41,6 @@ class OtPageRepository extends PageRepository
         return [];
         return [];
     }
     }
 
 
-
     /**
     /**
      * Recursively returns all the subpages of the given page
      * Recursively returns all the subpages of the given page
      *
      *
@@ -94,43 +73,6 @@ class OtPageRepository extends PageRepository
         return $subpages;
         return $subpages;
     }
     }
 
 
-    /**
-     * Returns the current site template's name
-     * @return string
-     */
-    public function getCurrentTemplate() {
-        $rootPageUid = $this->getCurrentSiteRootPageId();
-        if (!($rootPageUid >= 0)) {
-            return self::defaultTemplate;
-        }
-
-        $rootPage = $this->getPage($rootPageUid);
-        $templateName = $rootPage['tx_opentalent_template'];
-        if ($templateName==='') {
-            return self::defaultTemplate;
-        }
-        return $templateName;
-    }
-
-    /**
-     * Returns the current site template's name
-     * @return array
-     */
-    public function getTemplatePreferences() {
-        $rootPageUid = $this->getCurrentSiteRootPageId();
-        if (!($rootPageUid >= 0)) {
-            return [];
-        }
-
-        $rootPage = $this->getPage($rootPageUid);
-        $templatePreferences = $rootPage['tx_opentalent_template_preferences'];
-
-        if ($templatePreferences==='') {
-            return self::defaultPreferences;
-        }
-        return json_decode($templatePreferences, true);
-    }
-
     /**
     /**
      * Returns the typo3 site matching the current request
      * Returns the typo3 site matching the current request
      *
      *

+ 40 - 0
ot_core/Classes/ViewHelpers/OtAbstractViewHelper.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace Opentalent\OtCore\ViewHelpers;
+
+use FluidTYPO3\Vhs\Utility\ErrorUtility;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerAwareTrait;
+use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+
+/**
+ * Class OtAbstractViewHelper
+ * Base class for Opentalent viewhelpers
+ *
+ * @package Opentalent\OtCore\ViewHelpers
+ */
+class OtAbstractViewHelper  extends AbstractViewHelper implements LoggerAwareInterface {
+    use LoggerAwareTrait;
+
+    /**
+     * @var OtPageRepository
+     *
+     */
+    protected $pageRepository;
+
+    /**
+     * Throw a VHS viewhelper error
+     */
+    protected function throwException(string $msg) {
+        ErrorUtility::throwViewHelperException($msg);
+    }
+
+    /**
+     * @param OtPageRepository $pageRepository
+     */
+    public function injectOtPageRepository(OtPageRepository $pageRepository)
+    {
+        $this->pageRepository = $pageRepository;
+    }
+}

+ 18 - 0
ot_core/Readme.md

@@ -0,0 +1,18 @@
+
+# OtCore
+
+Core extension pour typo3.
+
+|||
+|---|---|
+| Extension key | ot_core |
+| Vendor | Opentalent |
+| Nom | OtCore |
+
+Cette extension fournit de nombreuses classes et ressources communes aux autres extensions Opentalent.
+
+**IMPORTANT**:
+
+* Cette extension ne doit dépendre d'aucune autre pour fonctionner, c'est à dire que son fonctionnement ne doit 
+pas être modifié si aucune autre extension n'est installée
+* Cette extension est aussi la seule dont les autres extensions doivent pouvoir dépendre

BIN=BIN
ot_core/Resources/Public/Icons/Extension.png


BIN=BIN
ot_core/Resources/Public/Icons/Extension_white.png


+ 33 - 0
ot_core/composer.json

@@ -0,0 +1,33 @@
+{
+    "name": "opentalent/ot_core",
+    "type": "typo3-cms-extension",
+    "description": "Core extension par Opentalent",
+    "authors": [
+        {
+            "name": "Olivier Massot",
+            "role": "Developer"
+        }
+    ],
+    "require": {
+        "typo3/cms-core": "^9.5 || ^10.4",
+        "fluidtypo3/vhs": "^6",
+        "fluidtypo3/flux": "^9",
+        "fluidtypo3/fluidpages": "^5",
+        "co-stack/logs": "",
+        "guzzlehttp/guzzle": "^6"
+    },
+    "replace": {
+        "ot_core": "self.version",
+        "typo3-ter/ot_core": "self.version"
+    },
+    "autoload": {
+        "psr-4": {
+            "Opentalent\\OtCore\\": "Classes"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Opentalent\\OtCore\\Tests\\": "Tests"
+        }
+    }
+}

+ 31 - 0
ot_core/ext_emconf.php

@@ -0,0 +1,31 @@
+<?php
+
+/***************************************************************
+ * Extension Manager/Repository config file for ext: "ot_core"
+ *
+ * Manual updates:
+ * Only the data in the array - anything else is removed by next write.
+ * "version" and "dependencies" must not be touched!
+ ***************************************************************/
+
+$EM_CONF[$_EXTKEY] = [
+    'title' => 'Core',
+    'description' => "Core extension par Opentalent",
+    'category' => 'services',
+    'author' => 'Olivier Massot',
+    'author_email' => 'olivier.massot@2iopenservice.fr',
+    'state' => 'alpha',
+    'uploadfolder' => 0,
+    'createDirs' => '',
+    'clearCacheOnLoad' => 0,
+    'version' => '0.1.0',
+    'constraints' => [
+        'depends' => [
+            'typo3' => '8.7.0-10.4.99',
+            'flux'  => '9.3.0-9.4.99',
+            'vhs'  => '6.0.0-6.0.99',
+        ],
+        'conflicts' => [],
+        'suggests' => [],
+    ],
+];

+ 67 - 0
ot_stats/Classes/Controller/OtStatsController.php

@@ -0,0 +1,67 @@
+<?php
+
+namespace Opentalent\OtStats\Controller;
+
+use Opentalent\OtStats\Settings\StatsSettingsRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
+
+/**
+ * Controller for the OtStats backend submodule
+ *
+ * @author olivier.massot
+ */
+class OtStatsController extends ActionController {
+
+    /**
+     * Index action (default action)
+     * Displays the customizer page on the backend
+     */
+    public function indexAction() {
+
+        // Get the selected page uid
+        $pageId = (int) GeneralUtility::_GP('id');
+
+        // Get the root page of the site
+        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $rootPage = $otPageRepository->getRootPageFor($pageId);
+
+        $rootPageUid = (int)($rootPage['uid'] ?? 0);
+
+        // If the current page is not a root page or a subpage of one, abort
+        $pageSelected = ($rootPageUid !== null);
+        $this->view->assign('pageSelected', (int)$pageSelected);
+        if (!$pageSelected) {
+            return;
+        }
+
+        $this->view->assign('rootPage', $rootPageUid);
+
+        $statsSettingsRepository = GeneralUtility::makeInstance(StatsSettingsRepository::class);
+        $matomoId = $statsSettingsRepository->getMatomoSiteId($rootPageUid);
+
+        $statsActivated = ($matomoId !== null);
+        $this->view->assign('statsActivated', (int)$statsActivated);
+        if (!$statsActivated) {
+            return;
+        }
+
+        $this->view->assign('matomoSiteId', (int)$matomoId);
+    }
+
+    /**
+     * Creates a matomo site record if none exists and
+     * save its id
+     */
+    public function enableStatsAction() {
+
+    }
+
+    /**
+     * Disable the stats monitoring
+     */
+    public function disableStatsAction() {
+
+    }
+}

+ 25 - 0
ot_stats/Classes/Settings/StatsSettingsRepository.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace Opentalent\OtStats\Settings;
+
+use TYPO3\CMS\Frontend\Page\PageRepository;
+
+/**
+ * Class StatsRepository
+ *
+ * Give access to the website's settings for the stats module
+ *
+ * @package Opentalent\OtTemplating\Page
+ */
+class StatsSettingsRepository extends PageRepository
+{
+    /**
+     * Returns the website registered matomo site's id
+     * @param int $rootPageUid
+     * @return int|null
+     */
+    public function getMatomoSiteId(int $rootPageUid) {
+        $rootPage = $this->getPage($rootPageUid);
+        return $rootPage['tx_opentalent_matomo_id'];
+    }
+}

+ 46 - 0
ot_stats/Classes/ViewHelpers/MatomoSiteIdViewHelper.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace Opentalent\OtTemplating\ViewHelpers;
+
+
+use Closure;
+use Opentalent\OtStats\Page\StatsSettingsRepository;
+use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
+use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+
+/**
+ * Returns the current site matomo's id if any, null else
+ *
+ *     {namespace st=Opentalent\OtStats\ViewHelpers}
+ *
+ *     {st:matomoSiteId(slug: 'foo')}
+ *
+ * @package Opentalent\OtTemplating\ViewHelpers
+ */
+class MatomoSiteIdViewHelper extends AbstractViewHelper
+{
+
+    /**
+     * -- This method is expected by Fluid --
+     * Renders the content as html
+     *
+     * @param array $arguments
+     * @param Closure $renderChildrenClosure
+     * @param RenderingContextInterface $renderingContext
+     * @return int|null
+     */
+    public static function renderStatic(
+        array $arguments,
+        Closure $renderChildrenClosure,
+        RenderingContextInterface $renderingContext
+    ) {
+        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $rootPageUid = $otPageRepository->getCurrentSiteRootPageId();
+
+        $statsSettingsRepository = GeneralUtility::makeInstance(StatsSettingsRepository::class);
+        return $statsSettingsRepository->getMatomoSiteId($rootPageUid);
+    }
+}

+ 21 - 0
ot_stats/Readme.md

@@ -0,0 +1,21 @@
+
+# OtStats
+
+Extension de suivi des statistiques typo3.
+
+|||
+|---|---|
+| Extension key | ot_stats |
+| Vendor | Opentalent |
+| Nom | OtStats |
+
+Cette extension ajoute un module 'Statistiques' au backend typo3, qui permet aux administrateurs
+des sites d'activer le suivi de leur site.
+
+Lorsqu'ils activent le suivi, l'extension va créer une nouvelle entrée de site dans la base de données
+Matomo, et récupère l'Id du site ainsi créé.
+Cette Id est ensuite stocké dans un champs dédié de la table 'pages'.
+
+Si un Id de site matomo est enregistré, l'extension intégrera alors le script de suivi matomo aux
+pages du site. Une bannière sera également présentée aux nouveaux visiteurs les avertissant de l'usage 
+de cookies de suivi et demandant leur accord. 

+ 17 - 0
ot_stats/Resources/Private/Language/locallang_mod.xlf

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<xliff version="1.0">
+    <file source-language="fr" datatype="plaintext" original="messages" date="2020-09-01T12:00:00Z" product-name="ot_templating">
+        <header/>
+        <body>
+            <trans-unit id="mlang_tabs_tab" xml:space="preserve">
+				<source>Statistiques</source>
+			</trans-unit>
+            <trans-unit id="mlang_labels_tablabel" xml:space="preserve">
+				<source>Statistiques</source>
+			</trans-unit>
+            <trans-unit id="mlang_labels_tabdescr" xml:space="preserve">
+				<source>Statistiques d'utilisation, par Opentalent</source>
+			</trans-unit>
+        </body>
+    </file>
+</xliff>

+ 9 - 0
ot_stats/Resources/Private/Layouts/Backend/Default.html

@@ -0,0 +1,9 @@
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+
+<f:be.container includeCssFiles="{ot_customizer: '{f:uri.resource(path:\'assets/Backend/style/ot_customizer.css\')}'}">
+    <div class="ot-templating">
+        <f:render section="content" />
+    </div>
+</f:be.container>
+
+

+ 29 - 0
ot_stats/Resources/Private/Partials/Matomo.html

@@ -0,0 +1,29 @@
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+{namespace st=Opentalent\OtStats\ViewHelpers}
+
+<v:variable.set name="matomo_site_id" value="{st:matomoSiteId()}" />
+
+<f:if condition="{matomo_site_id}>0">
+
+    <f:comment><!--Matomo partial: contains the integration code of matomo ...--></f:comment>
+
+    <f:comment><!-- Matomo --></f:comment>
+    <script type="text/javascript">
+        var _paq = window._paq || [];
+        /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+        _paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
+        _paq.push(["setDomains", ["*.www.opentalent.fr"]]);
+        _paq.push(['trackPageView']);
+        _paq.push(['enableLinkTracking']);
+        (function() {
+            var u="https://stats.2iopenservice.com/";
+            _paq.push(['setTrackerUrl', u+'matomo.php']);
+            _paq.push(['setSiteId', '{matomo_site_id}']);
+            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+            g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+        })();
+    </script>
+    <noscript><p><img src="https://stats.2iopenservice.com/matomo.php?idsite={matomo_site_id}&amp;rec=1" style="border:0;" alt="" /></p></noscript>
+    <f:comment><!-- End Matomo Code --></f:comment>
+
+</f:if>

+ 52 - 0
ot_stats/Resources/Private/Templates/OtStats/Index.html

@@ -0,0 +1,52 @@
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+{namespace ot=Opentalent\OtTemplating\ViewHelpers}
+
+<f:layout name="Backend/Default" />
+
+<f:section name="content">
+
+    <div class="ot-stats">
+        <f:if condition="{pageSelected}">
+            <f:then>
+                <h3>Statistiques d'utilisation</h3>
+
+                <f:if condition="{statsActivated}">
+                    <f:then>
+
+                        <iframe></iframe>
+
+                    </f:then>
+                    <f:else>
+                        <div class="statsActivationPanel">
+                            <p>
+                                Le suivi des statistiques d'utilisation n'est pas activé.
+                                Si vous voulez activer le suivi de l'utilisation, cliquez sur le bouton ci-dessous.
+                            </p>
+                            <p class="warning">
+                                Attention: Bien que les données collectées ici soient anonymisées, la loi impose
+                                malgré tout de demander l'accord des utilisateurs avant l'installation de cookies de suivi.
+                                Si vous activez le suivi des statistiques, une bannière sera présentée à chaque nouveau
+                                visiteur, qui pourra alors donner son accord ou s'opposer au suivi en question.
+                            </p>
+
+                            <f:link.action
+                                    action="enableStats"
+                                    title="select"
+                                    class="ot-btn"
+                            >
+                                Activer le suivi de l'utilisation
+                            </f:link.action>
+                        </div>
+
+                    </f:else>
+                </f:if>
+            </f:then>
+            <f:else>
+                <div class="no-page-warning">
+                    <f:comment><!-- No page selected --></f:comment>
+                    <f:translate key="noPageSelected" />
+                </div>
+            </f:else>
+        </f:if>
+    </div>
+</f:section>

BIN=BIN
ot_stats/Resources/Public/Icons/Extension.png


BIN=BIN
ot_stats/Resources/Public/Icons/Extension_white.png


BIN=BIN
ot_stats/Resources/Public/Icons/pie-chart.png


+ 20 - 0
ot_stats/Resources/Public/assets/Backend/style/ot_stats.css

@@ -0,0 +1,20 @@
+
+.ot-stats {
+    display: flex;
+    flex-direction: row;
+}
+
+.ot-stats h3 {
+    font-weight: 500;
+    font-size: 1.35em;
+    line-height: 1.2em;
+}
+
+
+.ot-stats .no-page-warning {
+    margin: 36px;
+    padding: 12px;
+    background-color: #e6e6e6;
+    border: solid 1px #666666;
+}
+

+ 26 - 0
ot_stats/composer.json

@@ -0,0 +1,26 @@
+{
+    "name": "opentalent/ot_stats",
+    "type": "typo3-cms-extension",
+    "description": "Statistiques d'utilisation par Opentalent",
+    "authors": [
+        {
+            "name": "Olivier Massot",
+            "role": "Developer"
+        }
+    ],
+    "require": {
+        "typo3/cms-core": "^9.5 || ^10.4",
+        "fluidtypo3/vhs": "^6",
+        "fluidtypo3/flux": "^9",
+        "fluidtypo3/fluidpages": "^5"
+    },
+    "replace": {
+        "ot_stats": "self.version",
+        "typo3-ter/ot_stats": "self.version"
+    },
+    "autoload": {
+        "psr-4": {
+            "Opentalent\\OtStats\\": "Classes"
+        }
+    }
+}

+ 31 - 0
ot_stats/ext_emconf.php

@@ -0,0 +1,31 @@
+<?php
+
+/***************************************************************
+ * Extension Manager/Repository config file for ext: "ot_stats"
+ *
+ * Manual updates:
+ * Only the data in the array - anything else is removed by next write.
+ * "version" and "dependencies" must not be touched!
+ ***************************************************************/
+
+$EM_CONF[$_EXTKEY] = [
+    'title' => 'Statistics',
+    'description' => "Suivi des statistiques d'utilisation des sites Typo3 par Opentalent",
+    'category' => 'services',
+    'author' => 'Olivier Massot',
+    'author_email' => 'olivier.massot@2iopenservice.fr',
+    'state' => 'alpha',
+    'uploadfolder' => 0,
+    'createDirs' => '',
+    'clearCacheOnLoad' => 0,
+    'version' => '0.1.0',
+    'constraints' => [
+        'depends' => [
+            'typo3' => '8.7.0-10.4.99',
+            'flux'  => '9.3.0-9.4.99',
+            'vhs'  => '6.0.0-6.0.99',
+        ],
+        'conflicts' => [],
+        'suggests' => [],
+    ],
+];

+ 29 - 0
ot_stats/ext_tables.php

@@ -0,0 +1,29 @@
+<?php
+defined('TYPO3_MODE') || die('Access denied.');
+
+// ext_tables.php contient les directives permettant de configurer le backend
+
+call_user_func(
+    function()
+    {
+        if (TYPO3_MODE === 'BE') {
+            /**
+             * Registers the statistics backend module
+             */
+            \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
+                'Opentalent.OtStats',
+                'web', // Make module a submodule of 'web'
+                'ot_stats', // Submodule key
+                'after:ot_customizer', // Position
+                array(
+                    'OtStats' => 'index,enableStats,disableStats',
+                ),
+                array(
+                    'access' => 'user,group',
+                    'icon' => 'EXT:ot_stats/Resources/Public/Icons/Extension_white.png',
+                    'labels' => 'LLL:EXT:ot_stats/Resources/Private/Language/locallang_mod.xlf',
+                )
+            );
+        }
+    }
+);

+ 8 - 0
ot_stats/ext_tables.sql

@@ -0,0 +1,8 @@
+# ext_tables.sql contient les directives permettant d ajouter des tables et champs à la DB
+
+#
+# Table structure for table 'pages'
+#
+CREATE TABLE pages (
+    tx_opentalent_matomo_id bigint
+);

+ 9 - 8
ot_templating/Classes/Controller/OtCustomizerController.php

@@ -2,8 +2,9 @@
 
 
 namespace Opentalent\OtTemplating\Controller;
 namespace Opentalent\OtTemplating\Controller;
 
 
-use Opentalent\OtTemplating\Page\OtPageRepository;
-use Opentalent\OtTemplating\Utility\OtCacheManager;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Opentalent\OtCore\Cache\OtCacheManager;
+use Opentalent\OtTemplating\Templating\TemplateRepository;
 use PDO;
 use PDO;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
@@ -33,11 +34,11 @@ class OtCustomizerController extends ActionController {
         }
         }
 
 
         $this->view->assign('rootPage', $rootPageUid);
         $this->view->assign('rootPage', $rootPageUid);
-        $this->view->assign('templates', OtPageRepository::templates);
+        $this->view->assign('templates', TemplateRepository::templates);
 
 
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        $this->view->assign('currentTemplate', $pageRepository->getCurrentTemplate($rootPageUid));
-        $this->view->assign('preferences', $pageRepository->getTemplatePreferences($rootPageUid));
+        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        $this->view->assign('currentTemplate', $templateRepository->getCurrentTemplate());
+        $this->view->assign('preferences', $templateRepository->getTemplatePreferences());
 
 
         $args = $this->request->getArguments();
         $args = $this->request->getArguments();
         $this->view->assign('preferencesUpdated', $args['preferencesUpdated']);
         $this->view->assign('preferencesUpdated', $args['preferencesUpdated']);
@@ -79,7 +80,7 @@ class OtCustomizerController extends ActionController {
     public function updatePreferencesAction() {
     public function updatePreferencesAction() {
         $args = $this->request->getArguments();
         $args = $this->request->getArguments();
 
 
-        $prefs = OtPageRepository::defaultPreferences;
+        $prefs = TemplateRepository::defaultPreferences;
 
 
         if (isset($args['themeColor'])) {
         if (isset($args['themeColor'])) {
             $prefs['themeColor'] = $args['themeColor'];
             $prefs['themeColor'] = $args['themeColor'];
@@ -121,7 +122,7 @@ class OtCustomizerController extends ActionController {
      *
      *
      * @return int | null
      * @return int | null
      */
      */
-    public function getCurrentRootPageUid() {
+    protected function getCurrentRootPageUid() {
         // Get the current page uid
         // Get the current page uid
         $pageId = (int) GeneralUtility::_GP('id');
         $pageId = (int) GeneralUtility::_GP('id');
 
 

+ 1 - 1
ot_templating/Classes/News/NewsFilter.php

@@ -3,7 +3,7 @@
 namespace Opentalent\OtTemplating\News;
 namespace Opentalent\OtTemplating\News;
 
 
 use GeorgRinger\News\Utility\Page;
 use GeorgRinger\News\Utility\Page;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 
 class NewsFilter
 class NewsFilter

+ 76 - 0
ot_templating/Classes/Templating/TemplateRepository.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace Opentalent\OtTemplating\Templating;
+
+use Opentalent\OtCore\Page\OtPageRepository;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Class TemplateRepository
+ * Provides methods to retrieve data about the current site's template
+ *
+ * @package Opentalent\OtCore\Templating
+ */
+class TemplateRepository
+{
+    CONST templates = [
+        'Classic' => [
+            'name' => 'Classique',
+            'description' => "Le thème classique, simple et complet. C'est le thème par défaut.",
+            'picture' => 'EXT:ot_templating/Resources/Public/media/theme_classic.png'
+        ],
+        'Modern' => [
+            'name' => 'Moderne',
+            'description' => '[Nouveauté 2020] Un thème moderne et intuitif.',
+            'picture' => 'EXT:ot_templating/Resources/Public/media/theme_modern.png'
+        ]
+    ];
+
+    CONST defaultTemplate = 'Classic';
+
+    CONST defaultPreferences = [
+        'themeColor' => 'lightblue',
+        'displayCarousel' => '1'
+    ];
+
+    /**
+     * Returns the current site template's name
+     * @return string
+     */
+    public function getCurrentTemplate() {
+        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+
+        $rootPageUid = $pageRepository->getCurrentSiteRootPageId();
+        if (!($rootPageUid >= 0)) {
+            return self::defaultTemplate;
+        }
+
+        $rootPage = $pageRepository->getPage($rootPageUid);
+        $templateName = $rootPage['tx_opentalent_template'];
+        if ($templateName==='') {
+            return self::defaultTemplate;
+        }
+        return $templateName;
+    }
+
+    /**
+     * Returns the current site template's name
+     * @return array
+     */
+    public function getTemplatePreferences() {
+        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+
+        $rootPageUid = $pageRepository->getCurrentSiteRootPageId();
+        if (!($rootPageUid >= 0)) {
+            return [];
+        }
+
+        $rootPage = $pageRepository->getPage($rootPageUid);
+        $templatePreferences = $rootPage['tx_opentalent_template_preferences'];
+
+        if ($templatePreferences==='') {
+            return self::defaultPreferences;
+        }
+        return json_decode($templatePreferences, true);
+    }
+}

+ 0 - 35
ot_templating/Classes/Utility/Tsfe.php

@@ -1,35 +0,0 @@
-<?php
-
-
-namespace Opentalent\OtTemplating\Utility;
-
-
-use TYPO3\CMS\Core\Site\Entity\SiteInterface;
-use TYPO3\CMS\Core\Site\SiteFinder;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-class Tsfe
-{
-    public function initializeFrontEndRendering($pageId = 0)
-    {
-        $siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
-        /** @var SiteInterface $site */
-        $site = $siteFinder->getSiteByPageId($pageId);
-        $GLOBALS['TSFE'] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
-            'TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController',
-            $GLOBALS['TYPO3_CONF_VARS'],
-            $site,
-            $site->getDefaultLanguage()
-        );
-        $GLOBALS['TSFE']->set_no_cache();
-        $GLOBALS['TSFE']->fe_user = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::class);
-        $GLOBALS['TSFE']->fe_user->checkPid_value = 0;
-        $GLOBALS['TSFE']->fe_user->start();
-        $GLOBALS['TSFE']->fe_user->unpack_uc();
-        $GLOBALS['TSFE']->determineId();
-        $GLOBALS['TSFE']->getConfigArray();
-        $GLOBALS['TSFE']->cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
-        $GLOBALS['TSFE']->settingLanguage();
-        $GLOBALS['TSFE']->settingLocale();
-    }
-}

+ 2 - 14
ot_templating/Classes/ViewHelpers/Carousel/ImagesViewHelper.php

@@ -4,11 +4,8 @@ namespace Opentalent\OtTemplating\ViewHelpers\Carousel;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\ViewHelpers\Page\Resources\FalViewHelper;
 use FluidTYPO3\Vhs\ViewHelpers\Page\Resources\FalViewHelper;
-use Opentalent\OtTemplating\Domain\Repository\EventRepository;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  *   This view helper provides an an array of the FAL images files
  *   This view helper provides an an array of the FAL images files
@@ -24,9 +21,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class ImagesViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class ImagesViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**
@@ -99,12 +95,4 @@ class ImagesViewHelper extends AbstractViewHelper implements LoggerAwareInterfac
         $variables = [$as => $images, $countAs => $count];
         $variables = [$as => $images, $countAs => $count];
         return $this->renderChildrenWithVariables($variables);
         return $this->renderChildrenWithVariables($variables);
     }
     }
-
-    /**
-     * @param EventRepository $eventRepository
-     */
-    public function injectEventRepository(EventRepository $eventRepository)
-    {
-        $this->eventRepository = $eventRepository;
-    }
 }
 }

+ 4 - 9
ot_templating/Classes/ViewHelpers/Donors/GetAllViewHelper.php

@@ -3,12 +3,9 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Donors;
 namespace Opentalent\OtTemplating\ViewHelpers\Donors;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Repository\DonorRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\Domain\Repository\DonorRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 
 
 /**
 /**
  *   This view helper give access to an ApiPagedCollection named according to the 'as' variable
  *   This view helper give access to an ApiPagedCollection named according to the 'as' variable
@@ -23,9 +20,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetAllViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetAllViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
     /**
     /**
      * >> Required to prevent typo3 to escape the html output
      * >> Required to prevent typo3 to escape the html output
@@ -75,7 +71,6 @@ class GetAllViewHelper extends AbstractViewHelper implements LoggerAwareInterfac
      */
      */
     public function render()
     public function render()
     {
     {
-
         // Get current settings
         // Get current settings
         $as = $this->arguments['as'];
         $as = $this->arguments['as'];
         $organizationId = $this->arguments['organizationId'];
         $organizationId = $this->arguments['organizationId'];

+ 5 - 8
ot_templating/Classes/ViewHelpers/Events/GetAllViewHelper.php

@@ -3,11 +3,9 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Repository\EventRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Domain\Repository\EventRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 /**
 /**
  *   This view helper give access to an ApiPagedCollection named according to the 'as' variable
  *   This view helper give access to an ApiPagedCollection named according to the 'as' variable
@@ -22,9 +20,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetAllViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetAllViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**
@@ -71,7 +68,7 @@ class GetAllViewHelper extends AbstractViewHelper implements LoggerAwareInterfac
      * Renders the content as html
      * Renders the content as html
      *
      *
      * @return string
      * @return string
-     * @throws ApiRequestException
+     * @throws ApiRequestException|\Exception
      */
      */
     public function render()
     public function render()
     {
     {

+ 5 - 8
ot_templating/Classes/ViewHelpers/Events/GetByIdViewHelper.php

@@ -3,12 +3,10 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Model\Event;
-use Opentalent\OtTemplating\Domain\Repository\EventRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Domain\Model\Event;
+use Opentalent\OtCore\Domain\Repository\EventRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 /**
 /**
  *   This view helper returns the Event object matching the given id
  *   This view helper returns the Event object matching the given id
@@ -22,9 +20,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetByIdViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetByIdViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**

+ 5 - 11
ot_templating/Classes/ViewHelpers/Events/GetNextViewHelper.php

@@ -3,14 +3,9 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use FluidTYPO3\Vhs\Utility\ErrorUtility;
-use Opentalent\OtTemplating\Domain\Repository\EventRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3\CMS\Core\TimeTracker\TimeTracker;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Domain\Repository\EventRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 /**
 /**
  *   This view helper provides an ApiPagedCollection named according to the 'as' variable
  *   This view helper provides an ApiPagedCollection named according to the 'as' variable
@@ -27,9 +22,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetNextViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetNextViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**
@@ -112,7 +106,7 @@ class GetNextViewHelper extends AbstractViewHelper implements LoggerAwareInterfa
         $fromChildren = $this->arguments['fromChildren'];
         $fromChildren = $this->arguments['fromChildren'];
 
 
         if (!$organizationId) {
         if (!$organizationId) {
-            ErrorUtility::throwViewHelperException('Organization id is missing');
+            $this->throwException('Organization id is missing');
         }
         }
 
 
         $fromDate = new \DateTime();
         $fromDate = new \DateTime();

+ 3 - 3
ot_templating/Classes/ViewHelpers/EventsPage/GetIdViewHelper.php

@@ -3,10 +3,10 @@
 namespace Opentalent\OtTemplating\ViewHelpers\EventsPage;
 namespace Opentalent\OtTemplating\ViewHelpers\EventsPage;
 
 
 use Closure;
 use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Retrieves and returns the uid of the events' page of the current site
  * Retrieves and returns the uid of the events' page of the current site
@@ -21,7 +21,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetIdViewHelper extends AbstractViewHelper
+class GetIdViewHelper extends OtAbstractViewHelper
 {
 {
 
 
     /**
     /**

+ 3 - 4
ot_templating/Classes/ViewHelpers/EventsPage/GetUriViewHelper.php

@@ -2,8 +2,8 @@
 
 
 namespace Opentalent\OtTemplating\ViewHelpers\EventsPage;
 namespace Opentalent\OtTemplating\ViewHelpers\EventsPage;
 
 
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Retrieves and returns the Uri to the events page of the current site
  * Retrieves and returns the Uri to the events page of the current site
@@ -18,7 +18,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetUriViewHelper extends AbstractViewHelper
+class GetUriViewHelper extends OtAbstractViewHelper
 {
 {
     /**
     /**
      *  -- This method is expected by Fluid --
      *  -- This method is expected by Fluid --
@@ -41,7 +41,6 @@ class GetUriViewHelper extends AbstractViewHelper
         }
         }
 
 
         $uriBuilder = $renderingContext->getControllerContext()->getUriBuilder();
         $uriBuilder = $renderingContext->getControllerContext()->getUriBuilder();
-        $uri = $uriBuilder->setTargetPageUid($pageUid)->build();
-        return $uri;
+        return $uriBuilder->setTargetPageUid($pageUid)->build();
     }
     }
 }
 }

+ 4 - 3
ot_templating/Classes/ViewHelpers/GetPageUidViewHelper.php

@@ -4,7 +4,8 @@ namespace Opentalent\OtTemplating\ViewHelpers;
 
 
 
 
 use Closure;
 use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
 use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
@@ -17,11 +18,11 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  *     {namespace ot=Opentalent\OtTemplating\ViewHelpers}
  *     {namespace ot=Opentalent\OtTemplating\ViewHelpers}
  *
  *
- *     {ot:pageExists(slug: 'foo')}
+ *     {ot:getPageUid(slug: 'foo')}
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetPageUidViewHelper extends AbstractViewHelper
+class GetPageUidViewHelper extends OtAbstractViewHelper
 {
 {
 
 
     /**
     /**

+ 0 - 7
ot_templating/Classes/ViewHelpers/ImagePViewHelper.php

@@ -2,14 +2,8 @@
 
 
 namespace Opentalent\OtTemplating\ViewHelpers;
 namespace Opentalent\OtTemplating\ViewHelpers;
 
 
-
-use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
-use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
 use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException;
 use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper;
 use TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper;
-use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
  * -- Wrapper for the TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper --
  * -- Wrapper for the TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper --
@@ -25,7 +19,6 @@ use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
  */
  */
 class ImagePViewHelper extends ImageViewHelper
 class ImagePViewHelper extends ImageViewHelper
 {
 {
-
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --
      * Declares the viewhelper's parameters
      * Declares the viewhelper's parameters

+ 2 - 3
ot_templating/Classes/ViewHelpers/LoginFailedViewHelper.php

@@ -3,10 +3,9 @@
 
 
 namespace Opentalent\OtTemplating\ViewHelpers;
 namespace Opentalent\OtTemplating\ViewHelpers;
 
 
-
 use Closure;
 use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Returns true if a login attempt just failed
  * Returns true if a login attempt just failed
@@ -17,7 +16,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class LoginFailedViewHelper extends AbstractViewHelper
+class LoginFailedViewHelper extends OtAbstractViewHelper
 {
 {
 
 
     /**
     /**

+ 4 - 7
ot_templating/Classes/ViewHelpers/Members/GetAllCaViewHelper.php

@@ -3,11 +3,9 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Members;
 namespace Opentalent\OtTemplating\ViewHelpers\Members;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Repository\MemberRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Domain\Repository\MemberRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 /**
 /**
  *   This view helper give access to an array named according to the 'as' variable
  *   This view helper give access to an array named according to the 'as' variable
@@ -22,9 +20,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetAllCaViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetAllCaViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**

+ 4 - 7
ot_templating/Classes/ViewHelpers/Members/GetAllViewHelper.php

@@ -3,11 +3,9 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Members;
 namespace Opentalent\OtTemplating\ViewHelpers\Members;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Repository\MemberRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\Domain\Repository\MemberRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 
 
 /**
 /**
  *   This view helper give access to an array named according to the 'as' variable
  *   This view helper give access to an array named according to the 'as' variable
@@ -22,9 +20,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetAllViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetAllViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**

+ 5 - 8
ot_templating/Classes/ViewHelpers/Organizations/GetByIdViewHelper.php

@@ -3,12 +3,10 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Organizations;
 namespace Opentalent\OtTemplating\ViewHelpers\Organizations;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Model\Organization;
-use Opentalent\OtTemplating\Domain\Repository\OrganizationRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Domain\Model\Organization;
+use Opentalent\OtCore\Domain\Repository\OrganizationRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 /**
 /**
  *   This view helper return the Organization object matching the given id
  *   This view helper return the Organization object matching the given id
@@ -22,9 +20,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetByIdViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetByIdViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**

+ 4 - 7
ot_templating/Classes/ViewHelpers/Organizations/GetChildrenViewHelper.php

@@ -3,11 +3,9 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Organizations;
 namespace Opentalent\OtTemplating\ViewHelpers\Organizations;
 
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
-use Opentalent\OtTemplating\Domain\Repository\OrganizationRepository;
-use Opentalent\OtTemplating\Exception\ApiRequestException;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Domain\Repository\OrganizationRepository;
+use Opentalent\OtCore\Exception\ApiRequestException;
 
 
 /**
 /**
  *   This view helper returns the organization children structures as an ApiPagedCollection
  *   This view helper returns the organization children structures as an ApiPagedCollection
@@ -21,9 +19,8 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetChildrenViewHelper extends AbstractViewHelper implements LoggerAwareInterface {
+class GetChildrenViewHelper extends OtAbstractViewHelper {
 
 
-    use LoggerAwareTrait;
     use TemplateVariableViewHelperTrait;
     use TemplateVariableViewHelperTrait;
 
 
     /**
     /**

+ 2 - 2
ot_templating/Classes/ViewHelpers/Request/GetArgumentViewHelper.php

@@ -3,8 +3,8 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 
 
 use Closure;
 use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  *   Check if an argument with this name was passed trough the request.
  *   Check if an argument with this name was passed trough the request.
@@ -16,7 +16,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetArgumentViewHelper extends AbstractViewHelper {
+class GetArgumentViewHelper extends OtAbstractViewHelper {
 
 
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --

+ 2 - 2
ot_templating/Classes/ViewHelpers/Request/GetParameterViewHelper.php

@@ -3,8 +3,8 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 
 
 use Closure;
 use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  *   Checks if a parameter with this name was passed trough the GET request.
  *   Checks if a parameter with this name was passed trough the GET request.
@@ -16,7 +16,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetParameterViewHelper extends AbstractViewHelper {
+class GetParameterViewHelper extends OtAbstractViewHelper {
 
 
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --

+ 2 - 11
ot_templating/Classes/ViewHelpers/Request/GetViewHelper.php

@@ -3,8 +3,8 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 
 
 use Closure;
 use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  *   Returns the current GET request as an array.
  *   Returns the current GET request as an array.
@@ -15,16 +15,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetViewHelper extends AbstractViewHelper {
-
-    /**
-     * -- This method is expected by Fluid --
-     * Declares the viewhelper's parameters
-     */
-    public function initializeArguments()
-    {
-    }
-
+class GetViewHelper extends OtAbstractViewHelper {
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --
      * Renders the content as html
      * Renders the content as html

+ 2 - 2
ot_templating/Classes/ViewHelpers/Request/WithPageViewHelper.php

@@ -3,8 +3,8 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 namespace Opentalent\OtTemplating\ViewHelpers\Request;
 
 
 use Closure;
 use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  *   Returns the current url with a 'page=' argument set up or updated
  *   Returns the current url with a 'page=' argument set up or updated
@@ -16,7 +16,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class WithPageViewHelper extends AbstractViewHelper {
+class WithPageViewHelper extends OtAbstractViewHelper {
 
 
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --

+ 3 - 3
ot_templating/Classes/ViewHelpers/RootPage/GetIdViewHelper.php

@@ -3,10 +3,10 @@
 namespace Opentalent\OtTemplating\ViewHelpers\RootPage;
 namespace Opentalent\OtTemplating\ViewHelpers\RootPage;
 
 
 use Closure;
 use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Viewhelper to retrieve the Id of the current site root page
  * Viewhelper to retrieve the Id of the current site root page
@@ -18,7 +18,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetIdViewHelper extends AbstractViewHelper
+class GetIdViewHelper extends OtAbstractViewHelper
 {
 {
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --

+ 3 - 5
ot_templating/Classes/ViewHelpers/RootPage/GetUriViewHelper.php

@@ -3,12 +3,10 @@
 namespace Opentalent\OtTemplating\ViewHelpers\RootPage;
 namespace Opentalent\OtTemplating\ViewHelpers\RootPage;
 
 
 use Closure;
 use Closure;
-use FluidTYPO3\Vhs\Service\PageService;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Page\OtPageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Viewhelper to retrieve the Uri of the root page of the current site
  * Viewhelper to retrieve the Uri of the root page of the current site
@@ -20,7 +18,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class GetUriViewHelper extends AbstractViewHelper
+class GetUriViewHelper extends OtAbstractViewHelper
 {
 {
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --

+ 5 - 5
ot_templating/Classes/ViewHelpers/Template/CurrentViewHelper.php

@@ -4,10 +4,10 @@ namespace Opentalent\OtTemplating\ViewHelpers\Template;
 
 
 
 
 use Closure;
 use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtTemplating\Templating\TemplateRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Returns the name of the current template
  * Returns the name of the current template
@@ -18,7 +18,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers\Template
  * @package Opentalent\OtTemplating\ViewHelpers\Template
  */
  */
-class CurrentViewHelper extends AbstractViewHelper
+class CurrentViewHelper extends OtAbstractViewHelper
 {
 {
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --
@@ -34,8 +34,8 @@ class CurrentViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        return $pageRepository->getCurrentTemplate();
+        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        return $templateRepository->getCurrentTemplate();
     }
     }
 
 
 }
 }

+ 6 - 5
ot_templating/Classes/ViewHelpers/Template/GetPreferenceViewHelper.php

@@ -4,10 +4,11 @@ namespace Opentalent\OtTemplating\ViewHelpers\Template;
 
 
 
 
 use Closure;
 use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtTemplating\Templating\TemplateRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Returns the value of the requested preference
  * Returns the value of the requested preference
@@ -18,7 +19,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers\Template
  * @package Opentalent\OtTemplating\ViewHelpers\Template
  */
  */
-class GetPreferenceViewHelper extends AbstractViewHelper
+class GetPreferenceViewHelper extends OtAbstractViewHelper
 {
 {
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --
@@ -48,8 +49,8 @@ class GetPreferenceViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        $preferences = $pageRepository->getTemplatePreferences();
+        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        $preferences = $templateRepository->getTemplatePreferences();
         $key = $arguments['key'];
         $key = $arguments['key'];
         return $preferences[$key];
         return $preferences[$key];
     }
     }

+ 6 - 5
ot_templating/Classes/ViewHelpers/Template/GetPreferencesViewHelper.php

@@ -3,10 +3,11 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Template;
 namespace Opentalent\OtTemplating\ViewHelpers\Template;
 
 
 use Closure;
 use Closure;
-use Opentalent\OtTemplating\Page\OtPageRepository;
+use Opentalent\OtCore\Page\OtPageRepository;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtTemplating\Templating\TemplateRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  * Returns the recorded preferences
  * Returns the recorded preferences
@@ -17,7 +18,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers\Template
  * @package Opentalent\OtTemplating\ViewHelpers\Template
  */
  */
-class PreferencesViewHelper extends AbstractViewHelper
+class PreferencesViewHelper extends OtAbstractViewHelper
 {
 {
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --
@@ -33,8 +34,8 @@ class PreferencesViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        return $pageRepository->getTemplatePreferences();
+        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        return $templateRepository->getTemplatePreferences();
     }
     }
 
 
 }
 }

+ 2 - 2
ot_templating/Classes/ViewHelpers/Utilities/CountViewHelper.php

@@ -3,8 +3,8 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Utilities;
 namespace Opentalent\OtTemplating\ViewHelpers\Utilities;
 
 
 use Closure;
 use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
 /**
 /**
  *   Returns the number of elements of an array
  *   Returns the number of elements of an array
@@ -15,7 +15,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  *
  * @package Opentalent\OtTemplating\ViewHelpers
  * @package Opentalent\OtTemplating\ViewHelpers
  */
  */
-class CountViewHelper extends AbstractViewHelper {
+class CountViewHelper extends OtAbstractViewHelper {
 
 
     /**
     /**
      * -- This method is expected by Fluid --
      * -- This method is expected by Fluid --

+ 3 - 0
ot_templating/Resources/Private/Partials/Classic/Header.html

@@ -6,6 +6,9 @@
 <f:comment><!-- Render the assets' includes --></f:comment>
 <f:comment><!-- Render the assets' includes --></f:comment>
 <f:render partial="Classic/Assets" />
 <f:render partial="Classic/Assets" />
 
 
+<f:comment><!-- Render the matomo integration code --></f:comment>
+<f:comment><!--<f:render partial="Classic/Matomo" />--></f:comment>
+
 <header>
 <header>
     <f:comment><!-- Render the topbar defined in partial/Topbar.html--></f:comment>
     <f:comment><!-- Render the topbar defined in partial/Topbar.html--></f:comment>
     <f:render partial="Classic/Topbar" arguments="{_all}" />
     <f:render partial="Classic/Topbar" arguments="{_all}" />

+ 3 - 0
ot_templating/Resources/Private/Partials/Modern/Header.html

@@ -4,6 +4,9 @@
 <f:render partial="Modern/Assets" arguments="{_all}" />
 <f:render partial="Modern/Assets" arguments="{_all}" />
 <f:render partial="Modern/Preloader" />
 <f:render partial="Modern/Preloader" />
 
 
+<f:comment><!-- Render the matomo integration code --></f:comment>
+<f:comment><!--<f:render partial="Classic/Matomo" />--></f:comment>
+
 <header id="header" class="header default fullWidth">
 <header id="header" class="header default fullWidth">
 
 
     <f:comment><!-- Render the topbar defined in partial/Topbar.html--></f:comment>
     <f:comment><!-- Render the topbar defined in partial/Topbar.html--></f:comment>

BIN=BIN
ot_templating/Resources/Public/Icons/color-palette.png


+ 1 - 1
ot_templating/ext_emconf.php

@@ -18,7 +18,7 @@ $EM_CONF[$_EXTKEY] = [
     'uploadfolder' => 0,
     'uploadfolder' => 0,
     'createDirs' => '',
     'createDirs' => '',
     'clearCacheOnLoad' => 0,
     'clearCacheOnLoad' => 0,
-    'version' => '0.1.0',
+    'version' => '0.2.0',
     'constraints' => [
     'constraints' => [
         'depends' => [
         'depends' => [
             'typo3' => '8.7.0-10.4.99',
             'typo3' => '8.7.0-10.4.99',

+ 1 - 3
ot_templating/ext_tables.php

@@ -6,7 +6,6 @@ defined('TYPO3_MODE') || die('Access denied.');
 call_user_func(
 call_user_func(
     function()
     function()
     {
     {
-
         // Include the configuration files
         // Include the configuration files
         \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
         \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile(
             'ot_templating',
             'ot_templating',
@@ -14,7 +13,6 @@ call_user_func(
             'Templating');
             'Templating');
 
 
         if (TYPO3_MODE === 'BE') {
         if (TYPO3_MODE === 'BE') {
-
             /**
             /**
              * Registers the customizer backend module
              * Registers the customizer backend module
              */
              */
@@ -22,7 +20,7 @@ call_user_func(
                 'Opentalent.OtTemplating',
                 'Opentalent.OtTemplating',
                 'web', // Make module a submodule of 'web'
                 'web', // Make module a submodule of 'web'
                 'ot_customizer', // Submodule key
                 'ot_customizer', // Submodule key
-                '', // Position
+                'before:ot_stats', // Position
                 array(
                 array(
                     'OtCustomizer' => 'index,selectTemplate,updatePreferences',
                     'OtCustomizer' => 'index,selectTemplate,updatePreferences',
                 ),
                 ),

+ 2 - 1
ot_templating/ext_tables.sql

@@ -6,7 +6,8 @@
 CREATE TABLE pages (
 CREATE TABLE pages (
 	tx_opentalent_structure_id bigint,
 	tx_opentalent_structure_id bigint,
     tx_opentalent_template varchar(100) DEFAULT '',
     tx_opentalent_template varchar(100) DEFAULT '',
-    tx_opentalent_template_preferences text DEFAULT ''
+    tx_opentalent_template_preferences text DEFAULT '',
+    tx_opentalent_matomo_id bigint
 );
 );
 
 
 #
 #