فهرست منبع

Merge remote-tracking branch 'origin/social_networks'

Olivier Massot 4 سال پیش
والد
کامیت
1a0a6e8e07
49فایلهای تغییر یافته به همراه419 افزوده شده و 210 حذف شده
  1. 18 18
      ot_core/Classes/Middleware/Frontend/OtSiteResolver.php
  2. 5 5
      ot_core/Classes/Website/OtWebsiteRepository.php
  3. 18 0
      ot_core/Configuration/RequestMiddlewares.php
  4. 0 25
      ot_core/Configuration/base_site_conf.yaml
  5. 3 2
      ot_optimizer/Classes/Middleware/Frontend/OtPageResolver.php
  6. 0 49
      ot_optimizer/Classes/Routing/SiteMatcher.php
  7. 1 10
      ot_optimizer/Configuration/RequestMiddlewares.php
  8. 36 0
      ot_templating/Classes/ViewHelpers/Request/GetPageViewHelper.php
  9. 36 0
      ot_templating/Classes/ViewHelpers/Request/GetWebsiteViewHelper.php
  10. 15 0
      ot_templating/Resources/Private/Language/locallang.xlf
  11. 1 0
      ot_templating/Resources/Private/Layouts/Classic/News.html
  12. 2 0
      ot_templating/Resources/Private/Layouts/Modern/News.html
  13. 1 0
      ot_templating/Resources/Private/Partials/Classic/EventsShow.html
  14. 25 0
      ot_templating/Resources/Private/Partials/Classic/Footer.html
  15. 0 3
      ot_templating/Resources/Private/Partials/Classic/Header.html
  16. 19 0
      ot_templating/Resources/Private/Partials/Classic/ShareBar.html
  17. 0 37
      ot_templating/Resources/Private/Partials/Classic/SocialBar.html
  18. 0 2
      ot_templating/Resources/Private/Partials/Classic/Topbar.html
  19. 1 0
      ot_templating/Resources/Private/Partials/Modern/EventsShow.html
  20. 69 35
      ot_templating/Resources/Private/Partials/Modern/Footer.html
  21. 0 1
      ot_templating/Resources/Private/Partials/Modern/Header.html
  22. 25 0
      ot_templating/Resources/Private/Partials/Modern/ShareBar.html
  23. 1 1
      ot_templating/Resources/Private/Templates/Content/Carousel.html
  24. 2 2
      ot_templating/Resources/Private/Templates/Content/FCE50-50.html
  25. 2 2
      ot_templating/Resources/Private/Templates/Content/Faq.html
  26. 25 0
      ot_templating/Resources/Private/Templates/Content/ShareBar.html
  27. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-blue.css
  28. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-blue.css.map
  29. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-green.css
  30. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-green.css.map
  31. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-grey.css
  32. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-grey.css.map
  33. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css
  34. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css.map
  35. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css
  36. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css.map
  37. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-orange.css
  38. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-orange.css.map
  39. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-purple.css
  40. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-purple.css.map
  41. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-red.css
  42. 0 0
      ot_templating/Resources/Public/assets/Classic/style/classic-red.css.map
  43. 12 0
      ot_templating/Resources/Public/assets/Classic/style/module/_footer.scss
  44. 23 0
      ot_templating/Resources/Public/assets/Classic/style/module/_share-bar.scss
  45. 0 14
      ot_templating/Resources/Public/assets/Classic/style/module/_social-bar.scss
  46. 0 0
      ot_templating/Resources/Public/assets/Classic/style/style.css
  47. 0 0
      ot_templating/Resources/Public/assets/Classic/style/style.css.map
  48. 1 2
      ot_templating/Resources/Public/assets/Classic/style/style.scss
  49. 78 2
      ot_templating/Resources/Public/assets/Modern/style/custom.css

+ 18 - 18
ot_optimizer/Classes/XClass/Frontend/Middleware/OtSiteResolver.php → ot_core/Classes/Middleware/Frontend/OtSiteResolver.php

@@ -1,14 +1,15 @@
 <?php
 declare(strict_types = 1);
-namespace Opentalent\OtOptimizer\XClass\Frontend\Middleware;
+namespace Opentalent\OtCore\Middleware\Frontend;
 
 use Opentalent\OtCore\Exception\NoSuchWebsiteException;
-use Opentalent\OtOptimizer\Routing\SiteMatcher;
+use Opentalent\OtCore\Website\OtWebsiteRepository;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Server\RequestHandlerInterface;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
+use TYPO3\CMS\Core\Routing\SiteRouteResult;
 use TYPO3\CMS\Frontend\Controller\ErrorController;
 use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
 
@@ -17,17 +18,6 @@ use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
  */
 class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
 {
-    private bool $shallFallback;
-
-    public function __construct($matcher = null)
-    {
-        $this->shallFallback = $_COOKIE['optimize'] != 1 && $_SERVER['TYPO3_OPTIMIZE'] != 1;
-
-        if ($this->shallFallback) {
-            parent::__construct($matcher);
-        }
-    }
-
     /**
      * Resolve the site/language information by checking the page ID or the URL.
      *
@@ -37,13 +27,20 @@ class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
      */
     public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
     {
-        if ($this->shallFallback) {
-            return parent::process($request, $handler);
-        }
+        $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
 
-        $matcher = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteMatcher::class);
         try {
-            $routeResult = $matcher->matchRequest($request);
+            $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
+
+            $otWebsite = $otWebsiteRepository->matchUriToWebsite($request->getUri(), $devMode);
+            $site = $otWebsiteRepository->generateWebsiteConfiguration($otWebsite);
+            $language = $site->getDefaultLanguage();
+            if ($devMode) {
+                preg_match("/\w+\/(.*)/", $request->getUri()->getPath(), $m);
+                $tail = $m[1] ?? "";
+            } else {
+                $tail = rtrim($request->getUri()->getPath(), '/');
+            }
         } catch (NoSuchWebsiteException $e) {
             return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
                 $request,
@@ -52,6 +49,9 @@ class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
             );
         }
 
+        $routeResult = new SiteRouteResult($request->getUri(), $site, $language, $tail);
+
+        $request = $request->withAttribute('ot_website', $otWebsite);
         $request = $request->withAttribute('site', $routeResult->getSite());
         $request = $request->withAttribute('language', $routeResult->getLanguage());
         $request = $request->withAttribute('routing', $routeResult);

+ 5 - 5
ot_core/Classes/Website/OtWebsiteRepository.php

@@ -6,6 +6,7 @@ use Opentalent\OtCore\Exception\InvalidWebsiteConfigurationException;
 use Opentalent\OtCore\Exception\NoSuchRecordException;
 use Opentalent\OtCore\Exception\NoSuchWebsiteException;
 use Opentalent\OtCore\Utility\RouteNormalizer;
+use Psr\Http\Message\UriInterface;
 use Symfony\Component\Yaml\Yaml;
 use TYPO3\CMS\Core\Http\Uri;
 use TYPO3\CMS\Core\Site\Entity\Site;
@@ -338,15 +339,14 @@ class OtWebsiteRepository
     }
 
     /**
-     * @param \Psr\Http\Message\UriInterface $uri
+     * @param UriInterface $uri
      * @param bool $devMode
+     * @param array|null $website
      * @return int
      * @throws NoSuchWebsiteException
      */
-    public function matchUriToPage(\Psr\Http\Message\UriInterface $uri, bool $devMode=false): int
+    public function matchUriToPage(array $otWebsite, UriInterface $uri, bool $devMode=false): int
     {
-        $website = $this->matchUriToWebsite($uri, $devMode);
-
         $tail = $uri->getPath();
         if ($devMode) {
             $tail = preg_replace("/\/?[\w\-]+\/?(.*)/", "/$1", $tail);
@@ -359,7 +359,7 @@ class OtWebsiteRepository
         return $q
             ->select('uid')
             ->from('pages')
-            ->where($q->expr()->eq('ot_website_uid', $website['uid']))
+            ->where($q->expr()->eq('ot_website_uid', $otWebsite['uid']))
             ->andWhere($q->expr()->eq('slug', $q->expr()->literal($tail)))
             ->execute()
             ->fetchColumn(0);

+ 18 - 0
ot_core/Configuration/RequestMiddlewares.php

@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * Register middlewares, which will be triggered at each request
+ */
+return [
+    'frontend' => [
+        'typo3/cms-frontend/site' => [
+            'target' => Opentalent\OtCore\Middleware\Frontend\OtSiteResolver::class,
+            'before' => [
+                'typo3/cms-adminpanel/initiator'
+            ],
+            'after' => [
+                'typo3/cms-adminpanel/sql-logging'
+            ],
+        ],
+    ],
+];

+ 0 - 25
ot_core/Configuration/base_site_conf.yaml

@@ -1,25 +0,0 @@
-errorHandling:
-  -
-    errorCode: '404'
-    errorHandler: PHP
-    errorPhpClassFQCN: Opentalent\OtTemplating\Page\ErrorHandler
-  -
-    errorCode: '403'
-    errorHandler: PHP
-    errorPhpClassFQCN: Opentalent\OtTemplating\Page\ErrorHandler
-flux_content_types: ''
-flux_page_templates: ''
-languages:
-  -
-    title: Fr
-    enabled: true
-    base: /
-    typo3Language: fr
-    locale: fr_FR
-    iso-639-1: fr
-    navigationTitle: Fr
-    hreflang: fr-FR
-    direction: ltr
-    flag: fr
-    languageId: '0'
-routes: {  }

+ 3 - 2
ot_optimizer/Classes/XClass/Frontend/Middleware/OtPageResolver.php → ot_optimizer/Classes/Middleware/Frontend/OtPageResolver.php

@@ -1,7 +1,7 @@
 <?php
 
 
-namespace Opentalent\OtOptimizer\XClass\Frontend\Middleware;
+namespace Opentalent\OtOptimizer\Middleware\Frontend;
 
 
 use Opentalent\OtCore\Website\OtWebsiteRepository;
@@ -40,9 +40,10 @@ class OtPageResolver extends \TYPO3\CMS\Frontend\Middleware\PageResolver
         $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
         $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
 
+        $website = $GLOBALS['TYPO3_REQUEST']->getAttribute('ot_website');
         $params = $request->getQueryParams();
-        $pageUid = $otWebsiteRepository->matchUriToPage($request->getUri(), $devMode);
 
+        $pageUid = $otWebsiteRepository->matchUriToPage($website, $request->getUri(), $devMode);
         if (!$pageUid > 0) {
             return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
                 $request,

+ 0 - 49
ot_optimizer/Classes/Routing/SiteMatcher.php

@@ -1,49 +0,0 @@
-<?php
-namespace Opentalent\OtOptimizer\Routing;
-
-use Opentalent\OtCore\Website\OtWebsiteRepository;
-use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Routing\SiteRouteResult;
-use TYPO3\CMS\Core\Site\SiteFinder;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Object\ObjectManager;
-
-/**
- * Hooks into the frontend request and use the ot_websites table to resolve the site configuration
- * (frontend only)
- *
- * @internal
- */
-class SiteMatcher extends \TYPO3\CMS\Core\Routing\SiteMatcher
-{
-    public function __construct($finder = null)
-    {
-    }
-
-    /**
-     * Override the default Typo3 \TYPO3\CMS\Core\Routing\SiteMatcher
-     *
-     * @param ServerRequestInterface $request
-     * @return \TYPO3\CMS\Core\Routing\RouteResultInterface
-     * @throws \Opentalent\OtCore\Exception\NoSuchWebsiteException
-     */
-    public function matchRequest(ServerRequestInterface $request): \TYPO3\CMS\Core\Routing\RouteResultInterface
-    {
-        $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
-
-        $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
-
-        $otWebsite = $otWebsiteRepository->matchUriToWebsite($request->getUri(), $devMode);
-        $site = $otWebsiteRepository->generateWebsiteConfiguration($otWebsite);
-
-        if ($devMode) {
-            preg_match("/\w+\/(.*)/", $request->getUri()->getPath(), $m);
-            $tail = $m[1] ?? "";
-        } else {
-            $tail = rtrim($request->getUri()->getPath(), '/');
-        }
-
-        $language = $site->getDefaultLanguage();
-        return new SiteRouteResult($request->getUri(), $site, $language, $tail);
-    }
-}

+ 1 - 10
ot_optimizer/Configuration/RequestMiddlewares.php

@@ -5,17 +5,8 @@
  */
 return [
     'frontend' => [
-        'typo3/cms-frontend/site' => [
-            'target' => Opentalent\OtOptimizer\XClass\Frontend\Middleware\OtSiteResolver::class,
-            'before' => [
-                'typo3/cms-adminpanel/initiator'
-            ],
-            'after' => [
-                'typo3/cms-adminpanel/sql-logging'
-            ],
-        ],
         'typo3/cms-frontend/page-resolver' => [
-            'target' => Opentalent\OtOptimizer\XClass\Frontend\Middleware\OtPageResolver::class,
+            'target' => Opentalent\OtOptimizer\Middleware\Frontend\OtPageResolver::class,
             'before' => [
                 'typo3/frontendediting/initiator'
             ],

+ 36 - 0
ot_templating/Classes/ViewHelpers/Request/GetPageViewHelper.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace Opentalent\OtTemplating\ViewHelpers\Request;
+
+use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
+
+/**
+ *   Returns the current Typo3 page (FE only)
+ *
+ *     {namespace ot=Opentalent\OtTemplating\ViewHelpers}
+ *
+ *     {ot:request.getPage()}
+ *
+ * @package Opentalent\OtTemplating\ViewHelpers
+ */
+class GetPageViewHelper extends OtAbstractViewHelper {
+
+    /**
+     * -- This method is expected by Fluid --
+     * Renders the content as html
+     *
+     * @param array $arguments
+     * @param Closure $renderChildrenClosure
+     * @param RenderingContextInterface $renderingContext
+     * @return string|null
+     */
+    public static function renderStatic(
+        array $arguments,
+        Closure $renderChildrenClosure,
+        RenderingContextInterface $renderingContext
+    ) {
+        return $GLOBALS['TSFE']->getAttribute('page');
+    }
+}

+ 36 - 0
ot_templating/Classes/ViewHelpers/Request/GetWebsiteViewHelper.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace Opentalent\OtTemplating\ViewHelpers\Request;
+
+use Closure;
+use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
+
+/**
+ *   Returns the current Typo3 OtWebsite (FE only)
+ *
+ *     {namespace ot=Opentalent\OtTemplating\ViewHelpers}
+ *
+ *     {ot:request.getWebsite()}
+ *
+ * @package Opentalent\OtTemplating\ViewHelpers
+ */
+class GetWebsiteViewHelper extends OtAbstractViewHelper {
+
+    /**
+     * -- This method is expected by Fluid --
+     * Renders the content as html
+     *
+     * @param array $arguments
+     * @param Closure $renderChildrenClosure
+     * @param RenderingContextInterface $renderingContext
+     * @return string|null
+     */
+    public static function renderStatic(
+        array $arguments,
+        Closure $renderChildrenClosure,
+        RenderingContextInterface $renderingContext
+    ) {
+        return $GLOBALS['TSFE']->getAttribute('ot_website');
+    }
+}

+ 15 - 0
ot_templating/Resources/Private/Language/locallang.xlf

@@ -277,6 +277,9 @@
 			<trans-unit id="two_cols_container">
 				<source>Container à deux colonnes</source>
 			</trans-unit>
+			<trans-unit id="flux.newContentWizard.ot_widgets">
+				<source>Contenus Opentalent</source>
+			</trans-unit>
 			<trans-unit id="available_themes">
 				<source>Thèmes disponibles</source>
 			</trans-unit>
@@ -352,6 +355,18 @@
 			<trans-unit id="missing_page">
 				<source>Page introuvable</source>
 			</trans-unit>
+			<trans-unit id="share-on">
+				<source>Pour partager cette page</source>
+			</trans-unit>
+			<trans-unit id="find-us-on">
+				<source>Retrouvez-nous sur</source>
+			</trans-unit>
+			<trans-unit id="share-bar">
+				<source>Boutons de partage</source>
+			</trans-unit>
+			<trans-unit id="share-bar-description">
+				<source>Boutons de partage de la page vers les réseaux sociaux</source>
+			</trans-unit>
 
 			<!-- Email template -->
 			<trans-unit id="hello">

+ 1 - 0
ot_templating/Resources/Private/Layouts/Classic/News.html

@@ -26,6 +26,7 @@
                         <f:translate key="go-back-to-news-list"/>
                     </f:link.page>
 
+                    <f:render partial="Classic/ShareBar"/>
                 </f:then>
                 <f:else>
                     <f:comment><!-- no news was required, show list --></f:comment>

+ 2 - 0
ot_templating/Resources/Private/Layouts/Modern/News.html

@@ -26,6 +26,8 @@
                                     <f:cObject typoscriptObjectPath="lib.tx_ottemplating.widgets.news_detail" />
 
                                     <f:link.page><f:translate key="go-back-to-news-list"/></f:link.page>
+
+                                    <f:render partial="Modern/ShareBar"/>
                                 </f:then>
                                 <f:else>
                                     <f:comment><!-- no news was required, show list --></f:comment>

+ 1 - 0
ot_templating/Resources/Private/Partials/Classic/EventsShow.html

@@ -53,4 +53,5 @@
         </f:then>
     </f:if>
 
+    <f:render partial="Classic/ShareBar"/>
 </div>

+ 25 - 0
ot_templating/Resources/Private/Partials/Classic/Footer.html

@@ -21,7 +21,32 @@
                 </v:menu>
             </f:then>
         </f:if>
+
+        <f:if condition="{settings.structureFacebook} != ''">
+            <li class="social-logo">
+                <a href="{ot:utilities.absoluteUrl(url: settings.structureFacebook)}" target="_blank">
+                    <i class="fab fa-facebook" style="color: #f2f2f2"></i>
+                </a>
+            </li>
+        </f:if>
+
+        <f:if condition="{settings.structureTwitter} != ''">
+            <li class="social-logo">
+                <a href="{ot:utilities.absoluteUrl(url: settings.structureTwitter)}" target="_blank">
+                    <i class="fab fa-twitter" style="color: #f2f2f2"></i>
+                </a>
+            </li>
+        </f:if>
+
+        <f:if condition="{settings.structureInstagram} != ''">
+            <li class="social-logo">
+                <a href="{ot:utilities.absoluteUrl(url: settings.structureInstagram)}" target="_blank">
+                    <i class="fab fa-instagram-square" style="color: #f2f2f2"></i>
+                </a>
+            </li>
+        </f:if>
     </ul>
+
     <div class="logo-ot">
         <a href="{settings.opentalentWebsite}" target="_blank" title="Opentalent">
             <f:image src="EXT:ot_templating/Resources/Public/media/logo-opentalent.png" height="40" />

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

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

+ 19 - 0
ot_templating/Resources/Private/Partials/Classic/ShareBar.html

@@ -0,0 +1,19 @@
+
+
+<div class="share-bar">
+  <h5><f:translate key="share-on"/>: </h5>
+
+  <a href="#"
+     onclick="
+      window.open(
+        'https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href),
+        'facebook-share-dialog',
+        'width=626,height=436');
+      return false;">
+    <i class="fab fa-facebook" style="color: #129af6"></i> Facebook
+  </a>
+
+  <a href="#">
+    <i class="fab fa-twitter" style="color: #1da1f2"></i> Twitter
+  </a>
+</div>

+ 0 - 37
ot_templating/Resources/Private/Partials/Classic/SocialBar.html

@@ -1,37 +0,0 @@
-{namespace ot=Opentalent\OtTemplating\ViewHelpers}
-
-
-
-<f:comment><!-- Affichage des réseaux sociaux si des urls sont définies --></f:comment>
-
-<div class="social-bar">
-  <f:if condition="{settings.structureFacebook} != ''">
-    <f:then>
-      <div class="social-logo">
-        <a href="{ot:utilities.absoluteUrl(url: settings.structureFacebook)}" target="_blank">
-          <i class="fab fa-facebook" style="color: #129af6"></i>
-        </a>
-      </div>
-    </f:then>
-  </f:if>
-
-  <f:if condition="{settings.structureTwitter} != ''">
-    <f:then>
-      <div class="social-logo">
-        <a href="{ot:utilities.absoluteUrl(url: settings.structureTwitter)}" target="_blank">
-          <i class="fab fa-twitter" style="color: #1da1f2"></i>
-        </a>
-      </div>
-    </f:then>
-  </f:if>
-
-  <f:if condition="{settings.structureInstagram} != ''">
-    <f:then>
-      <div class="social-logo">
-        <a href="{ot:utilities.absoluteUrl(url: settings.structureInstagram)}" target="_blank">
-          <i class="fab fa-instagram-square" style="color: #515BD4"></i>
-        </a>
-      </div>
-    </f:then>
-  </f:if>
-</div>

+ 0 - 2
ot_templating/Resources/Private/Partials/Classic/Topbar.html

@@ -15,8 +15,6 @@
 
     <v:render.uncache partial="Classic/UserToolbar" arguments="{_all}" />
 
-    <f:render partial="Classic/SocialBar" arguments="{_all}" />
-
     <f:comment><!-- Si un networkLogo est définit, affiche le logo du réseau --></f:comment>
     <f:if condition="{settings.networkLogo} != ''">
         <f:then>

+ 1 - 0
ot_templating/Resources/Private/Partials/Modern/EventsShow.html

@@ -53,4 +53,5 @@
         </f:then>
     </f:if>
 
+    <f:render partial="Modern/ShareBar"/>
 </div>

+ 69 - 35
ot_templating/Resources/Private/Partials/Modern/Footer.html

@@ -8,46 +8,80 @@
 <v:variable.set value="{ot:getPageUid(slug: '/footer')}" name="footerPageUid"/>
 
 <footer class="footer footer-topbar theme-bg">
-    <div class="copyright">
-        <div class="container">
-            <div class="row">
-                <div class="col-xl-6 col-md-6">
-                    <div class="footer-text">
-                        <p> &copy;<span id="copyright"> <script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script></span> - <a href="{ot:rootPage.getUri()}"> {settings.structureName} </a> - Tous droits réservés</p>
+    <div class="footer-line-1">
+        <div class="copyright">
+            <div class="container">
+                <div class="row">
+                    <div class="col-xl-6 col-md-6">
+                        <div class="footer-text">
+                            <p> &copy;<span id="copyright"> <script>document.getElementById('copyright').appendChild(document.createTextNode(new Date().getFullYear()))</script></span> - <a href="{ot:rootPage.getUri()}"> {settings.structureName} </a> - Tous droits réservés</p>
+                        </div>
                     </div>
-                </div>
 
-                <div class="col-xl-6 col-md-6">
-                    <div class="footer-social">
-                        <ul class="text-left text-md-right footer-menu">
-
-                            <li class="list-inline-item brand-free">
-                                <a href="#"
-                                   title="Opentalent"
-                                   class="reseau-opentalent"
-                                   data-toggle="modal"
-                                   data-target="#opentalentModal">
-                                    Opentalent
-                                </a>
-                            </li>
-
-                            <f:if condition="{footerPageUid} > 0">
-                                <v:menu as="footerMenu" pageUid="{ot:getPageUid(slug: '/footer')}">
-                                    <f:for each="{footerMenu}" as="footerMenuItem">
-                                        <li class="list-inline-item">
-                                            &nbsp;&nbsp;|&nbsp;&nbsp;
-                                            <f:link.page pageUid="{footerMenuItem.uid}"
-                                                         title="{footerMenuItem.linktext}">
-                                                {footerMenuItem.linktext}
-                                            </f:link.page>
-                                        </li>
-                                    </f:for>
-                                </v:menu>
-                            </f:if>
-                        </ul>
+                    <div class="col-xl-6 col-md-6">
+                        <div class="footer-social">
+                            <ul class="text-left text-md-right footer-menu">
+
+                                <li class="list-inline-item brand-free">
+                                    <a href="#"
+                                       title="Opentalent"
+                                       class="reseau-opentalent"
+                                       data-toggle="modal"
+                                       data-target="#opentalentModal">
+                                        Opentalent
+                                    </a>
+                                </li>
+
+                                <f:if condition="{footerPageUid} > 0">
+                                    <v:menu as="footerMenu" pageUid="{ot:getPageUid(slug: '/footer')}">
+                                        <f:for each="{footerMenu}" as="footerMenuItem">
+                                            <li class="list-inline-item">
+                                                &nbsp;&nbsp;|&nbsp;&nbsp;
+                                                <f:link.page pageUid="{footerMenuItem.uid}"
+                                                             title="{footerMenuItem.linktext}">
+                                                    {footerMenuItem.linktext}
+                                                </f:link.page>
+                                            </li>
+                                        </f:for>
+                                    </v:menu>
+                                </f:if>
+                            </ul>
+                        </div>
                     </div>
                 </div>
             </div>
         </div>
     </div>
+    <f:if condition="{settings.structureFacebook} != '' || {settings.structureTwitter} != '' || {settings.structureInstagram} != ''">
+        <div class="footer-line-2">
+            <ul>
+                <li>
+                    <f:translate key="find-us-on"/>:
+                </li>
+                <f:if condition="{settings.structureFacebook} != ''">
+                    <li class="social-logo">
+                        <a href="{ot:utilities.absoluteUrl(url: settings.structureFacebook)}" target="_blank">
+                            <i class="fa fa-facebook"></i> Facebook
+                        </a>
+                    </li>
+                </f:if>
+
+                <f:if condition="{settings.structureTwitter} != ''">
+                    <li class="social-logo">
+                        <a href="{ot:utilities.absoluteUrl(url: settings.structureTwitter)}" target="_blank">
+                            <i class="fa fa-twitter"></i> Twitter
+                        </a>
+                    </li>
+                </f:if>
+
+                <f:if condition="{settings.structureInstagram} != ''">
+                    <li class="social-logo">
+                        <a href="{ot:utilities.absoluteUrl(url: settings.structureInstagram)}" target="_blank">
+                            <i class="fa fa-instagram"></i> Instagram
+                        </a>
+                    </li>
+                </f:if>
+            </ul>
+        </div>
+    </f:if>
 </footer>

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

@@ -1,6 +1,5 @@
 {namespace ot=Opentalent\OtTemplating\ViewHelpers}
 
-<f:comment><!-- Render the topbar defined in partial/Topbar.html--></f:comment>
 <f:render partial="Modern/Assets" arguments="{_all}" />
 
 <f:comment><!--<f:render partial="Modern/Preloader" />--></f:comment>

+ 25 - 0
ot_templating/Resources/Private/Partials/Modern/ShareBar.html

@@ -0,0 +1,25 @@
+
+
+<div class="share-bar">
+  <h5><f:translate key="share-on"/>: </h5>
+
+  <a href="#"
+     onclick="
+      window.open(
+        'https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href),
+        'facebook-share-dialog',
+        'width=626,height=436');
+      return false;">
+    <i class="fa fa-facebook" style="color: #129af6"></i> Facebook
+  </a>
+
+  <a href="#"
+     onclick="
+      window.open(
+        'https://www.twitter.com/share?url='+encodeURIComponent(location.href),
+        'facebook-share-dialog',
+        'width=626,height=436');
+      return false;">
+    <i class="fa fa-twitter" style="color: #1da1f2"></i> Twitter
+  </a>
+</div>

+ 1 - 1
ot_templating/Resources/Private/Templates/Content/Carousel.html

@@ -17,7 +17,7 @@
                    description="{f:translate(key: 'insert_carousel')}"
                    extensionName="OtTemplating"
         >
-            <flux:form.option.group value="fce" />
+            <flux:form.option.group value="ot_widgets" />
             <flux:form.option.icon value="EXT:ot_templating/Resources/Public/Icons/opentalent-144x144.png" />
 
             <flux:field.input name="width" eval="trim" default="600" label="{f:translate(key: 'width_in_pixels')}"/>

+ 2 - 2
ot_templating/Resources/Private/Templates/Content/FCE50-50.html

@@ -3,7 +3,7 @@
 {namespace v=FluidTYPO3\Vhs\ViewHelpers}
 {namespace flux=FluidTYPO3\Flux\ViewHelpers}
 
-<f:layout name="CustomContent" />
+<f:layout name="{settings.template}/CustomContent" />
 
 <f:section name="Configuration">
     <flux:form id="FCE50-50"
@@ -11,7 +11,7 @@
                description="{f:translate(key: 'two_cols_container')}"
                extensionName="OtTemplating"
     >
-        <flux:form.option.group value="fce" />
+        <flux:form.option.group value="ot_widgets" />
         <flux:form.option.icon value="EXT:ot_templating/Resources/Public/Icons/opentalent-144x144.png" />
     </flux:form>
     <flux:grid>

+ 2 - 2
ot_templating/Resources/Private/Templates/Content/Faq.html

@@ -8,7 +8,7 @@
      xmlns:v="http://fedext.net/ns/vhs/ViewHelpers"
      xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">
 
-    <f:layout name="CustomContent"/>
+    <f:layout name="{settings.template}/CustomContent"/>
 
     <f:section name="Configuration">
         <flux:form id="Faq"
@@ -16,7 +16,7 @@
                    description="{f:translate(key: 'make_your_faq_section')}"
                    extensionName="OtTemplating"
         >
-            <flux:form.option.group value="fce" />
+            <flux:form.option.group value="ot_widgets" />
             <flux:form.option.icon value="EXT:ot_templating/Resources/Public/Icons/opentalent-144x144.png" />
 
             <flux:form.section name="faq">

+ 25 - 0
ot_templating/Resources/Private/Templates/Content/ShareBar.html

@@ -0,0 +1,25 @@
+<f:comment><!-- Widget flux: : Share Bar --></f:comment>
+
+{namespace v=FluidTYPO3\Vhs\ViewHelpers}
+{namespace flux=FluidTYPO3\Flux\ViewHelpers}
+
+<f:layout name="{settings.template}/CustomContent" />
+
+<f:section name="Configuration">
+  <flux:form id="ShareBar"
+             label="{f:translate(key: 'share-bar')}"
+             description="{f:translate(key: 'share-bar-description')}"
+             extensionName="OtTemplating"
+  >
+    <flux:form.option.group value="ot_widgets" />
+    <flux:form.option.icon value="EXT:ot_templating/Resources/Public/Icons/opentalent-144x144.png" />
+  </flux:form>
+</f:section>
+
+<f:section name="Preview">
+  <p>{f:translate(key: 'share-bar-description')}</p>
+</f:section>
+
+<f:section name="Main">
+  <f:render partial="{settings.template}/ShareBar"/>
+</f:section>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-blue.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-blue.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-green.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-green.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-grey.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-grey.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-blue.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-light-red.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-orange.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-orange.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-purple.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-purple.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-red.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/classic-red.css.map


+ 12 - 0
ot_templating/Resources/Public/assets/Classic/style/module/_footer.scss

@@ -43,6 +43,18 @@
   color: #a6a6a6;
 }
 
+footer .social-logo {
+  height: 26px;
+  width: 36px;
+  margin: 0 8px;
+}
+
+footer .social-logo a {
+  font-size: 24px;
+  padding: 0 12px;
+  margin: 0;
+}
+
 footer .logo-ot {
   margin-right: 20px
 }

+ 23 - 0
ot_templating/Resources/Public/assets/Classic/style/module/_share-bar.scss

@@ -0,0 +1,23 @@
+
+.share-bar {
+  width: 100%;
+  height: 36px;
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  align-items: center;
+  font-weight: 600;
+}
+
+.share-bar>* {
+  margin: 0 6px;
+}
+
+.share-bar h5 {
+  color: #666666;
+  font-weight: 600;
+}
+
+.share-bar a:hover {
+  text-decoration: none;
+}

+ 0 - 14
ot_templating/Resources/Public/assets/Classic/style/module/_social-bar.scss

@@ -1,14 +0,0 @@
-
-
-.social-bar {
-  @include flex;
-  flex-direction: row;
-  margin: 0 18px;
-}
-
-.social-logo {
-  height: 24px;
-  width: 24px;
-  font-size: 24px;
-  margin: 0 6px;
-}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/style.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
ot_templating/Resources/Public/assets/Classic/style/style.css.map


+ 1 - 2
ot_templating/Resources/Public/assets/Classic/style/style.scss

@@ -82,8 +82,8 @@ $warning-font-color: #ffffff !default;
 "module/_menu",
 "module/_content",
 "module/_footer",
-"module/_social-bar",
 "module/_user-toolbar",
+"module/_share-bar",
 "module/_breadcrumb",
 "module/_carousel",
 "module/_ot-box",
@@ -104,4 +104,3 @@ $warning-font-color: #ffffff !default;
 "module/_pagination",
 "module/_noscript",
 "_states";
-

+ 78 - 2
ot_templating/Resources/Public/assets/Modern/style/custom.css

@@ -111,7 +111,7 @@
         justify-content: flex-end;
     }
 
-    .social-bar {
+    .topbar .social-bar {
         display: flex;
         flex-direction: row;
         margin: 0 16px;
@@ -119,7 +119,7 @@
         position: relative;
     }
 
-    .social-logo {
+    .topbar .social-logo {
         height: 20px;
         width: 20px;
         font-size: 20px;
@@ -384,6 +384,39 @@
     padding: 12px;
 }
 
+/*------------------------
+    Social
+------------------------*/
+.share-bar {
+    width: 100%;
+    height: 36px;
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+    align-items: center;
+    font-weight: 600;
+}
+
+.share-bar>* {
+    margin: 0 6px;
+}
+
+.share-bar h5 {
+    color: #666666;
+    font-size: 16px;
+    font-weight: 600;
+}
+
+.share-bar a:hover {
+    text-decoration: none;
+}
+
+.share-bar a .fa {
+    font-size: 16px;
+    margin-right: 3px;
+}
+
+
 /*------------------------
     Pied de page
 ------------------------*/
@@ -584,6 +617,49 @@
         padding-top: 0 !important;
     }
 
+    .footer {
+        display: flex;
+        flex-direction: column;
+        padding-bottom: 10px;
+    }
+
+    .footer .footer-line-1 .copyright {
+        padding-bottom: 0 !important;
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+    }
+
+    .footer .footer-line-2 {
+        display: flex;
+        flex-direction: row;
+        justify-content: center;
+        height: 36px;
+        align-items: center;
+        color: #FFFFFF;
+        font-size: 14px;
+        padding-bottom: 10px;
+    }
+
+    .footer .footer-line-2 ul {
+        list-style: none;
+        display: flex;
+        flex-direction: row;
+    }
+
+    .footer .footer-line-2 ul .social-logo {
+        margin: 0 6px;
+        padding: 0 6px;
+    }
+
+    .footer .footer-line-2 ul .social-logo a {
+        color: #f2f2f2;
+    }
+
+    .footer .footer-line-2 ul .social-logo a * {
+        margin: 0 3px;
+    }
+
 /*------------------------
     Breadcrumb
 ------------------------*/

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است