Skip to content
Snippets Groups Projects
Commit fb1ea460 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Portage du site sous Laravel terminé.

parent 5eb43bdb
Branches
No related tags found
1 merge request!1Feature/12 recreation avec laravel
This commit is part of merge request !1. Comments created here will be created in the context of that merge request.
......@@ -17,6 +17,10 @@
'name' => env('APP_NAME', 'Laravel'),
// MetaColor
'meta_color' => env('META_COLOR', 'FFFFFF'),
/*
|--------------------------------------------------------------------------
| Application Environment
......
This diff is collapsed.
......@@ -13,11 +13,15 @@
"autoprefixer": "^10.4.7",
"axios": "^0.25",
"laravel-mix": "^6.0.49",
"laravel-mix-purgecss": "^6.0.0",
"lodash": "^4.17.19",
"postcss": "^8.4.14",
"resolve-url-loader": "^5.0.0",
"sass": "^1.53.0",
"sass-loader": "^12.1.0",
"tailwindcss": "^3.1.4"
},
"dependencies": {
"laravel-mix-copy-watched": "^2.3.1"
}
}
......@@ -24,7 +24,7 @@ h1, h2, h3, h4, h5, h6{
}
/* Scrollbar */
::-webkit-scrollbar {
/*::-webkit-scrollbar {
width: 5px;
height: 7px;
}
......@@ -44,7 +44,7 @@ h1, h2, h3, h4, h5, h6{
background: transparent;
border: 0 none #ffffff;
border-radius: 50px;
}
}*/
/* General */
.mainColor-bg{
......
<!-- Navbar -->
<div id="desktopNavbar" class="navbar">
<!-- Cette partie est résrvée à l'affichage du profil utilisateur -->
<div class="upperPart">
<nav class="container">
<a class="nav-link" href="#">Se connecter</a>
</nav>
</div>
<!-- Cette partie est résrvée à l'affichage des liens du site -->
<div class="lowerPart">
<div class="container">
<button id="mobileNavButton" type="button">
<img src="{{ asset('/images/navbar/hamburger-icon.png') }}" alt="Menu"/>
</button>
<div class="siteLogo">
<a href="{{ url('/') }}">
<img src="{{ asset('/images/logo/large-blanc.svg') }}" alt="Logo">
</a>
</div>
<div class="desktopNavLinksContainer">
<ul>
<li navLinkWithIcon="menu-buy">
<a href="https://live.mc.sl-projects.com/" class="nav-link" target="_blank">
<i class="nav-icon">
<img src="{{ asset('/images/navbar/menu-buy.png') }}" alt="Join icon">
</i>
Carte du monde
</a>
</li>
<li navLinkWithIcon="menu-comm">
<a href="https://discord.gg/9PYvGFDmDt" class="nav-link" target="_blank">
<i class="nav-icon">
<img src="{{ asset('/images/navbar/menu-comm.svg') }}" alt="Community icon">
</i>
Communauté
</a>
</li>
<li navLinkWithIcon="menu-store">
<a href="{{ url('/') }}/shop" class="nav-link">
<i class="nav-icon">
<img src="{{ asset('/images/navbar/menu-store.svg') }}" alt="Community icon">
</i>
Liste des magasins
</a>
</li>
<li navLinkWithIcon="menu-support">
<a href="{{ url('/') }}/staff" class="nav-link">
<i class="nav-icon">
<img src="{{ asset('/images/navbar/menu-support.svg') }}" alt="Staff icon">
</i>
Obtenir de l'aide
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Navbar -->
@push('scripts')
<script type="text/javascript">
// Ne doit s'exécuter que sur les pc
if(window.matchMedia("(min-width: 1024px)").matches){
// Ici on va ajouter les évènements d'entrée et sortie de la souris sur les liens de la navbar
const navLinksWithIcon = document.querySelectorAll('[navLinkWithIcon]');
// On les parcours pour ajouter les évènements
navLinksWithIcon.forEach(function(navLinkWithIcon) {
navLinkWithIcon.addEventListener('mouseenter', function() {
navLinkWithIcon.getElementsByTagName('img')[0].src =
"{{ url('/') }}/images/navbar/" + navLinkWithIcon.getAttribute('navLinkWithIcon') + ".gif";
});
navLinkWithIcon.addEventListener('mouseleave', function() {
navLinkWithIcon.getElementsByTagName('img')[0].src =
"{{ url('/') }}/images/navbar/" + navLinkWithIcon.getAttribute('navLinkWithIcon') + "--reversed.gif";
});
});
}
</script>
@endpush
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
@hasSection('title')
@yield('title') - {{ config('app.name') }}
@else
{{ config('app.name') }}
@endif
</title>
@yield('head')
<link href="{{ mix('/css/app.css') }}" rel="stylesheet" />
</head>
<body>
@yield('body')
@yield('footer')
<script src="{{ mix('/js/app.js') }}"></script>
<script src="{{ mix('/js/fontawesome/all.js') }}"></script>
@stack('scripts')
</html>
@extends('layouts.public_app')
@section('head')
<link rel="icon" type="image/svg+xml" href="{{ asset('/images/logo/favicon-blanc.svg') }}">
<link rel="alternate icon" href="{{ asset('/images/logo/favicon-blanc.ico') }}">
<link rel="mask-icon" href="{{ asset('/images/logo/favicon-blanc.svg') }}" color="#{{ config('app.meta_color') }}">
<meta content="{{ config('app.name') }}" property="og:title" />
<meta content="Rejoins-nous et découvre une communauté construite autour de l’amour pour la survie ! Récolte des
ressources, vend les ou achètes-en pour toi aussi créer ton propre village!" property="og:description" />
<meta content="{{ url('/') }}" property="og:url" />
<meta content="{{ asset('/images/logo/favicon-color.png') }}" property="og:image" />
<meta content="{{ config('app.meta_color') }}" name="theme-color"/>
@endsection
@section('body')
<x-public.navbar></x-public.navbar>
<div class="vitrine-intro">
<!-- La vidéo se jouera en arrière plan -->
<div id="vitrineBackgroundVideo" class="backgroundVideo">
<video muted loop id="vitrineIntroVideo">
<source type="video/mp4">
</video>
</div>
<div class="backgroundOverlay"></div>
<!-- Ici se trouve le slider pour les cartes d'infos -->
<div class="container intro-container">
<div class="welcomeMessage">
<h1>Découvre notre vision de la survie!</h1>
<p>Et rejoins une communauté grandissante.</p>
<button class="mc sucess">Rejoindre</button>
</div>
<div class="newsCardsSlider">
<a class="newsCard card orange" href="#">
<h4>Mise à jour 1.6 en approche!</h4>
<span class="subtitle">Le 18 mars 2022 - actualité serveur</span>
<p>Pleins de nouveautés au programme. Crois moi, tu ne sera pas déçu!<br><span id="dev"></span></p>
</a>
</div>
</div>
</div>
<!-- Ici on a la transition entre la vidéo et le fond de la page -->
<div id="introBackgroundTransition" class="transparentTop-to-whiteWool"></div>
<div class="testContent bg-white-wool">
</div>
{{-- Je met la balise script ici car si je l'intègre avec un @push('scripts'), son insertion sur la page sera
retardé. Cela résultera en une exécution retardée d'une à deux secondes sur la vitrine -> ça se voit avec les
redimensionnements et la lecture vidéo. --}}
<script type="text/javascript">
// Constantes
const websiteUrl = "{{ url('/') }}/";
const vitrineIntroVideo = document.getElementById("vitrineIntroVideo");
const introContainer = document.getElementsByClassName("intro-container")[0];
const vitrineIntro = document.getElementsByClassName("vitrine-intro")[0];
const vitrineBackgroundVideo = document.getElementById("vitrineBackgroundVideo");
const introBackgroundTransition = document.getElementById("introBackgroundTransition");
// On va regarder la correspondance en Média Query de l'écran pour afficher la vidéo appropriée
window.mobileAndTabletCheck = function () {
let check = false;
(function (a) {
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
})(navigator.userAgent || navigator.vendor || window.opera);
return check;
};
const isMobileOrTablet = window.mobileAndTabletCheck();
const screenWithouDPI = window.screen.width * window.devicePixelRatio;
if((isMobileOrTablet && window.matchMedia("(min-width: 2500px)").matches) || (!isMobileOrTablet && screenWithouDPI > 2500)){
vitrineIntroVideo.src = websiteUrl+"videos/1440p-h264-crf30.mp4";
}else if((isMobileOrTablet && window.matchMedia("(min-width: 1900px)").matches) || (!isMobileOrTablet && screenWithouDPI > 1900)){
vitrineIntroVideo.src = websiteUrl+"videos/1080p-h264-crf30.mp4";
}else{
vitrineIntroVideo.src = websiteUrl+"videos/720p-h264-crf30.mp4";
}
vitrineIntroVideo.play();
// Cette fonction se charge d'adapter le contenu de la page selon la dimension de l'écran
function vitrineCssMediaQueries(){
// On redimensionne le container de la vitrine pour qu'il match parfaitement bien avec la hauteur de l'écran
// vitrineIntro.style.height = "-webkit-fill-available";
introContainer.style.height = window.innerHeight - document.getElementsByClassName("navbar")[0].offsetHeight + "px";
vitrineBackgroundVideo.style.height = vitrineIntro.offsetHeight + introBackgroundTransition.offsetHeight + "px";
let dev = document.getElementById("dev");
vitrineBackgroundVideo.style.top = document.getElementsByClassName("navbar")[0].offsetHeight + "px";
}
// On l'éxecute une fois pour initialiser la page
vitrineCssMediaQueries();
// Et on ajoute l'event pour que ça s'éxécute à chaque fois que la fenêtre change de taille
// Ne doit pas s'appliquer aux appareils mobiles en raison de l'entète du navigateur
if(!isMobileOrTablet){
window.addEventListener('resize', vitrineCssMediaQueries);
}
</script>
@endsection
......@@ -14,5 +14,5 @@
*/
Route::get('/', function () {
return view('welcome');
return view('vitrine');
});
const mix = require('laravel-mix');
require('laravel-mix-copy-watched');
const tailwindcss = require("tailwindcss");
require('laravel-mix-purgecss');
/*
|--------------------------------------------------------------------------
......@@ -42,32 +44,15 @@ mix.js('resources/js/fontawesome/all.js', 'public/js/fontawesome/all.js')
// Copy files
// Logos & autres images génériques
mix.copy('resources/images/logo/favicon-blanc.ico', 'public/images/logo/favicon-blanc.ico')
.copy('resources/images/logo/favicon-blanc.svg', 'public/images/logo/favicon-blanc.svg')
.copy('resources/images/logo/favicon-color.png', 'public/images/logo/favicon-color.png')
.copy('resources/images/logo/large-blanc.png', 'public/images/logo/large-blanc.png')
.copy('resources/images/logo/large-blanc.svg', 'public/images/logo/large-blanc.svg')
.copy('resources/images/logo/large-color.png', 'public/images/logo/large-color.png')
.copy('resources/images/logo/short-blanc.png', 'public/images/logo/short-blanc.png')
.copy('resources/images/logo/short-blanc.svg', 'public/images/logo/short-blanc.svg')
.copy('resources/images/logo/short-color.png', 'public/images/logo/short-color.png');
// Navbar
mix.copy('resources/images/navbar/menu-buy.gif', 'public/images/navbar/menu-buy.gif')
.copy('resources/images/navbar/menu-buy--reversed.gif', 'public/images/navbar/menu-buy--reversed.gif')
.copy('resources/images/navbar/menu-comm.gif', 'public/images/navbar/menu-comm.gif')
.copy('resources/images/navbar/menu-comm--reversed.gif', 'public/images/navbar/menu-comm--reversed.gif')
.copy('resources/images/navbar/menu-store.gif', 'public/images/navbar/menu-store.gif')
.copy('resources/images/navbar/menu-store--reversed.gif', 'public/images/navbar/menu-store--reversed.gif')
.copy('resources/images/navbar/menu-support.gif', 'public/images/navbar/menu-support.gif')
.copy('resources/images/navbar/menu-support--reversed.gif', 'public/images/navbar/menu-support--reversed.gif');
mix.copyWatched( 'resources/images/**/*.{jpg,jpeg,png,gif,svg}', 'public/images', { base: 'resources/images' } );
// Vitrine
mix.copy('resources/videos/720p-h264-crf30.mp4', 'public/videos/720p-h264-crf30.mp4')
.copy('resources/videos/1080p-h264-crf30.mp4', 'public/videos/1080p-h264-crf30.mp4')
.copy('resources/videos/1440p-h264-crf30.mp4', 'public/videos/1440p-h264-crf30.mp4');
// Purge css
mix.purgeCss();
/*
mix.webpackConfig({
stats: {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment