7 Commity e9dd38c3a8 ... 6af420e9bb

Autor SHA1 Wiadomość Data
  Valentin 6af420e9bb début des corrections 2024, ajout d'un carousel dans le lecteur des projets et suppression des animations de l'index 11 miesięcy temu
  Valentin 16b7135b03 début corrections 2024, ajout d'un carousel dans les lecteurs de projets, suppression des animations de l'index 11 miesięcy temu
  Valentin 5d90d88ae5 add dossier pages 2 lat temu
  Valentin 0600ceb8dd changer themes dans les configs 2 lat temu
  Valentin 5cfb0cc87d changer perm du script avec git update-index 2 lat temu
  Valentin 42b4ad3438 fix perm fixperm 2 lat temu
  val 8343add2f7 fix fixperm 2 lat temu
25 zmienionych plików z 729 dodań i 1097 usunięć
  1. 0 80
      .htaccess
  2. 2 1
      fixperms.sh
  3. 1 1
      user/config/system.yaml
  4. 0 0
      user/pages/.gitkeep
  5. 450 450
      user/plugins/admin/themes/grav/js/vendor.min.js
  6. 5 5
      user/plugins/devtools/components/plugin/blank/CHANGELOG.md.twig
  7. 21 21
      user/plugins/devtools/components/plugin/blank/LICENSE.twig
  8. 5 5
      user/plugins/devtools/components/theme/inheritance/CHANGELOG.md.twig
  9. 21 21
      user/plugins/devtools/components/theme/inheritance/LICENSE.twig
  10. 9 9
      user/plugins/devtools/components/theme/inheritance/theme.yaml.twig
  11. 5 5
      user/plugins/devtools/components/theme/pure-blank/CHANGELOG.md.twig
  12. 21 21
      user/plugins/devtools/components/theme/pure-blank/LICENSE.twig
  13. 66 36
      user/themes/figureslibres-v2/css/theme.css
  14. 0 0
      user/themes/figureslibres-v2/css/theme.css.map
  15. 0 29
      user/themes/figureslibres-v2/js/libraries/blotter/blotter.min.js
  16. 0 50
      user/themes/figureslibres-v2/js/libraries/blotter/liquidDistortMaterial.js
  17. 37 246
      user/themes/figureslibres-v2/js/script.js
  18. 2 2
      user/themes/figureslibres-v2/scss/configuration/_variable.scss
  19. 53 70
      user/themes/figureslibres-v2/scss/style.scss
  20. 0 4
      user/themes/figureslibres-v2/templates/index.html.twig
  21. 6 4
      user/themes/figureslibres-v2/templates/partials/base.html.twig
  22. 12 0
      user/themes/figureslibres-v2/templates/partials/carousel.html.twig
  23. 0 24
      user/themes/figureslibres-v2/templates/partials/carrousel.html.twig
  24. 2 2
      user/themes/figureslibres-v2/templates/reader.html.twig
  25. 11 11
      user/themes/figureslibres-v2/templates/text-content.html.twig

+ 0 - 80
.htaccess

@@ -1,80 +0,0 @@
-<IfModule mod_rewrite.c>
-
-RewriteEngine On
-
-## Begin RewriteBase
-# If you are getting 500 or 404 errors on subpages, you may have to uncomment the RewriteBase entry
-# You should change the '/' to your appropriate subfolder. For example if you have
-# your Grav install at the root of your site '/' should work, else it might be something
-# along the lines of: RewriteBase /<your_sub_folder>
-##
-
-# RewriteBase /
-
-## End - RewriteBase
-
-## Begin - X-Forwarded-Proto
-# In some hosted or load balanced environments, SSL negotiation happens upstream.
-# In order for Grav to recognize the connection as secure, you need to uncomment
-# the following lines.
-#
-# RewriteCond %{HTTP:X-Forwarded-Proto} https
-# RewriteRule .* - [E=HTTPS:on]
-#
-## End - X-Forwarded-Proto
-
-## Begin - Exploits
-# If you experience problems on your site block out the operations listed below
-# This attempts to block the most common type of exploit `attempts` to Grav
-#
-# Block out any script trying to base64_encode data within the URL.
-RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
-# Block out any script that includes a <script> tag in URL.
-RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
-# Block out any script trying to set a PHP GLOBALS variable via URL.
-RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
-# Block out any script trying to modify a _REQUEST variable via URL.
-RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
-# Return 403 Forbidden header and show the content of the root homepage
-RewriteRule .* index.php [F]
-#
-## End - Exploits
-
-## Begin - Index
-# If the requested path and file is not /index.php and the request
-# has not already been internally rewritten to the index.php script
-RewriteCond %{REQUEST_URI} !^/index\.php
-# and the requested path and file doesn't directly match a physical file
-RewriteCond %{REQUEST_FILENAME} !-f
-# and the requested path and file doesn't directly match a physical folder
-RewriteCond %{REQUEST_FILENAME} !-d
-# internally rewrite the request to the index.php script
-RewriteRule .* index.php [L]
-## End - Index
-
-## Begin - Security
-# Block all direct access for these folders
-RewriteRule ^(\.git|cache|bin|logs|backup|webserver-configs|tests)/(.*) error [F]
-# Block access to specific file types for these system folders
-RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
-# Block access to specific file types for these user folders
-RewriteRule ^(user)/(.*)\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
-# Block all direct access to .md files:
-RewriteRule \.md$ error [F]
-# Block all direct access to files and folders beginning with a dot
-RewriteRule (^|/)\.(?!well-known) - [F]
-# Block access to specific files in the root folder
-RewriteRule ^(LICENSE\.txt|composer\.lock|composer\.json|\.htaccess)$ error [F]
-## End - Security
-
-</IfModule>
-
-# Begin - Prevent Browsing and Set Default Resources
-Options -Indexes
-DirectoryIndex index.php index.html index.htm
-# End - Prevent Browsing and Set Default Resources
-
-
-# Redirect http://figureslibres.kevintessier.net/ https://figureslibres.kevintessier.net/
-
-Redirect 301 /sitemap /sitemap.xml

+ 2 - 1
fixperms.sh

@@ -1,7 +1,8 @@
 #!/bin/sh
-chown -R 1000:www-data .
+chown -R webdev:www-data .
 find . -type f -exec chmod 664 {} \;
 find ./bin -type f -exec chmod 775 {} \;
 find . -type d -exec chmod 775 {} \;
 find . -type d -exec chmod +s {} \;
 chmod +x ./fixperms.sh
+#

+ 1 - 1
user/config/system.yaml

@@ -19,7 +19,7 @@ home:
   alias: /home
   hide_in_urls: false
 pages:
-  theme: figureslibres
+  theme: figureslibres-v2
   order:
     by: default
     dir: asc

+ 0 - 0
user/pages/.gitkeep


Plik diff jest za duży
+ 450 - 450
user/plugins/admin/themes/grav/js/vendor.min.js


+ 5 - 5
user/plugins/devtools/components/plugin/blank/CHANGELOG.md.twig

@@ -1,5 +1,5 @@
-# v0.1.0
-##  {{ "now"|date("m/d/Y") }}
-
-1. [](#new)
-    * ChangeLog started...
+# v0.1.0
+##  {{ "now"|date("m/d/Y") }}
+
+1. [](#new)
+    * ChangeLog started...

+ 21 - 21
user/plugins/devtools/components/plugin/blank/LICENSE.twig

@@ -1,21 +1,21 @@
-The MIT License (MIT)
-
-Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }}
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+The MIT License (MIT)
+
+Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }}
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 5 - 5
user/plugins/devtools/components/theme/inheritance/CHANGELOG.md.twig

@@ -1,5 +1,5 @@
-# v0.1.0
-##  {{ "now"|date("m/d/Y") }}
-
-1. [](#new)
-    * ChangeLog started...
+# v0.1.0
+##  {{ "now"|date("m/d/Y") }}
+
+1. [](#new)
+    * ChangeLog started...

+ 21 - 21
user/plugins/devtools/components/theme/inheritance/LICENSE.twig

@@ -1,21 +1,21 @@
-The MIT License (MIT)
-
-Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }}
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+The MIT License (MIT)
+
+Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }}
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 9 - 9
user/plugins/devtools/components/theme/inheritance/theme.yaml.twig

@@ -1,10 +1,10 @@
-streams:
- schemes:
-   theme:
-     type: ReadOnlyStream
-     prefixes:
-       '':
-         - 'user://themes/{{ component.name|hyphenize }}'
-         - 'user://themes/{{ component.extends }}'
-
+streams:
+ schemes:
+   theme:
+     type: ReadOnlyStream
+     prefixes:
+       '':
+         - 'user://themes/{{ component.name|hyphenize }}'
+         - 'user://themes/{{ component.extends }}'
+
 {{ component.config }}

+ 5 - 5
user/plugins/devtools/components/theme/pure-blank/CHANGELOG.md.twig

@@ -1,5 +1,5 @@
-# v0.1.0
-##  {{ "now"|date("m/d/Y") }}
-
-1. [](#new)
-    * ChangeLog started...
+# v0.1.0
+##  {{ "now"|date("m/d/Y") }}
+
+1. [](#new)
+    * ChangeLog started...

+ 21 - 21
user/plugins/devtools/components/theme/pure-blank/LICENSE.twig

@@ -1,21 +1,21 @@
-The MIT License (MIT)
-
-Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }}
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+The MIT License (MIT)
+
+Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }}
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 66 - 36
user/themes/figureslibres-v2/css/theme.css

@@ -145,7 +145,7 @@ a, a:active, a:focus, a:visited {
 .picto {
   display: block;
   cursor: pointer;
-  background-color: #0b1117;
+  background-color: #0e1229;
 }
 
 .picto-url {
@@ -177,7 +177,7 @@ em {
 
 body {
   overflow-x: hidden;
-  color: #0b1117;
+  color: #0e1229;
   background-color: #f5f5f5;
 }
 body header {
@@ -204,7 +204,7 @@ body header #nav-container #burger {
 }
 body header nav {
   position: absolute;
-  background-color: #0b1117;
+  background-color: #0e1229;
   top: -100vh;
   width: 100%;
   height: calc(100vh - 7vh);
@@ -240,7 +240,7 @@ body header nav ul li a {
   font-size: 2.2em;
 }
 body header nav ul li.selected a {
-  color: #0b1117;
+  color: #0e1229;
   background-color: #f5f5f5;
 }
 body header nav.mobile-nav-open {
@@ -298,7 +298,7 @@ body main .content .projet-card a {
   width: 100%;
 }
 body main .content .projet-card a figcaption {
-  color: #0b1117;
+  color: #0e1229;
   background-color: transparent;
   padding: 0;
   margin-top: 5px;
@@ -348,9 +348,6 @@ body main #index-content #main-p-index #figureslibres {
   font-family: Syne, sans-serif;
   font-weight: bold;
 }
-body main #index-content #main-p-index #figureslibres canvas {
-  transform: translateX(calc(-100% + 10px)) translateY(-2px);
-}
 body main #index-content #main-p-index #publique {
   font-family: PlayfairDisplay, serif;
   font-style: italic;
@@ -360,17 +357,11 @@ body main #index-content #main-p-index #sociale {
   font-weight: bold;
   font-style: italic;
 }
-body main #index-content #main-p-index #sociale canvas {
-  transform: translateX(calc(-100% + 15px)) translateY(0px);
-}
 body main #index-content #main-p-index #culturelle {
   font-family: Avara, serif;
   font-weight: bold;
   font-style: italic;
 }
-body main #index-content #main-p-index #culturelle canvas {
-  transform: translateX(calc(-100% + 15px)) translateY(2px);
-}
 body main #index-content #main-p-index #logicielslibres {
   font-family: Rumeur, sans-serif;
   font-weight: bold;
@@ -401,7 +392,7 @@ body main #index-content #extrait-projets > div div:last-of-type p {
   justify-content: center;
 }
 body main #index-content #extrait-projets > div div:last-of-type p span {
-  border-bottom: solid 1px #0b1117;
+  border-bottom: solid 1px #0e1229;
   padding-bottom: 1px;
 }
 body main #index-content #extrait-projets > div div:last-of-type p span #publique-link {
@@ -435,9 +426,6 @@ body main #index-content #second-p-index #commanditaires {
   font-family: Moche, sans-serif;
   font-weight: bold;
 }
-body main #index-content #second-p-index #commanditaires canvas {
-  transform: translateX(calc(-100% + 10px)) translateY(0px);
-}
 body main #index-content #second-p-index #projets {
   font-family: Redaction50, serif;
   font-weight: bold;
@@ -456,7 +444,8 @@ body main #index-content #commanditaires-grid img {
 }
 body main #index-content #arrow-container {
   margin-top: 30px;
-  transition: transform 0.8s ease-out;
+  margin-bottom: 0vh;
+  transition: transform 0.8s ease-out, margin-bottom 0.4s ease-out;
 }
 body main #index-content #arrow-container .picto {
   width: 45px;
@@ -469,18 +458,13 @@ body main #index-content .container {
   overflow-y: hidden;
   height: auto;
   max-height: 0vh;
-  margin-top: 0px;
+  margin-top: 0vh;
   opacity: 0;
   transition: opacity 0.4s ease-out, 0.7s 0.4s ease-out, max-height 1.2s ease-out, margin-top 1s ease-out;
 }
 body main #index-content a {
   text-decoration: none;
 }
-body main #index-content canvas {
-  position: absolute;
-  transform: translateX(calc(-100% + 15px)) translateY(-2px);
-  transition: width 0.4s ease-out, height 0.4s ease-out;
-}
 body main #projets-index {
   width: 100%;
 }
@@ -686,8 +670,8 @@ body main #reader hr {
   margin-bottom: 2vh;
   width: 66%;
   opacity: 0.5;
-  color: #0b1117;
-  background-color: #0b1117;
+  color: #0e1229;
+  background-color: #0e1229;
 }
 body main #reader #related-pages {
   margin-top: 5vh;
@@ -710,8 +694,50 @@ body main #reader #related-pages #related-grid {
 body main #reader #related-pages #related-grid .card-displayed {
   margin-top: 1.5vh;
 }
-body main #reader #carousel-container {
+body main #reader .swiper {
+  position: fixed;
+  top: 0;
+  left: 0;
+  height: 100vh;
+  width: 100vw;
+  background-color: rgba(255, 255, 255, 0.75);
+  backdrop-filter: blur(2px);
+  box-sizing: border-box;
+  z-index: 3;
   display: none;
+  opacity: 0;
+  transition: opacity 0.3s ease-out;
+}
+body main #reader .swiper .swiper-wrapper {
+  z-index: 9;
+  display: flex;
+  align-items: center;
+}
+body main #reader .swiper .swiper-wrapper .swiper-slide {
+  height: 100%;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+body main #reader .swiper .swiper-wrapper .swiper-slide img {
+  max-height: 100%;
+  max-width: 100%;
+  object-fit: cover;
+}
+body main #reader .swiper .swiper-button-next, body main #reader .swiper .swiper-button-prev {
+  color: #0e1229;
+  padding: 2rem;
+  bottom: 5vh;
+  top: unset;
+}
+body main #reader .swiper #close-carousel {
+  width: calc(25px - 5px);
+  height: calc(23px - 5px);
+  position: absolute;
+  top: 5vh;
+  right: 5vh;
+  z-index: 10;
 }
 body footer {
   display: none;
@@ -731,7 +757,7 @@ body footer p {
 }
 body footer p a {
   display: block;
-  background: #0b1117;
+  background: #0e1229;
   height: 100%;
   width: 100%;
   font-family: Syne, Sans-serif;
@@ -751,7 +777,7 @@ body footer p a {
     width: 100%;
     box-sizing: border-box;
     padding: 10px;
-    background: #0b1117;
+    background: #0e1229;
     color: #f5f5f5;
     font-size: 0.75em;
     border-radius: 0 0 10px 10px;
@@ -827,7 +853,7 @@ body footer p a {
     margin-bottom: 5vh;
   }
   body main #reader h2#main-project-title {
-    font-size: 3.8em;
+    font-size: 2.9em;
   }
   body main #reader #info-project {
     margin-top: -6vh;
@@ -844,7 +870,7 @@ body footer p a {
     width: auto;
     display: grid;
     grid-template-columns: 1fr 1fr;
-    grid-gap: 2% 4%;
+    grid-gap: 1em;
   }
   body main #reader #project-images-grid figure {
     margin-top: 0;
@@ -873,6 +899,10 @@ body footer p a {
     min-height: 80px !important;
     min-width: 15vw;
   }
+  body main #reader .swiper .swiper-button-next, body main #reader .swiper .swiper-button-prev {
+    bottom: unset;
+    top: var(--swiper-navigation-top-offset, 50%);
+  }
   body footer {
     display: flex;
     align-items: center;
@@ -882,7 +912,7 @@ body footer p a {
     height: 4vh;
     right: 3vw;
     border-radius: 20px 20px 0 0;
-    background-color: #0b1117;
+    background-color: #0e1229;
   }
   body footer p {
     height: auto;
@@ -915,7 +945,7 @@ body footer p a {
   }
   body header nav ul li {
     width: auto;
-    color: #0b1117;
+    color: #0e1229;
     height: 0.95em;
     z-index: 0;
   }
@@ -943,7 +973,7 @@ body footer p a {
     width: 100%;
     padding: 4px 12px;
     transform: translateX(-12px) translateY(calc(-100% - 2px + 4px));
-    background-color: #0b1117;
+    background-color: #0e1229;
     border-radius: 15px;
     z-index: -1;
     transition: opacity 0.4s ease-out;
@@ -1070,7 +1100,7 @@ body footer p a {
 }
 @media only screen and (min-width: 1500px) {
   body main #index-content #main-p-index p {
-    font-size: 3.8em;
+    font-size: 2.9em;
   }
   body main #index-content #arrow-container {
     margin-top: 7vh;

Plik diff jest za duży
+ 0 - 0
user/themes/figureslibres-v2/css/theme.css.map


Plik diff jest za duży
+ 0 - 29
user/themes/figureslibres-v2/js/libraries/blotter/blotter.min.js


+ 0 - 50
user/themes/figureslibres-v2/js/libraries/blotter/liquidDistortMaterial.js

@@ -1,50 +0,0 @@
-(function(Blotter) {
-
-  Blotter.LiquidDistortMaterial = function() {
-    Blotter.Material.apply(this, arguments);
-  };
-
-  Blotter.LiquidDistortMaterial.prototype = Object.create(Blotter.Material.prototype);
-
-  Blotter._extendWithGettersSetters(Blotter.LiquidDistortMaterial.prototype, (function () {
-
-    function _mainImageSrc () {
-      var mainImageSrc = [
-        Blotter.Assets.Shaders.Noise3D,
-
-        "void mainImage( out vec4 mainImage, in vec2 fragCoord )",
-        "{",
-        "    // Setup ========================================================================",
-
-        "    vec2 uv = fragCoord.xy / uResolution.xy;",
-        "    float z = uSeed + uGlobalTime * uSpeed;",
-
-        "    uv += snoise(vec3(uv, z)) * uVolatility;",
-
-        "    mainImage = textTexture(uv);",
-
-        "}"
-      ].join("\n");
-
-      return mainImageSrc;
-    }
-
-    return {
-
-      constructor : Blotter.LiquidDistortMaterial,
-
-      init : function () {
-        this.mainImage = _mainImageSrc();
-        this.uniforms = {
-          uSpeed : { type : "1f", value : 1.0 },
-          uVolatility : { type : "1f", value : 0.15 },
-          uSeed : { type : "1f", value : 0.1 }
-        };
-      }
-    };
-
-  })());
-
-})(
-  this.Blotter
-);

+ 37 - 246
user/themes/figureslibres-v2/js/script.js

@@ -6,7 +6,7 @@ $(document).ready( () => {
   hoverDesktopNavItems()
   if (currentPage.text().trim() == 'Accueil') {
     hideFooter()
-    animateText()
+    toggleIndexContent()
   } else if (currentPage.text().trim() == 'Projets' && $('main').children(":first").attr('id') != 'reader') {
     hideFooter()
     loadProjetIndex()
@@ -21,7 +21,6 @@ $(document).ready( () => {
 let isMobileNavOpen = false,
     isDesktopDevice = false,
     currentPage,
-    indexIsReady = false,
     filterObj = {
       publiqueCardsDisplayed : true,
       socialeCardsDisplayed : true,
@@ -66,8 +65,7 @@ function initBarba() {
     displayPictograms()
     $('html, body').scrollTop(0)
     if ($(data.next.container).attr('id') == 'index-content') {
-      animateText()
-      indexIsReady = false
+      toggleIndexContent()
     } else if ($(data.next.container).attr('id') == 'projets-index') {
       loadProjetIndex()
       filterWhenEntering()
@@ -281,8 +279,8 @@ function toggleIndexContent(closeEverything) {
     }
   })
 
-  $('#index-content canvas').click( function(event) {
-    target = $(event.target).parent().attr('id')
+  $('#index-content .animateText').click( function(event) {
+    target = $(event.target).attr('id')
     if (target == 'publique' || target == 'sociale' || target == 'culturelle') {
       toggleExtrait(target)
       return false
@@ -416,195 +414,6 @@ function hideContent(content) {
   }, 1200)
 }
 
-// index animation
-function animateText() {
-  waitForWebfonts(['Moche'], () => { // idk why listing only one font makes it work....
-    // For each item
-    $(".animateText").each(function(i, e) {
-      $(e).contents().wrap('<span></span>')
-      $('#main-p-index span').css('color', 'transparent')
-      $('#second-p-index span').css('color', 'transparent')
-      // Initialize a new LiquidText instance
-      var liquidText = new LiquidText(
-        e, // Element
-        0.0, // Liquid Volatility
-        0.5 // Speed
-      ).start()
-    })
-    toggleIndexContent()
-    displayIndexWhenReady()
-  })
-}
-
-let globalMaterial = new Blotter.LiquidDistortMaterial()
-
-let globalBlotter = new Blotter(globalMaterial, {
-  texts: [],
-  autostart: false,
-  autobuild: false
-})
-
-class LiquidText {
-  constructor(element, volatility, speed) {
-    this.element = element
-    this.text = element.text
-    this.fontSize = parseInt($(element).css('font-size'))
-    this.fontStack = $(element).css('font-family')
-    this.fontWeight = $(element).css('font-weight')
-    this.fontColor = $(element).css('color')
-    this.material = globalMaterial
-    this.hoverDuration = 0.35
-    this.hoverEase = Linear.easeIn
-    this.liquidVolatility = volatility
-    this.liquidSpeed = speed
-    this.scope = null
-    this.blotter = globalBlotter
-    this.blotterText = null
-    this.onResize = this.onResize.bind(this)
-    this.seed = 0.1
-
-    window.addEventListener('resize', this.onResize)
-
-    this.initialize()
-
-  }
-  initialize() {
-    let blotter = this.blotter
-    let text = new Blotter.Text(this.text, {
-      family: this.fontStack,
-      size: this.fontSize,
-      fill: this.fontColor,
-      weight: this.fontWeight,
-      paddingLeft: 15,
-      paddingRight: 15
-    })
-    this.blotterText = text
-    this.material.uniforms.uSpeed.value = this.liquidSpeed
-    this.material.uniforms.uVolatility.value = this.liquidVolatility
-    blotter.addText(text)
-
-    blotter.needsUpdate = true
-
-    var scope = blotter.forText(text)
-
-    this.scope = scope
-
-    scope.appendTo(this.element)
-
-    this.material.needsUpdate = true
-    gsap.fromTo(this.material.uniforms.uVolatility, this.hoverDuration, {
-      value: 0,
-      ease: this.hoverEase
-    }, {
-      value: this.liquidVolatility,
-      ease: this.hoverEase
-    })
-
-    this.element.onmouseenter = (event) => {
-      this.scope.material.needsUpdate = true
-      gsap.fromTo(this.scope.material.uniforms.uVolatility, this.hoverDuration, {
-        value: 0,
-        ease: this.hoverEase
-      }, {
-        value: this.liquidVolatility + 0.04,
-        ease: this.hoverEase
-      })
-    }
-
-    this.element.onmouseleave = (event) => {
-      gsap.fromTo(this.scope.material.uniforms.uVolatility, this.hoverDuration, {
-        value: this.scope.material.uniforms.uVolatility.value,
-        ease: this.hoverEase
-      }, {
-        value: this.liquidVolatility,
-        ease: this.hoverEase,
-        onComplete: () => {
-          this.scope.material.needsUpdate = true
-        }
-      })
-    }
-  }
-  stop() {
-    this.blotter.stop()
-  }
-  start() {
-    this.blotter.start()
-  }
-  onResize() {
-    let text = this.blotterText
-    let time = 100
-    let timer
-    if(timer) clearTimeout(timer)
-    timer = setTimeout(() => {
-      text.properties.size = parseInt($(this.element).css('font-size'))
-      text.needsUpdate = true
-    }, time, event)
-  }
-}
-
-function displayIndexWhenReady() {
-  globalBlotter.on('update', () => {
-    if (!indexIsReady) {
-      indexIsReady = true
-      $('#loader-index').fadeOut(1400)
-    }
-  })
-}
-
-function waitForWebfonts(fonts, callback) {
-  var loadedFonts = 0
-  for (var i = 0, l = fonts.length; i < l; ++i) {
-    ((font) => {
-      var node = document.createElement('span')
-      // Characters that vary significantly among different fonts
-      node.innerHTML = 'giItT1WQy@!-/#'
-      // Visible - so we can measure it - but not on the screen
-      node.style.position = 'absolute'
-      node.style.left = '-10000px'
-      node.style.top = '-10000px'
-      // Large font size makes even subtle changes obvious
-      node.style.fontSize = '300px'
-      // Reset any font properties
-      node.style.fontFamily = 'sans-serif'
-      node.style.fontVariant = 'normal'
-      node.style.fontStyle = 'normal'
-      node.style.fontWeight = 'normal'
-      node.style.letterSpacing = '0'
-      document.body.appendChild(node)
-
-      // Remember width with no applied web font
-      var width = node.offsetWidth
-
-      node.style.fontFamily = font + ', sans-serif'
-
-      var interval
-
-      function checkFont() {
-        // Compare current width with original width
-        if (node && node.offsetWidth != width) {
-          ++loadedFonts
-          node.parentNode.removeChild(node)
-          node = null
-        }
-
-        // If all fonts have been loaded
-        if (loadedFonts >= fonts.length) {
-          if (interval) {
-            clearInterval(interval)
-          }
-          if (loadedFonts == fonts.length) {
-            callback()
-            return true
-          }
-        }
-      }
-
-      if (!checkFont()) {
-        interval = setInterval(checkFont, 50)
-      }
-    })(fonts[i])
-  }
-}
 
 // display project grid
 function toggleCategory(category) {
@@ -756,12 +565,43 @@ function filterWhenEntering() {
 
 // display reader
 function displayReader() {
-  $('.owl-carousel').owlCarousel()
-  // initCarrousel()
+  const swiper = new Swiper('.swiper', {
+    // Optional parameters
+    loop: true,
+    // Navigation arrows
+    navigation: {
+      nextEl: '.swiper-button-next',
+      prevEl: '.swiper-button-prev',
+    },
+  
+  });
+  $('#cover-image img, .project-image').click( function(event) {
+    const totalImg = $('img')
+    let indexImg = 0
+    for (let img of totalImg) {
+      if (event.target === img) { break }
+      indexImg++
+    }
+    swiper.slideToLoop(indexImg - 1)
+    $('body').css('overflow-y', 'hidden');
+    swiper.el.style.display = "block";
+    setTimeout(() => {
+      swiper.el.style.opacity = "1";
+    }, 10);
+  })
+  $('#close-carousel').click( () => {
+    $('body').css('overflow-y', 'auto');
+    swiper.el.style.opacity = "0";
+    setTimeout(() => {
+      swiper.el.style.display = "none";
+    }, 300);
+  })
   $('header').fadeOut()
   projectTitleIsScrolling = false
   checkTitleAutoScroll()
 
+
+
   let isProjectHeaderDisplayed = false
 
   $(window).scroll( () => {
@@ -822,55 +662,6 @@ function checkTitleAutoScroll() {
   }
 }
 
-// function initCarrousel() {
-//   let isCarrouselOpen = false, currentImg
-//   $('#reader img').each((i, el) => {
-//     $(el).on('click', () => {
-//       if (!isCarrouselOpen) { displayCarrousel(el) }
-//     })
-//   })
-//   $('#bg-carrousel').on('click', () => {
-//     hideCarrousel()
-//   })
-
-//   function displayCarrousel(img) {
-//     // if ($(img).attr('src') == $('#cover-image img').attr('src')) {
-//     //   $('#arrow-left .picto').addClass('disabled')
-//     // } else {
-//     //   $('#arrow-left .picto').removeClass('disabled')
-//     // }
-
-//     // if ($(img).attr('src') == $('#reader img').last().attr('src')) {
-//     //   $('#arrow-right .picto').addClass('disabled')
-//     // } else {
-//     //   $('#arrow-right .picto').removeClass('disabled')
-//     // }
-
-//     $('#reader #carrousel figure img').attr('src', $(img).attr('src'))
-
-//     currentImg = $(img)
-
-//     $('#arrow-left').on('click', () => {
-//       $('#reader #carrousel figure img').attr('src', $(currentImg).parent().prev().children().first().attr('src'))
-//       currentImg = $(currentImg).parent().prev().children().first()
-//     })
-
-//     $('#arrow-right').on('click', () => {
-//       $('#reader #carrousel figure img').attr('src', $(currentImg).parent().next().children().first().attr('src'))
-//       currentImg = $(currentImg).parent().next().children().first()
-//     })
-    
-//     $('#carrousel').css('display', 'block')
-//     isCarrouselOpen = true
-//   }
-  
-//   function hideCarrousel() {
-//     $('#carrousel').css('display', 'none')
-//     isCarrouselOpen = false
-//   }
-// }
-
-
 // show and hide footer
 function displayFooter() {
   $('footer').fadeIn()

+ 2 - 2
user/themes/figureslibres-v2/scss/configuration/_variable.scss

@@ -45,7 +45,7 @@
   $titleFontSizeMobile: 1.8em;
   $bigFontSizeMobile: 2.2em;
 // typography - sizes desktop
-  $bigFontSizeDesktop: 3.8em;
+  $bigFontSizeDesktop: 2.9em;
 // typography - pictograms
   $pictoInlineWidth: 12px;
   $pictoInlineHeight: 10px;
@@ -57,7 +57,7 @@
   $pictoExtraLargeHeight: 54px;
 
 // colors - theme colors
-  $mainColor: #0b1117;
+  $mainColor: #0e1229;
   $mainColorSoft: #1f2429;
   $bgColor: #f5f5f5;
 // colors - gradient

+ 53 - 70
user/themes/figureslibres-v2/scss/style.scss

@@ -193,24 +193,15 @@
           }
           #figureslibres {
             @include figures-libres-font;
-            canvas {
-              transform: translateX(calc(-100% + 10px)) translateY(-2px);
-            }
           }
           #publique {
             @include publique-font;
           }
           #sociale {
             @include sociale-font;
-            canvas {
-              transform: translateX(calc(-100% + 15px)) translateY(0px);
-            }
           }
           #culturelle {
             @include culturelle-font;
-            canvas {
-              transform: translateX(calc(-100% + 15px)) translateY(2px);
-            }
           }
           #logicielslibres {
             @include logiciels-libres-font;
@@ -274,9 +265,6 @@
           }
           #commanditaires {
             @include commanditaires-font;
-            canvas {
-              transform: translateX(calc(-100% + 10px)) translateY(0px);
-            }
           }
           #projets {
             @include projets-font;
@@ -296,7 +284,8 @@
         }
         #arrow-container {
           margin-top: $sectionSpacing;
-          @include transition-ease-out(transform 0.8s);
+          margin-bottom: 0vh;
+          @include transition-ease-out(transform 0.8s, margin-bottom 0.4s);
           .picto {
             width: $pictoLargeWidth;
             height: $pictoLargeHeight;
@@ -309,18 +298,13 @@
           overflow-y: hidden;
           height: auto;
           max-height: 0vh;
-          margin-top: 0px;
+          margin-top: 0vh;
           opacity: 0;
           @include transition-ease-out(opacity, 0.7s, max-height 1.2s, margin-top 1s);
         }
         a {
           text-decoration: none;
         }
-        canvas {
-          position: absolute;
-          transform: translateX(calc(-100% + 15px)) translateY(-2px);
-          @include transition-ease-out(width, height);
-        }
       }
       #projets-index {
         width: 100%;
@@ -549,58 +533,51 @@
             }
           }
         }
-        #carousel-container {
+        .swiper {
+          position: fixed;
+          top: 0;
+          left: 0;
+          height: 100vh;
+          width: 100vw;
+          background-color: rgba(255, 255, 255, 0.75);
+          backdrop-filter: blur(2px);
+          box-sizing: border-box;
+          z-index: 3;
           display: none;
+          opacity: 0;
+          transition: opacity 0.3s ease-out;
+          .swiper-wrapper {
+            z-index: 9;
+            display: flex;
+            align-items: center;
+            .swiper-slide {
+              height: 100%;
+              width: 100%;
+              display: flex;
+              align-items: center;
+              justify-content: center;
+              img {
+                max-height: 100%;
+                max-width: 100%;
+                object-fit: cover;
+              }
+            }
+          }
+          .swiper-button-next, .swiper-button-prev {
+            color: $mainColor;
+            padding: 2rem;
+            bottom: 5vh;
+            top: unset;
+          }
+          #close-carousel {
+            width: calc(#{$pictoSmallWidth} - 5px);
+            height: calc(#{$pictoSmallHeight} - 5px);
+            position: absolute;
+            top: 5vh;
+            right: 5vh;
+            z-index: 10;
+          }
         }
-        // #carrousel {
-        //   display: none;
-        //   #bg-carrousel {
-        //     position: fixed;
-        //     top: 0;
-        //     left: 0;
-        //     width: 100vw;
-        //     height: 100vh;
-        //     background-color: rgba(0, 0, 0, $transparency);
-        //     z-index: 3;
-        //     backdrop-filter: blur(2px);
-        //     cursor: pointer;
-        //   }
-        //   #slider {
-        //     position: fixed;
-        //     top: 25vh;
-        //     left: 0;
-        //     width: 100%;
-        //     height: 50vh;
-        //     background-color: $bgColor;
-        //     z-index: 4;
-        //     display: flex;
-        //     flex-direction: row;
-        //     justify-content: space-between;
-        //     div {
-        //       width: 15vw;
-        //       height: 100%;
-        //       display: flex;
-        //       justify-content: center;
-        //       align-items: center;
-        //       .picto {
-        //         width: $pictoSmallWidth;
-        //         height: $pictoSmallHeight;
-        //         cursor: pointer;
-        //       }
-        //       .disabled {
-        //         opacity: 0.5;
-        //         cursor: initial;
-        //       }
-        //     }
-        //     figure {
-        //       width: 100%;
-        //       img {
-        //         padding: 2vh 0 2vh 0;
-        //         object-fit: contain;
-        //       }
-        //     }
-        //   }
-        // }
       }
     }
     footer {
@@ -746,7 +723,7 @@
             width: auto;
             display: grid;
             grid-template-columns: 1fr 1fr;
-            grid-gap: 2% 4%;
+            grid-gap: 1em;
             figure {
               margin-top: 0;
               width: 100%;
@@ -775,6 +752,12 @@
               }
             }
           }
+          .swiper {
+            .swiper-button-next, .swiper-button-prev {
+              bottom: unset;
+              top: var(--swiper-navigation-top-offset,50%);
+            }
+          }
         }
       }
       footer {

+ 0 - 4
user/themes/figureslibres-v2/templates/index.html.twig

@@ -3,10 +3,6 @@
 {% block content %}
     <div class="content" id="index-content" data-barba="container" data-barba-namespace="index">
 
-      <div id="loader-index">
-        <img src="{{ url('theme://images/loader/rolling.svg') }}" alt="loading animation" />
-      </div>
-
       <div id="main-p-index">
         {{ page.content|raw }}
       </div>

+ 6 - 4
user/themes/figureslibres-v2/templates/partials/base.html.twig

@@ -16,17 +16,19 @@
 {% block stylesheets %}
     {% do assets.addCss('theme://css/theme.css', 95) %}
     {% do assets.addCss('theme://css/owl.carousel.min.css', 95) %}
+    <link
+        rel="stylesheet"
+        href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"
+    />
 {% endblock %}
 
 {% block javascripts %}
     {% do assets.addJs('jquery', 100) %}
     <script src="https://unpkg.com/@barba/core"></script>
-    <script src="https://unpkg.com/animate-css-grid@latest"></script>
     {% do assets.addJs('theme://js/libraries/lazy/jquery.lazy.min.js', 99) %}
-    {% do assets.addJs('theme://js/libraries/blotter/blotter.min.js', 98) %}
-    {% do assets.addJs('theme://js/libraries/blotter/liquidDistortMaterial.js', 97) %}
+    <script src="https://unpkg.com/animate-css-grid@1.4.3"></script>
     {% do assets.addJs('theme://js/libraries/gsap/gsap.min.js', 96) %}
-    {% do assets.addJs('theme://js/libraries/owl.carousel.min.js', 94) %}
+    <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
 {% endblock %}
 
 {% block assets deferred %}

+ 12 - 0
user/themes/figureslibres-v2/templates/partials/carousel.html.twig

@@ -0,0 +1,12 @@
+<div class="swiper">
+    <div class="swiper-wrapper">
+        {% for image in page.media.images %}
+            <div class="swiper-slide">
+                <img class="lazy loader"  src="{{ url('theme://images/loader/rolling.svg') }}" data-src="{{ image.url }}" alt="{{ page.title }}" />
+            </div>
+        {% endfor %}
+    </div>
+    <div class="swiper-button-prev"></div>
+    <div class="swiper-button-next"></div>
+    <div id="close-carousel" class="picto" data-src="{{ url('theme://images/pictos/cross.svg') }}" aria-hidden="true"></div>
+</div>

+ 0 - 24
user/themes/figureslibres-v2/templates/partials/carrousel.html.twig

@@ -1,24 +0,0 @@
-<div id="carousel-container">
-    <div class="owl-carousel owl-theme">
-        {# <div id="bg-carrousel">
-        </div>
-        <div id="slider">
-            <div id="arrow-left">
-                <div class="picto" data-src="{{ url('theme://images/pictos/arrow-left.svg') }}" aria-hidden="true"></div>
-            </div>
-            
-            <figure>
-
-                <img alt="{{ page.title }}" class="project-image">
-            </figure>
-
-            <div id="arrow-right">
-                <div class="picto" data-src="{{ url('theme://images/pictos/arrow-right.svg') }}" aria-hidden="true"></div>
-            </div>
-        </div> #}
-
-        {% for image in page.media.images %}
-            <img src="{{ url('theme://images/loader/rolling.svg') }}" data-src="{{ image.url }}" alt="{{ page.title }}" class="lazy loader project-image">
-        {% endfor %}
-    </div>
-</div>

+ 2 - 2
user/themes/figureslibres-v2/templates/reader.html.twig

@@ -54,8 +54,8 @@
         {% block related_pages %}
           {% include 'partials/relatedpages.html.twig' %}
         {% endblock %}
-        {% block carrousel %}
-          {% include 'partials/carrousel.html.twig' %}
+        {% block carousel %}
+          {% include 'partials/carousel.html.twig' %}
         {% endblock %}
     </div>
 {% endblock %}

+ 11 - 11
user/themes/figureslibres-v2/templates/text-content.html.twig

@@ -1,11 +1,11 @@
-{% extends 'partials/base.html.twig' %}
-
-{% block content %}
-  <div class="content" id="text-content" data-barba="container" data-barba-namespace="text-content">
-    {% for p in page.children.order('date', 'asc') %}
-      <div class="text-item">
-        {{ p.content }}
-      </div>
-    {% endfor %}
-  </div>
-{% endblock %}
+{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+  <div class="content" id="text-content" data-barba="container" data-barba-namespace="text-content">
+    {% for p in page.children.order('date', 'asc') %}
+      <div class="text-item">
+        {{ p.content }}
+      </div>
+    {% endfor %}
+  </div>
+{% endblock %}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików