* nos metiers : injection des datas du bo
* début prise en charge auth/pas auth
Back
* articles (pour la page actualités)
* home slider : en cours
This commit is contained in:
Olivier Legat 2021-02-19 12:20:43 +01:00
parent 37f5807f11
commit 2a67dfadcc
30 changed files with 1938 additions and 812 deletions

View file

@ -0,0 +1,208 @@
<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Models\Articles;
use App\Models\ArticlesCategories;
use Illuminate\Support\Facades\Cache;
class ArticlesController extends Controller
{
public function index()
{
$a = Articles::with('category')->get();
return view('bo.articles.index', compact('a'));
}
public function create()
{
$ac = ArticlesCategories::all();
return view('bo.articles.create', compact('ac'));
}
public function store(Request $request)
{
$request->validate([
'title' => 'required|max:100',
'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=340,height=340',
'picture_r' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=780,height=508',
'content' => 'required',
]);
$title = $request->title;
$slug = Str::slug($title);
$picture = $request->picture;
$picture_r = $request->picture_r;
$content = $request->content;
$categoryId = $request->category;
$status = 0;
$notification = $request->notification === null ? 0 : 1;
if ($categoryId === "4") {
$question = $request->question;
$multipleResponse = $request->multiple_response === null ? 0 : 1;
$stopPoll = $request->stop_poll === null ? 0 : 1;
$answers = $request->answers;
$request->validate([
'question' => 'required|max:255',
'answers' => 'required',
]);
}
$imageName = Str::slug($title) .'-le-gaulois-' . date('d-m-Y') . '.' . $picture->extension();
$picture->move(public_path('uploads/images/articles/' . date('Y') . '/' . date('m')), $imageName);
$imageName_r = Str::slug($title) .'-le-gaulois-' . date('d-m-Y') . '_r.' . $picture_r->extension();
$picture_r->move(public_path('uploads/images/articles/' . date('Y') . '/' . date('m')), $imageName_r);
$a = new Articles();
$a->title = $title;
$a->slug = $slug;
$a->picture = 'uploads/images/articles/' . date('Y') . '/' . date('m') . '/' . $imageName;
$a->picture_r = 'uploads/images/articles/' . date('Y') . '/' . date('m') . '/' . $imageName_r;
$a->content = $content;
$a->category_id = $categoryId;
if ($categoryId === "4") {
$a->question = $question;
$a->multiple_response = $multipleResponse;
$a->stop_poll = $stopPoll;
}
$a->status = $status;
$a->notification = $notification;
$a->save();
if ($categoryId === "4") {
foreach ($answers as $answer) {
if (!empty($answer)) {
$a->answers()->create([
'answer' => $answer,
]);
}
}
}
return redirect()->route('bo.articles.index');
}
public function edit($id)
{
$a = Articles::findOrFail($id);
$ac = ArticlesCategories::all();
return view('bo.articles.edit')
->with('a', $a)
->with('ac', $ac)
;
}
public function update(Request $request, $id)
{
$request->validate([
'title' => 'required|max:100',
'content' => 'required',
]);
$title = $request->title;
$slug = Str::slug($title);
$picture = $request->picture;
$picture_r = $request->picture_r;
$content = $request->content;
$categoryId = $request->category;
$status = $request->status === null ? 0 : 1;
$notification = $request->notification === null ? 0 : 1;
if ($categoryId === "4") {
$question = $request->question;
$multipleResponse = $request->multiple_response === null ? 0 : 1;
$stopPoll = $request->stop_poll === null ? 0 : 1;
$answers = $request->answers;
$request->validate([
'question' => 'required|max:255',
'answers' => 'required',
]);
}
if ($picture !== NULL && $picture_r !== NULL){
$request->validate([
'picture' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:width=340,height=340',
'picture_r' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:width=780,height=508',
]);
}elseif ($picture !== NULL && $picture_r === NULL){
$request->validate([
'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=340,height=340'
]);
}elseif ($picture === NULL && $picture_r !== NULL){
$request->validate([
'picture_r' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=780,height=508'
]);
}
$a = Articles::findOrFail($id);
if ($picture !== NULL){
if(file_exists(public_path() . '/' . $a->picture))
unlink(public_path() . '/' . $a->picture);
$imageName = Str::slug($title) .'.'.$picture->extension();
$picture->move(public_path('uploads/images/articles/' . date('Y') . '/' . date('m') . '/'), $imageName);
}
if ($picture_r !== NULL) {
if(file_exists(public_path() . '/' . $a->picture_r))
unlink(public_path() . '/' . $a->picture_r);
$imageName_r = Str::slug($title) . '_r.' . $picture_r->extension();
$picture_r->move(public_path('uploads/images/articles/' . date('Y') . '/' . date('m') . '/'), $imageName_r);
}
$a->title = $title;
$a->slug = $slug;
if ($picture !== null)
$a->picture = 'uploads/images/articles/' . date('Y') . '/' . date('m') . '/' . $imageName;
if ($picture_r !== null)
$a->picture_r = 'uploads/images/articles/' . date('Y') . '/' . date('m') . '/' . $imageName_r;
$a->content = $content;
$a->category_id = $categoryId;
if ($categoryId === "4") {
$a->question = $question;
$a->multiple_response = $multipleResponse;
$a->stop_poll = $stopPoll;
$a->answers()->delete();
foreach ($answers as $answer) {
if (!empty($answer)) {
$a->answers()->create([
'answer' => $answer,
]);
}
}
} else {
$a->question = null;
$a->multiple_response = null;
$a->stop_poll = null;
$a->answers()->delete();
}
$a->status = $status;
$a->notification = $notification;
$a->save();
if ($a->category_id == 1 && $a->status === 1) {
$actus = Articles::where([['status', 1], ['category_id', 1]])->orderBy('updated_at', 'DESC')->limit(3)->get();
Cache::put('actusGlobal', $actus);
}
return redirect()->route('bo.articles.edit', $a->id)->with('success', 'Enregistré !');
}
public function destroy($id)
{
$a = Articles::findOrFail($id);
if (file_exists(public_path() . '/' . $a->picture))
unlink(public_path() . '/' . $a->picture);
if (file_exists(public_path() . '/' . $a->picture_r))
unlink(public_path() . '/' . $a->picture_r);
$a->delete();
return redirect()->route('bo.articles.index');
}
}

View file

@ -0,0 +1,87 @@
<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use App\Models\HomeSliders;
use Illuminate\Http\Request;
class HomeSlidersController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$slides = HomeSliders::get();
return view('bo.home-sliders.index',compact('slides'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('bo.home-sliders.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View file

@ -10,10 +10,11 @@ class OurTradeController extends Controller
{
public function index(Request $request)
{
$secteurs = BusinessSector::orderBy('order', 'ASC')->where('parent_id', null)->with('employees','children.employees')->get();
$secteurs_simples = BusinessSector::orderBy('order', 'ASC')->where('parent_id', null)->doesnthave('children')->with('employees')->get();
$secteurs_complexes = BusinessSector::orderBy('order', 'ASC')->where('parent_id', null)->has('children')->with('employees','children.employees')->get();
//some sort of foreach
//$secteurs->employees->sortBy('order');
//var_dump($secteurs);
return view('front.ourtrade', compact('secteurs'));
return view('front.ourtrade', compact('secteurs_simples','secteurs_complexes'));
}
}

33
app/Models/Articles.php Normal file
View file

@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Articles extends Model
{
public function category()
{
return $this->belongsTo(ArticlesCategories::class, 'category_id');
}
public function recipes()
{
return $this->belongsToMany(Recipes::class);
}
public function answers()
{
return $this->hasMany(SurveysAnswers::class);
}
public function surveysAnswersUsers()
{
return $this->hasManyThrough(
SurveysAnswers::class,
SurveysAnswersUsers::class,
'survey_answer_id',
'article_id'
);
}
}

View file

@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ArticlesCategories extends Model
{
public function articles()
{
return $this->hasMany(Articles::class, 'category_id');
}
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class HomeSliders extends Model
{
use HasFactory;
}

View file

@ -0,0 +1,44 @@
<?php
use App\Enums\Days;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
// @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
class CreateHomeSliderPicturesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('home_sliders', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('text');
$table->string('picture');
$table->string('picture_r');
$table->string('link_label', 100);
$table->string('link');
$table->boolean('link_new_tab')->default(false);
$table->integer('order')->default(1);
$table->boolean('status')->default(false);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('home_sliders');
}
}

View file

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
// @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
class CreateArticlesCategoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles_categories', function (Blueprint $table) {
$table->id();
$table->string('name', 100);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles_categories');
}
}

View file

@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
// @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
class CreateArticlesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title', 255);
$table->string('slug', 255);
$table->string('picture');
$table->string('picture_r');
$table->text('content');
$table->string('question')->nullable();
$table->integer('multiple_response')->nullable();
$table->integer('stop_poll')->nullable();
$table->integer('notification')->default(0);
$table->boolean('status')->default(false);
$table->foreignId('category_id');
$table->foreign('category_id')->references('id')->on('articles_categories');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
}

512
package-lock.json generated
View file

@ -1007,6 +1007,16 @@
"to-fast-properties": "^2.0.0"
}
},
"@ckeditor/ckeditor5-build-classic": {
"version": "24.0.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-24.0.0.tgz",
"integrity": "sha512-659ZAYbuQbPj3ElqrTSV7aqPtW4vt30Th0PiheFei7adIgmu1bFTHgcM3hqm7XGRzGmBRV6C07xSwUptxn3cvQ=="
},
"@ckeditor/ckeditor5-vue2": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-vue2/-/ckeditor5-vue2-1.0.5.tgz",
"integrity": "sha512-snsNB/2oWfKw0drGJAmMGpTatmt//L1rQsOwkBw+1uKUuOJPKN3xwyUZVWT906VguIMXm4E9OHzquZ3bdkijiA=="
},
"@discoveryjs/json-ext": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz",
@ -1016,8 +1026,7 @@
"@fortawesome/fontawesome-free": {
"version": "5.15.2",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.2.tgz",
"integrity": "sha512-7l/AX41m609L/EXI9EKH3Vs3v0iA8tKlIOGtw+kgcoanI7p+e4I4GYLqW3UXWiTnjSFymKSmTTPKYrivzbxxqA==",
"dev": true
"integrity": "sha512-7l/AX41m609L/EXI9EKH3Vs3v0iA8tKlIOGtw+kgcoanI7p+e4I4GYLqW3UXWiTnjSFymKSmTTPKYrivzbxxqA=="
},
"@nodelib/fs.scandir": {
"version": "2.1.4",
@ -1045,6 +1054,12 @@
"fastq": "^1.6.0"
}
},
"@types/anymatch": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
"integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
"dev": true
},
"@types/autoprefixer": {
"version": "9.7.2",
"resolved": "https://registry.npmjs.org/@types/autoprefixer/-/autoprefixer-9.7.2.tgz",
@ -1439,12 +1454,82 @@
"@types/node": "*"
}
},
"@types/source-list-map": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
"integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
"dev": true
},
"@types/svgo": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.3.tgz",
"integrity": "sha512-eDLVUvvTn+mol3NpP211DTH9JzSS6YKssRIhHNmXk5BiCl+gc4s+xQQjRFTSsGBohmka5qBsHX6qhL4x88Wkvg==",
"dev": true
},
"@types/tapable": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
"integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==",
"dev": true
},
"@types/uglify-js": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.12.0.tgz",
"integrity": "sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q==",
"dev": true,
"requires": {
"source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"@types/webpack": {
"version": "4.41.26",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
"integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==",
"dev": true,
"requires": {
"@types/anymatch": "*",
"@types/node": "*",
"@types/tapable": "*",
"@types/uglify-js": "*",
"@types/webpack-sources": "*",
"source-map": "^0.6.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"@types/webpack-sources": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz",
"integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==",
"dev": true,
"requires": {
"@types/node": "*",
"@types/source-list-map": "*",
"source-map": "^0.7.3"
},
"dependencies": {
"source-map": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
}
},
"@vue/component-compiler-utils": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz",
@ -1786,39 +1871,12 @@
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true
},
"ansi-cyan": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
"integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
"dev": true,
"requires": {
"ansi-wrap": "0.1.0"
}
},
"ansi-gray": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
"integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
"dev": true,
"requires": {
"ansi-wrap": "0.1.0"
}
},
"ansi-html": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
"integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
"dev": true
},
"ansi-red": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
"integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
"dev": true,
"requires": {
"ansi-wrap": "0.1.0"
}
},
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
@ -1834,12 +1892,6 @@
"color-convert": "^1.9.0"
}
},
"ansi-wrap": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
"integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
"dev": true
},
"anymatch": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
@ -1912,6 +1964,12 @@
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true
},
"array-uniq": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true
},
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
@ -1998,71 +2056,6 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
"autoprefixer": {
"version": "9.8.6",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
"integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
"dev": true,
"requires": {
"browserslist": "^4.12.0",
"caniuse-lite": "^1.0.30001109",
"colorette": "^1.2.1",
"normalize-range": "^0.1.2",
"num2fraction": "^1.2.2",
"postcss": "^7.0.32",
"postcss-value-parser": "^4.1.0"
},
"dependencies": {
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
},
"dependencies": {
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"postcss": {
"version": "7.0.35",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
"integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
"dev": true,
"requires": {
"chalk": "^2.4.2",
"source-map": "^0.6.1",
"supports-color": "^6.1.0"
}
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"supports-color": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"available-typed-arrays": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz",
@ -2819,6 +2812,78 @@
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true
},
"clean-webpack-plugin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz",
"integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==",
"dev": true,
"requires": {
"@types/webpack": "^4.4.31",
"del": "^4.1.1"
},
"dependencies": {
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
"requires": {
"array-uniq": "^1.0.1"
}
},
"del": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
"integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
"dev": true,
"requires": {
"@types/glob": "^7.1.1",
"globby": "^6.1.0",
"is-path-cwd": "^2.0.0",
"is-path-in-cwd": "^2.0.0",
"p-map": "^2.0.0",
"pify": "^4.0.1",
"rimraf": "^2.6.3"
}
},
"globby": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
"integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
"dev": true,
"requires": {
"array-union": "^1.0.1",
"glob": "^7.0.3",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
},
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
}
},
"p-map": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
"integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
"dev": true
},
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
}
}
},
"cli-table3": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz",
@ -2925,12 +2990,6 @@
"simple-swizzle": "^0.2.2"
}
},
"color-support": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
"dev": true
},
"colorette": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
@ -3787,22 +3846,6 @@
}
}
},
"del": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz",
"integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==",
"dev": true,
"requires": {
"globby": "^10.0.1",
"graceful-fs": "^4.2.2",
"is-glob": "^4.0.1",
"is-path-cwd": "^2.2.0",
"is-path-inside": "^3.0.1",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
"slash": "^3.0.0"
}
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@ -3906,7 +3949,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
"integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
"dev": true,
"requires": {
"ssr-window": "^3.0.0-alpha.1"
}
@ -4476,18 +4518,6 @@
}
}
},
"fancy-log": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
"integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
"dev": true,
"requires": {
"ansi-gray": "^0.1.1",
"color-support": "^1.1.3",
"parse-node-version": "^1.0.0",
"time-stamp": "^1.0.0"
}
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@ -4926,23 +4956,6 @@
"function-bind": "^1.1.1"
}
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
}
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@ -5737,6 +5750,26 @@
"integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
"dev": true
},
"is-path-in-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
"integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
"dev": true,
"requires": {
"is-path-inside": "^2.1.0"
},
"dependencies": {
"is-path-inside": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
"integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
"dev": true,
"requires": {
"path-is-inside": "^1.0.2"
}
}
}
},
"is-path-inside": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
@ -5869,7 +5902,8 @@
"jquery": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
"integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
"integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==",
"dev": true
},
"js-tokens": {
"version": "4.0.0",
@ -6621,12 +6655,6 @@
"boolbase": "~1.0.0"
}
},
"num2fraction": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
"dev": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@ -6862,15 +6890,6 @@
"p-limit": "^2.2.0"
}
},
"p-map": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
"integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
"dev": true,
"requires": {
"aggregate-error": "^3.0.0"
}
},
"p-pipe": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz",
@ -6958,12 +6977,6 @@
"json-parse-better-errors": "^1.0.1"
}
},
"parse-node-version": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
"integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
"dev": true
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@ -7010,6 +7023,12 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-is-inside": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
"dev": true
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@ -7053,6 +7072,27 @@
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
"dev": true
},
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
}
},
"pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@ -7065,7 +7105,8 @@
"popper.js": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
"dev": true
},
"portfinder": {
"version": "1.0.28",
@ -9617,109 +9658,6 @@
"queue-microtask": "^1.2.2"
}
},
"run-sequence": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-2.2.1.tgz",
"integrity": "sha512-qkzZnQWMZjcKbh3CNly2srtrkaO/2H/SI5f2eliMCapdRD3UhMrwjfOAZJAnZ2H8Ju4aBzFZkBGXUqFs9V0yxw==",
"dev": true,
"requires": {
"chalk": "^1.1.3",
"fancy-log": "^1.3.2",
"plugin-error": "^0.1.2"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"arr-diff": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
"integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
"dev": true,
"requires": {
"arr-flatten": "^1.0.1",
"array-slice": "^0.2.3"
}
},
"arr-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
"integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
"dev": true
},
"array-slice": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
"integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"extend-shallow": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
"integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
"dev": true,
"requires": {
"kind-of": "^1.1.0"
}
},
"kind-of": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
"integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
"dev": true
},
"plugin-error": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
"integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
"dev": true,
"requires": {
"ansi-cyan": "^0.1.1",
"ansi-red": "^0.1.1",
"arr-diff": "^1.0.1",
"arr-union": "^2.0.1",
"extend-shallow": "^1.1.2"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@ -10301,8 +10239,7 @@
"ssr-window": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
"dev": true
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
},
"stable": {
"version": "0.1.8",
@ -10568,7 +10505,6 @@
"version": "6.4.12",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-6.4.12.tgz",
"integrity": "sha512-tmDKtmvser4yfVQzOkKw9zGPP/ERaVTmIgx6qCj9gqOsNz7RI8msmuonIm3eMl8PykauamAR/UGki8QS2WGVXg==",
"dev": true,
"requires": {
"dom7": "^3.0.0",
"ssr-window": "^3.0.0"
@ -10653,12 +10589,6 @@
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
"dev": true
},
"time-stamp": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
"integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
"dev": true
},
"timers-browserify": {
"version": "2.0.12",
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
@ -11048,6 +10978,14 @@
"vue-style-loader": "^4.1.0"
}
},
"vue-select-image": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/vue-select-image/-/vue-select-image-1.9.0.tgz",
"integrity": "sha512-oXIfpzawtTRwMGbaXLvG/4ktUgrpt6LZgcwK7WmXfodhuEKTZOKlpPxACFNAYJfqBlAQwloMdw/RJgpFY8XUKQ==",
"requires": {
"vue": "^2.5.17"
}
},
"vue-style-loader": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",

View file

@ -12,17 +12,11 @@
"devDependencies": {
"axios": "^0.21",
"bootstrap": "^4.0.0",
"jquery": "^3.5",
"clean-webpack-plugin": "^3.0.0",
"jquery": "^3.5.1",
"laravel-mix": "^6.0.6",
"lodash": "^4.17.19",
"popper.js": "^1.12",
"@fortawesome/fontawesome-free": "^5.15.1",
"autoprefixer": "^9.7.6",
"cssnano": "^4.1.10",
"del": "^5.1.0",
"run-sequence": "^2.2.1",
"swiper": "^6.3.4",
"postcss": "^8.1.14",
"popper.js": "^1.16.1",
"resolve-url-loader": "^3.1.2",
"sass": "^1.20.1",
"sass-loader": "^8.0.0",
@ -31,10 +25,12 @@
"vue-template-compiler": "^2.6.10"
},
"dependencies": {
"@ckeditor/ckeditor5-build-classic": "^24.0.0",
"@ckeditor/ckeditor5-vue2": "^1.0.5",
"@fortawesome/fontawesome-free": "^5.15.1",
"swiper": "^6.3.4",
"chart.js": "^2.9.4",
"jquery": "^3.5.1",
"popper.js": "^1.16.1",
"v-clipboard": "^2.2.3",
"vue": "^2.6.12"
"vue-select-image": "^1.9.0"
}
}

View file

@ -827,7 +827,6 @@ header .right-menu-mobile {
}
header .right-menu-mobile .mobile-disconnect {
margin-left: 10px;
display: none;
}
header .right-menu-mobile .mobile-disconnect.login {
display: block;
@ -909,9 +908,6 @@ header .right-menu-mobile #svg-connect:hover, header .right-menu-mobile #svg-sea
top: calc(-100% - 20px);
width: 500px;
}
header .right-menu .connect-contain p {
display: none;
}
header .right-menu .connect-contain .connect {
text-align: right;
}
@ -934,7 +930,6 @@ header .right-menu-mobile #svg-connect:hover, header .right-menu-mobile #svg-sea
content: "Espace client";
}
header .right-menu .connect-contain .disconnect {
display: none;
width: 40px;
height: 30px;
text-align: right;

273
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,80 @@
/*!
* Bootstrap v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/*!
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md.
*/
/*!
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
/*!
* Sizzle CSS Selector Engine v2.3.5
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
* Date: 2020-03-14
*/
/*!
* Vue.js v2.6.12
* (c) 2014-2020 Evan You
* Released under the MIT License.
*/
/*!
* jQuery JavaScript Library v3.5.1
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2020-05-04T22:49Z
*/
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/**!
* @fileOverview Kickass library to create and place poppers near their reference elements.
* @version 1.16.1
* @license
* Copyright (c) 2016 Federico Zivolo and contributors
*
* 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.
*/

View file

@ -0,0 +1,69 @@
/*!
* Bootstrap v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/*!
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
/*!
* Sizzle CSS Selector Engine v2.3.5
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
* Date: 2020-03-14
*/
/*!
* jQuery JavaScript Library v3.5.1
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2020-05-04T22:49Z
*/
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/**!
* @fileOverview Kickass library to create and place poppers near their reference elements.
* @version 1.16.1
* @license
* Copyright (c) 2016 Federico Zivolo and contributors
*
* 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.
*/

View file

@ -1,6 +1,6 @@
{
"/js/app.js": "/js/app.js",
"/js/main.js": "/js/main.js",
"/css/app.css": "/css/app.css",
"/css/style.css": "/css/style.css"
"/css/style.css": "/css/style.css",
"/css/app.css": "/css/app.css"
}

6
resources/js/app.js vendored
View file

@ -8,6 +8,11 @@
import Vue from 'vue';
require('@fortawesome/fontawesome-free/js/all');
require('./bootstrap');
require('vue-select-image/dist/vue-select-image.css');
import CKEditor from '@ckeditor/ckeditor5-vue2';
import VueSelectImage from 'vue-select-image';
Vue.use( CKEditor );
Vue.use( VueSelectImage )
//window.Vue = require('vue');
@ -25,6 +30,7 @@ require('./bootstrap');
Vue.component('example-component', require('./components/ExampleComponent.vue').default);
Vue.component('business-sector', require('./components/bo/BusinessSectors.vue').default);
Vue.component('employees', require('./components/bo/Employees.vue').default);
Vue.component('custom-ckeditor', require('./components/bo/CKEditorComponent.vue').default);
/**
* Next, we will create a fresh Vue application instance and attach it to

View file

@ -0,0 +1,31 @@
<template>
<div>
<ckeditor :editor="editor" v-model="dbtext"></ckeditor>
<input type="hidden" :name="name" :value="dbtext">
</div>
</template>
<script>
import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
export default {
mounted() {
console.log('CKEditorComponent Component mounted.');
},
props: [
'name',
'dbtext',
],
data() {
return {
editor: ClassicEditor
}
},
watch: {
},
methods: {
}
}
</script>

View file

@ -45,7 +45,7 @@ header {
width: 20px;
height: 3px;
background-color: $first_btn_color;
transition: all .8s;
transition: all .8s;
}
&::before{top: -9px;}
&::after{top: 9px;}
@ -125,7 +125,7 @@ header {
.mobile-disconnect{
margin-left: 10px;
display: none;
//display: none;
}
// .mobile-connect, .mobile-disconnect{display: none;}
// .mobile-connect.active{display: block;}
@ -226,8 +226,8 @@ header {
right: 0;
top: calc(-100% - 20px);
width: 500px;
p{display: none;}
//p{display: none;}
.connect{
text-align: right;
// transform: translateY(-15%);
@ -249,7 +249,7 @@ header {
a::after{content: "Espace client";}
}
.disconnect{
display: none;
//display: none;
width: 40px;
height: 30px;
text-align: right;
@ -334,7 +334,7 @@ header {
// ********* *
// ***** *
// ** *
// ** *
// ** *
// ********** *
// * *
// ********* *
@ -347,4 +347,4 @@ header {
@media only screen and (min-width: 1920px) {
header {
}
}
}

View file

@ -7,88 +7,18 @@
<main class="form-signin">
<form method="POST" action="{{ route('login') }}">
@csrf
<img class="mb-4" src="{{ asset('images/logo-lgl-3f.svg') }}" alt="__Jeusselin__">
{{--<img class="mb-4" src="{{ asset('images/logo-lgl-3f.svg') }}" alt="__Jeusselin__">--}}
<input type="email" id="inputEmail" class="form-control" placeholder="Adresse email" name="email" value="{{ old('email') }}" required autofocus>
<input type="password" id="inputPassword" class="form-control" placeholder="Mot de passe" name="password" required>
<div class="checkbox mb-3">
{{--<div class="checkbox mb-3">
<label>
<input type="checkbox" value="remember"> Se souvenir de moi
</label>
</div>
</div>--}}
<button class="w-100 btn btn-lg btn-primary" type="submit">Connexion</button>
<p class="mt-5 mb-3 text-muted">&copy; __Jeusselin__ {{ date('Y') }}</p>
{{--<p class="mt-5 mb-3 text-muted">&copy; __Jeusselin__ {{ date('Y') }}</p>--}}
</form>
</main>
</div>
</section>
@endsection
{{-- <div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Login') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<div class="col-md-6 offset-md-4">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Remember Me') }}
</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
@if (Route::has('password.request'))
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div> --}}

View file

@ -0,0 +1,170 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
Ajout d'un article
<a href="{{route('bo.articles.index')}}" class="btn btn-sm btn-primary float-right">Retour</a>
</div>
<div class="card-body">
<form action="{{route('bo.articles.store')}}" method="POST" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-md-8 offset-md-2">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="form-group">
<input type="text" class="form-control" name="title" placeholder="Titre *" value="{{ old('title') }}" required>
</div>
<div class="form-group">
<label>Visuel * de type JPEG/PNG - 2Mo max. - 340 x 340px</label></br>
<input type="file" name="picture" accept="image/png, image/jpeg" required>
</div>
<div class="form-group">
<label>Visuel * de type JPEG/PNG - 2Mo max. - 780 x 508px</label></br>
<input type="file" name="picture_r" accept="image/png, image/jpeg" required>
</div>
<div class="form-group">
<label class="col-form-label">Contenu *</label>
<custom-ckeditor name="content" dbtext="{{ old('content') }}"></custom-ckeditor>
</div>
<div class="form-group row">
<label class="col-form-label col-md-3">Catégorie *</label>
<select class="custom-select col-md-9" id="category" name="category">
@foreach ($ac as $article_category)
<option value="{{$article_category->id}}" @if (old('category') == $article_category->id)selected @endif>{{$article_category->name}}</option>
@endforeach
</select>
</div>
<div class="form-group" id="div_answers">
<div class="form-group">
<input type="text" class="form-control" name="question" value="{{ old('question') }}" placeholder="Question *">
</div>
<div class="form-group">
<label>
<input type="checkbox" name="multiple_response" @if (old('multiple_response') !== null)checked @endif>
Autoriser la réponse multiple
</label>
</div>
<div class="form-group">
<label>
<input type="checkbox" name="stop_poll" @if (old('stop_poll') !== null)checked @endif>
Arrêter le sondage
</label>
</div>
<div class="form-group text-center">
<a class="btn btn-primary text-white" onclick="addInput()" id="add_answer" role="button">Ajouter une réponse</a>
</div>
<div>
<table class="table text-center">
<thead class="thead-dark">
<tr>
<th scope="col">Réponse</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
</div>
<div class="form-group">
<label>
<input type="checkbox" name="notification" @if (old('notification') !== null)checked @endif>
Notification activé
</label>
</div>
<div class="form-group text-center">
<input type="submit" class="btn btn-secondary" value="Ajouter">
</div>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
<script>
var addId = 0;
// Compte le nombre de champs answer sur la page
var nbAnswer = 0;
function addInput() {
// Désactive le bouton ajouter une réponse si il y a déjà 5 inputs présents
if (nbAnswer >= 5) {
document.getElementById('add_answer').classList.add("disabled");
} else {
addId++;
nbAnswer++;
var answerTable = document.getElementById('answers');
var tr = document.createElement('tr');
tr.id = "tr_answer_" + addId;
var td1 = document.createElement('td');
td1.className = "w-75";
var td2 = document.createElement('td');
td2.className = "w-25";
var input = document.createElement('input');
input.className = "form-control";
input.name = "answers[]";
input.placeholder = "Réponse";
var a = document.createElement('a');
a.href = "#_";
a.setAttribute("onclick", "deleteAnswer('tr_answer_" + addId + "')");
a.className = "col-form-label";
a.innerHTML = "Supprimer"
td1.appendChild(input);
td2.appendChild(a);
tr.appendChild(td1);
tr.appendChild(td2);
answerTable.appendChild(tr);
if (nbAnswer >= 5) {
document.getElementById('add_answer').classList.add("disabled");
}
}
}
// Supprime une ligne du tableau de réponses, affiche le bouton ajouter une réponse si il y a moins de 5 champs présents sur la page
function deleteAnswer(elementId) {
var tr = document.getElementById(elementId);
tr.parentNode.removeChild(tr);
nbAnswer--;
if (nbAnswer < 5) {
document.getElementById('add_answer').classList.remove("disabled");
}
return false;
}
var divAnswers = document.getElementById('div_answers');
var category = document.getElementById('category');
if (category.value !== "4") {
divAnswers.style.display = "none";
}
category.onchange = function() {
if (category.value === "4") {
divAnswers.style.display = "inline";
} else {
divAnswers.style.display = "none";
}
};
</script>
@endsection

View file

@ -0,0 +1,224 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
Modification d'un article
<a href="{{route('bo.articles.index')}}" class="btn btn-sm btn-primary float-right ml-2">Retour</a>
<form action="{{route('bo.articles.destroy', $a->id)}}" method="POST" class="d-inline">
@method('DELETE')
@csrf
<input type="submit" class="btn btn-sm btn-danger float-right" value="Supprimer"
onclick="return confirm('Êtes-vous sûr(e) ?')">
</form>
</div>
<div class="card-body">
<form action="{{route('bo.articles.update', $a->id)}}" method="POST" enctype="multipart/form-data">
@method('PUT')
@csrf
<div class="row">
<div class="col-md-8 offset-md-2">
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="form-group">
<input type="text" class="form-control" name="title" placeholder="Titre *" value="{{$a->title}}" required>
</div>
<div class="form-group">
<label>Visuel * de type JPEG/PNG - 2Mo max. - 340 x 340px</label>
<input type="file" name="picture" accept="image/png, image/jpeg">
</br>
</br>
<img src="{{ asset($a->picture) }}" style="max-height: 200px;">
</div>
<div class="form-group">
<label>Visuel * de type JPEG/PNG - 2Mo max. - 780 x 508px</label>
<input type="file" name="picture_r" accept="image/png, image/jpeg">
</br>
</br>
<img src="{{ asset($a->picture_r) }}" style="max-height: 200px;">
</div>
<div class="form-group">
<label class="col-form-label">Contenu *</label>
<custom-ckeditor name="content" dbtext="{{ $a->content }}"></custom-ckeditor>
</div>
<div class="form-group row">
<label class="col-form-label col-md-3">Catégorie *</label>
<select class="custom-select col-md-9" id="category" name="category">
@foreach ($ac as $article_category)
@if ($article_category->id === $a->category_id)
<option value="{{$article_category->id}}" selected>{{$article_category->name}}</option>
@else
<option value="{{$article_category->id}}">{{$article_category->name}}</option>
@endif
@endforeach
</select>
</div>
<div class="form-group" id="div_answers">
<div class="form-group">
<input type="text" class="form-control" name="question" placeholder="Question *" value="{{$a->question}}">
</div>
<div class="form-group">
<label>
@if ($a->multiple_response === 1)
<input type="checkbox" name="multiple_response" checked>
@else
<input type="checkbox" name="multiple_response">
@endif
Autoriser la réponse multiple
</label>
</div>
<div class="form-group">
<label>
@if ($a->stop_poll === 1)
<input type="checkbox" name="stop_poll" checked>
@else
<input type="checkbox" name="stop_poll">
@endif
Arrêter le sondage
</label>
</div>
<div class="form-group text-center">
<a class="btn btn-primary text-white" onclick="addInput()" id="add_answer" role="button">Ajouter une réponse</a>
</div>
<div>
<table class="table text-center">
<thead class="thead-dark">
<tr>
<th scope="col">Réponse</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody id="answers">
@for($i = 0; $i < count($a->answers); $i++)
<tr id="tr_answer_{{$i}}">
<td class="w-75"><input class="form-control" name="answers[]" placeholder="Réponse" value="{{$a->answers[$i]->answer}}"></td>
<td class="w-25"><a href="#_" onclick="deleteAnswer('tr_answer_{{$i}}')" class="col-form-label">Supprimer</a></td>
</tr>
@endfor
</tbody>
</table>
</div>
</div>
<div class="form-group">
<label>
@if ($a->notification === 1)
<input type="checkbox" name="notification" checked>
@else
<input type="checkbox" name="notification">
@endif
Notification activé
</label>
</div>
<div class="form-group">
<label>
@if ($a->status === 1)
<input type="checkbox" name="status" value="1" checked>
@else
<input type="checkbox" name="status" value="1">
@endif
Publié ?
</label>
</div>
<div class="form-group text-center">
<input type="submit" class="btn btn-secondary" value="Modifier">
</div>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
<script>
var addId = 0;
// Compte le nombre de champs answer sur la page
var nbAnswer = 0;
function addInput() {
// Désactive le bouton ajouter une réponse si il y a déjà 5 inputs présents
if (nbAnswer >= 5) {
document.getElementById('add_answer').classList.add("disabled");
} else {
addId++;
nbAnswer++;
var answerTable = document.getElementById('answers');
var tr = document.createElement('tr');
tr.id = "tr_answer_" + addId;
var td1 = document.createElement('td');
td1.className = "w-75";
var td2 = document.createElement('td');
td2.className = "w-25";
var input = document.createElement('input');
input.className = "form-control";
input.name = "answers[]";
input.placeholder = "Réponse";
var a = document.createElement('a');
a.href = "#_";
a.setAttribute("onclick", "deleteAnswer('tr_answer_" + addId + "')");
a.className = "col-form-label";
a.innerHTML = "Supprimer"
td1.appendChild(input);
td2.appendChild(a);
tr.appendChild(td1);
tr.appendChild(td2);
answerTable.appendChild(tr);
if (nbAnswer >= 5) {
document.getElementById('add_answer').classList.add("disabled");
}
}
}
// Supprime une ligne du tableau de réponses, affiche le bouton ajouter une réponse si il y a moins de 5 champs présents sur la page
function deleteAnswer(elementId) {
var tr = document.getElementById(elementId);
tr.parentNode.removeChild(tr);
nbAnswer--;
if (nbAnswer < 5) {
document.getElementById('add_answer').classList.remove("disabled");
}
return false;
}
var divAnswers = document.getElementById('div_answers');
var category = document.getElementById('category');
if (category.value !== "4") {
divAnswers.style.display = "none";
}
nbAnswer = document.getElementById('answers').getElementsByTagName('input').length;
if (nbAnswer >= 5) {
document.getElementById('add_answer').classList.add("disabled");
}
category.onchange = function() {
if (category.value === "4") {
divAnswers.style.display = "inline";
} else {
divAnswers.style.display = "none";
}
};
</script>
@endsection

View file

@ -0,0 +1,39 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
Liste des articles
<a href="{{route('bo.articles.create')}}" class="btn btn-sm btn-primary float-right">Ajouter</a>
</div>
<div class="card-body">
<table class="table text-center">
<thead class="thead-dark">
<tr>
<th scope="col">Titre</th>
<th scope="col">Catégorie</th>
<th scope="col">Publié ?</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($a as $article)
<tr>
<th>{{$article->title}}</th>
<td>{{$article->category->name}}</td>
<td>
@if ($article->status === 0)
<i class="fas fa-times cross-red"></i>
@else
<i class="fas fa-check check-green"></i>
@endif
</td>
<td><a href="{{route('bo.articles.edit', $article->id)}}" class="btn btn-sm btn-primary">Éditer</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

View file

@ -0,0 +1,63 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
Slides de l'acceuil
<a href="{{route('bo.home-sliders.index')}}" class="btn btn-sm btn-primary float-right">Retour</a>
</div>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{route('bo.home-sliders.store')}}" method="POST" enctype="multipart/form-data">
@csrf
<ul class="list-group list-group-flush">
<li class="list-group-item"><em>Champs généraux</em></li>
<div class="card-body">
<div class="row">
<div class="col-md-6 offset-md-3">
<div class="form-group">
<input type="text" name="title" class="form-control" placeholder="Titre" value="{{ old('title') }}">
</div>
<div class="form-group">
<custom-ckeditor name="text" dbtext="{{ old('text') }}"></custom-ckeditor>
</div>
<div class="form-group">
<label>Photo * de type JPEG/PNG - 2Mo max. - ?? x ??px</label>
<input type="file" name="picture" accept="image/png, image/jpeg" required>
</div>
</div>
</div>
</div>
<li class="list-group-item"><em>Options de liens</em></li>
<div class="card-body">
<div class="row">
<div class="col-md-6 offset-md-3">
<div class="form-group">
<input type="text" class="form-control" name="link_label" placeholder="Nom du lien *" value="{{ old('link_label') }}" required>
</div>
<div class="form-group">
<input type="text" class="form-control" name="link" placeholder="Lien *" value="{{ old('link') }}" required>
</div>
<div class="form-group text-center">
<input class="form-check-input" type="checkbox" id="new_tab_cb" name="link_new_tab" @if (old('link_new_tab') !== null)checked @endif>
<label class="form-check-label" for="new_tab_cb">Ouvrir dans un nouvel onglet</label>
</div>
<div class="form-group text-center">
<input type="submit" class="btn btn-secondary" value="Ajouter">
</div>
</div>
</div>
</div>
</form>
</div>
@endsection

View file

@ -0,0 +1,169 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
Modification d'une slide pour l'accueil
<a href="{{route('bo.home-slider-pictures.index')}}" class="btn btn-sm btn-primary float-right ml-2">Retour</a>
<form action="{{route('bo.home-slider-pictures.destroy', $h->id)}}" method="POST" class="d-inline">
@method('DELETE')
@csrf
<input type="submit" class="btn btn-sm btn-danger float-right" value="Supprimer"
onclick="return confirm('Êtes-vous sûr(e) ?')">
</form>
</div>
<div class="card-body">
<form action="{{route('bo.home-slider-pictures.update', $h->id)}}" method="POST" enctype="multipart/form-data">
@method('PUT')
@csrf
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<ul class="list-group list-group-flush">
<li class="list-group-item"><em>Champs généraux</em></li>
<div class="card-body">
<div class="row">
<div class="col-md-10 offset-md-1">
<div class="form-group row">
<div class="form-group col-md-8">
<input type="text" class="form-control" name="catch_phrase" placeholder="Accroche *" value="{{$h->catch_phrase}}" required>
</div>
<div class="form-group col-md-4 row">
<label class="col-md-7 col-form-label">Couleur *</label>
<input type="color" class="form-control col-md-5" name="catch_color" value="{{$h->catch_color}}" required>
</div>
</div>
<div class="form-group row">
<div class="form-group col-md-8">
<input type="text" class="form-control" name="title" placeholder="Titre *" value="{{$h->title}}" required>
</div>
<div class="form-group col-md-4 row">
<label class="col-md-7 col-form-label">Couleur *</label>
<input type="color" class="form-control col-md-5" name="title_color" value="{{$h->title_color}}" required>
</div>
</div>
<div class="form-group">
<label>Visuel * de type JPEG/PNG - 2Mo max. - 1366 x 553px</label></br>
<input type="file" name="picture" accept="image/png, image/jpeg">
</br>
</br>
<img src="{{ asset($h->picture) }}" style="max-height: 200px;">
</div>
<div class="form-group">
<label>Visuel sur mobile * de type JPEG/PNG - 2Mo max. - 500 x 671px</label></br>
<input type="file" name="picture_r" accept="image/png, image/jpeg">
</br>
</br>
<img src="{{ asset($h->picture_r) }}" style="max-height: 200px;">
</div>
</div>
</div>
</div>
<li class="list-group-item"><em>Options de liens</em></li>
<div class="card-body">
<div class="row">
<div class="col-md-10 offset-md-1">
<div class="form-group">
<input type="text" class="form-control" name="link_label" placeholder="Nom du lien *" value="{{$h->link_label}}" required>
</div>
<div class="form-group row">
<div class="form-group col-md-8">
<input type="text" class="form-control" name="link" placeholder="Lien *" value="{{$h->link}}" required>
</div>
<div class="form-group col-md-4 row">
<label class="col-md-7 col-form-label">Couleur *</label>
<input type="color" class="form-control col-md-5" name="link_color" value="{{$h->link_color}}" required>
</div>
</div>
<div class="form-group">
<label>
@if ($h->new_tab === 1)
<input type="checkbox" name="new_tab" checked>
@else
<input type="checkbox" name="new_tab">
@endif
Ouvrir dans un nouvel onglet
</label>
</div>
</div>
</div>
</div>
<li class="list-group-item"><em>Paramètres de publications</em></li>
<div class="card-body">
<div class="row">
<div class="col-md-10 offset-md-1 text-center">
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::mon())) checked @endif>
{{ Days::mon() }}
</label>
</div>
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::tue())) checked @endif>
{{ Days::tue() }}
</label>
</div>
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::wed())) checked @endif>
{{ Days::wed() }}
</label>
</div>
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::thu())) checked @endif>
{{ Days::thu() }}
</label>
</div>
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::fri())) checked @endif>
{{ Days::fri() }}
</label>
</div>
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::sat())) checked @endif>
{{ Days::sat() }}
</label>
</div>
<div class="form-group form-check-inline">
<label>
<input type="checkbox" name="mon" @if($h->has(Days::sun())) checked @endif>
{{ Days::sun() }}
</label>
</div>
<div class="form-group">
<label>
@if ($h->status === 1)
<input type="checkbox" name="status" value="1" checked>
@else
<input type="checkbox" name="status" value="1">
@endif
Publié ?
</label>
</div>
<div class="form-group text-center">
<input type="submit" class="btn btn-secondary" value="Modifier">
</div>
</div>
</div>
</div>
</ul>
</form>
</div>
</div>
@endsection

View file

@ -0,0 +1,37 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
Slides de l'acceuil
<a href="{{route('bo.home-sliders.create')}}" class="btn btn-sm btn-primary float-right">Ajouter</a>
</div>
<div class="card-body">
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">Titre</th>
<th scope="col">Texte</th>
<th scope="col">Image</th>
<th scope="col">Lien</th>
<th scope="col">Publié ?</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($slides as $slide)
<tr>
<th>{{$slide->title}}</th>
<th>{{$slide->text}}</th>
<th>{{$slide->picture}}</th>
<th>{{$slide->link_label}}</th>
<th>{{$slide->status}}</th>
<td><a href="{{route('bo.home-sliders.edit', ['employee' => $slide->id])}}" class="btn btn-sm btn-primary">Éditer</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

View file

@ -38,10 +38,9 @@
</div>
</div>
</section>
<section class="work--main container flex">
<div class="milaceanous grid">
@foreach($secteurs as $secteur)
@foreach($secteurs_simples as $secteur)
<div class="milaceanous--bloc">
<h2 class="post-chapter">{{$secteur->name}}</h2>
@foreach($secteur->employees as $employee)
@ -53,382 +52,41 @@
</div>
</div>
@endforeach
@foreach($secteur->children as $subsecteur)
<div class="flex">
<h3 class="paragraph-title">{{$subsecteur->name}}</h3>
@foreach($subsecteur->employees as $employee)
<div class="bloc--img flex">
<img src="{{ asset($employee->photo) }}" alt="">
<div class="bloc--txt flex">
<p>{{$employee->firstname}} {{$employee->lastname}}</p>
<p class="function">{{$employee->job_title}}</p>
</div>
@endforeach
</div>
@foreach($secteurs_complexes as $secteur)
<div class="flex">
<div class="milaceanous--bloc flex">
<h2 class="post-chapter"><h2 class="post-chapter">{{$secteur->name}}</h2></h2>
@foreach($secteur->employees as $employee)
<div class="bloc--img flex">
<img src="{{ asset($employee->photo) }}" alt="">
<div class="bloc--txt flex">
<p>{{$employee->firstname}} {{$employee->lastname}}</p>
<p class="function">{{$employee->job_title}}</p>
</div>
</div>
@endforeach
<div class="sub-business flex">
@foreach($secteur->children as $subsecteur)
<div class="geo--bloc flex">
<h3 class="paragraph-title">{{$subsecteur->name}}</h3>
@foreach($subsecteur->employees as $employee)
<div class="bloc--img flex">
<img src="{{ asset($employee->photo) }}" alt="">
<div class="bloc--txt flex">
<p>{{$employee->firstname}} {{$employee->lastname}}</p>
<p class="function">{{$employee->job_title}}</p>
</div>
</div>
@endforeach
</div>
@endforeach
</div>
@endforeach
</div>
@endforeach
{{--
<div class="milaceanous--bloc">
<h2 class="post-chapter">Direction</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Gaël Le Conte</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="milaceanous--bloc">
<h2 class="post-chapter">Responsable Qualité RSE</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="milaceanous--bloc">
<h2 class="post-chapter">Magasin LISA</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="milaceanous--bloc">
<h2 class="post-chapter">Secteur Comptabilité</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Franck Valot</p>
<p class="function">Responsable Administratif et Financier</p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignon</p>
<p class="function">Comptabilité Fournisseurs</p>
</div>
</div>
</div>
<div class="milaceanous--bloc">
<h2 class="post-chapter">Secteur Céréales</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Arnaud Plut</p>
<p class="function">Responsable Céréales & Collecte</p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Charline Lechat</p>
<p class="function">Assistante céréales<br>Exécution durabilité 2BSvs</p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Lydie Chapin</p>
<p class="function">Assistante céréales et appros</p>
</div>
</div>
</div>
<div class="milaceanous--bloc">
<h2 class="post-chapter">Secteur Appros</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Thierry Foulard</p>
<p class="function">Responsable Appros</p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Claire Tacheau</p>
<p class="function">Assistante Commerciale</p>
</div>
</div>
</div>
<div class="milaceanous--bloc">
<h2 class="post-chapter">Secteur Maintenance</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Frédéric Bachelier</p>
<p class="function"></p>
</div>
</div>
</div>
</div>
<div class="business flex">
<div class="milaceanous--bloc flex">
<h2 class="post-chapter">Secteur Commercial</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function">Responsable Commercial</p>
</div>
</div>
</div>
<div class="sub-business flex">
<div class="geo--bloc flex">
<h3 class="paragraph-title">Marolles Les Brault</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magdzdzdalie Cheidzdnon</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magaliedzzd Cheignon</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignondzdz</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Mamers</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignon zdzd</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Chdzeignon</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Cherré</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalidzedzde Cheignon</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignonszzdzezdzdzd</p>
<p class="function"></p>
</div>
</div>
</div>
</div>
</div>
<div class="silo flex">
<h2 class="post-chapter">Secteur Silos</h2>
<div class="silo--blocs flex">
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Marolles Les Brault</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignon</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Mamers</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignon</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Moncé</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Parmentier</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Pignon-Durenad</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie-Anne Cheignon</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Nogent Le Bernard</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Doricel</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Les Mées</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy Picard</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Cheré</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Henry Parmentier</p>
<p class="function"></p>
</div>
</div>
</div>
<div class="geo--bloc flex">
<h3 class="paragraph-title">Silo Thoigné</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jérémy-Loudabi Parmentier</p>
<p class="function"></p>
</div>
</div>
</div>
</div>
</div>
<div class="logistique flex">
<div class="milaceanous--bloc">
<h2 class="post-chapter">Secteur Logistique</h2>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Hubert Jeusselin</p>
<p class="function">Responsable Transports</p>
</div>
</div>
</div>
<div class="sub-logistique flex">
<div class="logistique--bloc flex">
<h3 class="paragraph-title">Chauffeurs</h3>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magdzdzdalie Cheidzdnon</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magaliedzzd Cheignon</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignondzdz</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignondzdz</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Cheignondzdz</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Jean-Hubert De La Tourette</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Pascal Cheignondzdz</p>
<p class="function"></p>
</div>
</div>
<div class="bloc--img flex">
<img src="{{ asset('images/work-perso-01.jpg') }}" alt="">
<div class="bloc--txt flex">
<p>Magalie Deroin</p>
<p class="function"></p>
</div>
</div>
</div>
</div>
</div>
--}}
</div>
@endforeach
</section>
</div>
@endsection

View file

@ -14,23 +14,18 @@
</nav>
<div class="right-menu">
<div class="connect-contain flex">
<p class="active">Bienvenue Charles-Henry</p>
<div class="connect"><a href="#" class="first-btn">&nbsp;</a></div>
@if (Auth::guard('web')->check())
<p class="active">Bienvenue {{ Auth::user()->firstname }}</p>
@endif
<div class="connect"><a href="{{ route('bo.dashboard') }}" class="first-btn">&nbsp;</a></div>
@if (Auth::guard('web')->check())
<div class="disconnect active">
<a href="#">
<!-- <svg version="1.1" id="svg-disconnect" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<g>
<path d="M257,0C116.39,0,0,114.39,0,255s116.39,257,257,257s255-116.39,255-257S397.61,0,257,0z M383.22,338.79
c11.7,11.7,11.7,30.73,0,42.44c-11.61,11.6-30.64,11.79-42.44,0L257,297.42l-85.79,83.82c-11.7,11.7-30.73,11.7-42.44,0
c-11.7-11.7-11.7-30.73,0-42.44l83.8-83.8l-83.8-83.8c-11.7-11.71-11.7-30.74,0-42.44c11.71-11.7,30.74-11.7,42.44,0L257,212.58
l83.78-83.82c11.68-11.68,30.71-11.72,42.44,0c11.7,11.7,11.7,30.73,0,42.44l-83.8,83.8L383.22,338.79z"/>
</g>
</g>
</svg> -->
<img src="{{ asset('images/stop.png') }}" alt="Déconnexion">
</a>
<form id="logout-form" action="{{route('logout')}}" method="POST">
@csrf
<input type="image" src="{{ asset('images/stop.png') }}" alt="Déconnexion" style="max-height: 30px;" />
</form>
</div>
@endif
</div>
<form action="{{ route('searchresults') }}" method="post" class="search flex">
@csrf
@ -39,7 +34,7 @@
</form>
</div>
<div class="right-menu-mobile flex">
<a href="#" class="mobile-connect active">
<a href="{{ route('bo.dashboard') }}" class="mobile-connect active">
<svg version="1.1" id="svg-connect" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="510px" height="510px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;" xml:space="preserve">
<g>
<g id="account-circle">
@ -50,19 +45,13 @@
</g>
</svg>
</a>
<a href="#" class="mobile-disconnect">
<!-- <svg version="1.1" id="svg-disconnect" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<g>
<path d="M257,0C116.39,0,0,114.39,0,255s116.39,257,257,257s255-116.39,255-257S397.61,0,257,0z M383.22,338.79
c11.7,11.7,11.7,30.73,0,42.44c-11.61,11.6-30.64,11.79-42.44,0L257,297.42l-85.79,83.82c-11.7,11.7-30.73,11.7-42.44,0
c-11.7-11.7-11.7-30.73,0-42.44l83.8-83.8l-83.8-83.8c-11.7-11.71-11.7-30.74,0-42.44c11.71-11.7,30.74-11.7,42.44,0L257,212.58
l83.78-83.82c11.68-11.68,30.71-11.72,42.44,0c11.7,11.7,11.7,30.73,0,42.44l-83.8,83.8L383.22,338.79z"/>
</g>
</g>
</svg> -->
<img src="{{ asset('images/stop.png') }}" alt="Déconnexion">
</a>
@if (Auth::guard('web')->check())
<form id="logout-form-mobile" action="{{route('logout')}}" method="POST">
@csrf
<input type="image" src="{{ asset('images/stop.png') }}" alt="Déconnexion" style="max-height: 30px;" />
</form>
@endif
<a href="#" class="mobile-search">
<svg version="1.1" id="svg-search" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="590.556px" height="590.556px" viewBox="0 0 590.556 590.556" style="enable-background:new 0 0 590.556 590.556;" xml:space="preserve">
<g>

View file

@ -9,14 +9,6 @@
<title>{{ config('app.name', 'Jeusselin') }} Back Office</title>
<!-- Scripts -->
{{-- TODO : Ajouter jQuery dans app.js
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>--}}
{{-- TODO : Ajouter CKEditor dans app.js --}}
<script src="https://cdn.ckeditor.com/ckeditor5/23.0.0/classic/ckeditor.js"></script>
{{-- TODO : Voir l'inclusion de Font Awesome, pour le moment c'est fait avec mon compte FA
<script src="https://kit.fontawesome.com/2327d60f96.js" crossorigin="anonymous"></script> --}}
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
@ -83,14 +75,14 @@
<a class="dropdown-item" href="{{route('bo.employees.index')}}">Employés</a>
</div>
</li>
<a class="nav-link" href="{{route('bo.home-sliders.index')}}">Slider de l'accueil</a>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button">Drop</a>
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button">Articles</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#_">Item 1</a>
<a class="dropdown-item" href="#_">Item 2</a>
<a class="dropdown-item" href="{{route('bo.articles.index')}}">Tous les Articles</a>
<a class="dropdown-item" href="{{route('bo.articles.create')}}">Ajouter</a>
</div>
</li>
<a class="nav-link" href="#_">Ressource 2</a>
<a class="nav-link" href="{{route('home')}}" target="_blank">Aller sur le front</a>
</nav>
</div>

View file

@ -5,7 +5,7 @@ use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Bo\DashboardController;
use App\Http\Controllers\Bo\BusinessSectorsController;
//use App\Http\Controllers\Bo\UsersController;
//use App\Http\Controllers\Bo\HomeSlidersController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\AboutUsController;
@ -45,8 +45,11 @@ Route::namespace('App\Http\Controllers\Bo')
Route::resources([
'users' => UsersController::class,
'employees' => EmployeesController::class,
//'business-sector' => BusinessSectorsController::class,
'home-sliders' => HomeSlidersController::class,
'articles' => ArticlesController::class,
]);
// Sliders
//Route::get('/home-sliders/change-order/{id}/{action}', [HomeSliderPictures::class,'changeOrder'])->name('home-slider-pictures.change-order');
Route::get('/business-sector', [BusinessSectorsController::class, 'index'])->name('business-sector.index');
Route::prefix('ajax')
->name('ajx.')