SYNC 11 Start Re7 Teaser Page ok
This commit is contained in:
parent
da31943f11
commit
f1b90801da
17 changed files with 274 additions and 243 deletions
|
|
@ -5,7 +5,7 @@
|
|||
``` Bash
|
||||
cp .env.example .env
|
||||
php artisan key:generate /!\ bien sauvegarder la key
|
||||
php artisan migrate:fresh --step --seed
|
||||
php artisan migrate:fresh --step
|
||||
# Seulement pour developper un theme par exemple
|
||||
php artisan db:seed --class DevelopmentSeeder
|
||||
php artisan uwil:user:create
|
||||
|
|
|
|||
|
|
@ -1,33 +1,27 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Fo;
|
||||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Settings;
|
||||
use App\Models\Reduction;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class Re7Controller extends Controller
|
||||
{
|
||||
/**
|
||||
* index
|
||||
* Re7Controller
|
||||
*
|
||||
* @return \Illuminate\View\View
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
public function __construct()
|
||||
{
|
||||
return view('re7');
|
||||
}
|
||||
|
||||
/**
|
||||
* teaser
|
||||
*
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function teaser()
|
||||
{
|
||||
$settings = app(Settings::class)
|
||||
->select('start_date', 'end_date', 'activated_teaser', 'teaser_end_activity')->first();
|
||||
return view('theme::teaser', compact('settings'));
|
||||
$this->middleware(function (Request $request, \Closure $next) {
|
||||
$this->authorize('fo.showRe7');
|
||||
return $next($request);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -64,7 +64,6 @@ class Kernel extends HttpKernel
|
|||
'game-date' => \App\Http\Middleware\GameCheckDate::class,
|
||||
'is-admin' => \App\Http\Middleware\IsAdmin::class,
|
||||
'is-super-admin' => \App\Http\Middleware\IsSuperAdmin::class,
|
||||
're7' => \App\Http\Middleware\Re7Middleware::class,
|
||||
'signed' => \App\Http\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class Re7Middleware
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle(Request $request, Closure $next)
|
||||
{
|
||||
if (config('app.env') === 'production') {
|
||||
return redirect()->route('fo.homepage');
|
||||
}
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,13 @@ class AuthServiceProvider extends ServiceProvider
|
|||
return $user->role === RoleEnum::conceptor;
|
||||
});
|
||||
|
||||
Gate::define(
|
||||
'fo.showRe7',
|
||||
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass
|
||||
fn (User $user) => !app()->environment(['production']) and
|
||||
$user->role->value() <= RoleEnum::marketing->value()
|
||||
);
|
||||
|
||||
Gate::define(
|
||||
'fo.showProducts',
|
||||
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass
|
||||
|
|
|
|||
|
|
@ -21,21 +21,21 @@ class ViewServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot()
|
||||
{
|
||||
// * View shares
|
||||
// ! Add view file pathes (also needed for console xml job).
|
||||
View::addNamespace('back', resource_path('views'));
|
||||
View::addNamespace('theme', resource_path('theme/mounted/views'));
|
||||
|
||||
$appInfos = Cache::remember('composer', 360, function () {
|
||||
return json_decode(File::get(\app_path('../composer.json')));
|
||||
});
|
||||
// Share composer.json infos.
|
||||
if (isset($appInfos->name) and isset($appInfos->version)) {
|
||||
View::share('cpsr_name', $appInfos->name);
|
||||
View::share('cpsr_version', $appInfos->version);
|
||||
}
|
||||
|
||||
if (!app()->runningInConsole()) {
|
||||
// * View shares
|
||||
// ! Add view file pathes (also needed for console xml job).
|
||||
View::addNamespace('back', resource_path('views'));
|
||||
View::addNamespace('theme', resource_path('theme/mounted/views'));
|
||||
|
||||
$appInfos = Cache::remember('composer', 360, function () {
|
||||
return json_decode(File::get(\app_path('../composer.json')));
|
||||
});
|
||||
// Share composer.json infos.
|
||||
if (isset($appInfos->name) and isset($appInfos->version)) {
|
||||
View::share('cpsr_name', $appInfos->name);
|
||||
View::share('cpsr_version', $appInfos->version);
|
||||
}
|
||||
|
||||
// * FORCE BOOTSTRAP PAGINATOR (or custom if in front)
|
||||
// Early boot, request wont be filled as expected.
|
||||
if (collect(explode('/', \request()->getPathInfo()))->get(1) === 'bo') {
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ class CreateCustomersTable extends Migration
|
|||
$table->string('email_verify_token')->nullable()
|
||||
->comment('Token pour vérification de mail');
|
||||
$table->timestamp('email_verified_at')->nullable()->comment('Le mail de ce client est vérifié ?');
|
||||
$table->timestamp('last_connection')->nullable()->comment('Date de dernière connexion');
|
||||
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
<?php
|
||||
|
||||
use Database\Seeders\Mandatory\StaticPageSeeder;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
|
|
@ -30,9 +28,6 @@ return new class extends Migration
|
|||
|
||||
$table->timestamps();
|
||||
});
|
||||
Artisan::call('db:seed', [
|
||||
'class' => StaticPageSeeder::class
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
30
database/migrations/2030_01_01_000001_mandatory_seeds.php
Normal file
30
database/migrations/2030_01_01_000001_mandatory_seeds.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
use Database\Seeders\MandatorySeeder;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Artisan::call('db:seed', [
|
||||
'class' => MandatorySeeder::class
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
// Do nothing.
|
||||
}
|
||||
};
|
||||
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Database\Seeders\Mandatory\SettingsSeeder;
|
||||
use Database\Seeders\Mandatory\StaticPageSeeder;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
|
|
@ -17,8 +15,9 @@ class DatabaseSeeder extends Seeder
|
|||
{
|
||||
// * Mandatory Seeders
|
||||
$this->call([
|
||||
SettingsSeeder::class,
|
||||
StaticPageSeeder::class
|
||||
MandatorySeeder::class,
|
||||
DevelopmentSeeder::class,
|
||||
UserSeeder::class
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
24
database/seeders/MandatorySeeder.php
Normal file
24
database/seeders/MandatorySeeder.php
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Database\Seeders\Mandatory\SettingsSeeder;
|
||||
use Database\Seeders\Mandatory\StaticPageSeeder;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class MandatorySeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// * Mandatory Seeders
|
||||
$this->call([
|
||||
SettingsSeeder::class,
|
||||
StaticPageSeeder::class
|
||||
]);
|
||||
}
|
||||
}
|
||||
1
resources/sass/vendor/_bootstrap.scss
vendored
1
resources/sass/vendor/_bootstrap.scss
vendored
|
|
@ -38,6 +38,7 @@
|
|||
@import "bootstrap/scss/card";
|
||||
@import "bootstrap/scss/breadcrumb";
|
||||
@import "bootstrap/scss/badge";
|
||||
@import "bootstrap/scss/offcanvas";
|
||||
|
||||
// 6. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss`
|
||||
@import "bootstrap/scss/utilities/api";
|
||||
|
|
|
|||
|
|
@ -5,15 +5,22 @@
|
|||
{{ config('app.name', 'Laravel') }}
|
||||
</a>
|
||||
@auth('backend')
|
||||
<button class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" type="button"
|
||||
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
|
||||
<button class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-supported-content" type="button"
|
||||
aria-controls="navbar-supported-content" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
@endauth
|
||||
|
||||
<div class="navbar-collapse collapse" id="navbarSupportedContent">
|
||||
<div class="navbar-collapse collapse" id="navbar-supported-content">
|
||||
<!-- Left Side Of Navbar -->
|
||||
@include('back::layouts.nav-list')
|
||||
@auth('backend')
|
||||
@include('back::layouts.nav-list')
|
||||
@endauth
|
||||
|
||||
@can('fo.showRe7')
|
||||
<button class="btn btn-warning mx-auto" data-bs-toggle="offcanvas" data-bs-target="#offcanvas-re7"
|
||||
aria-controls="offcanvas-re7">{{ __('Recettage') }}</button>
|
||||
@endcan
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ms-auto">
|
||||
|
|
@ -81,3 +88,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@can('fo.showRe7')
|
||||
@include('back::layouts.re7-offcanvas')
|
||||
@endcan
|
||||
|
|
|
|||
|
|
@ -1,141 +1,139 @@
|
|||
@auth('backend')
|
||||
<ul class="navbar-nav me-auto">
|
||||
<ul class="navbar-nav me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.dashboard')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.dashboard') }}"
|
||||
title="{{ __('Revenir à l\'accueil') }}">
|
||||
{{ __('Accueil') }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@superadmin
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.instant-win') ||
|
||||
request()->routeIs('bo.winners-list') ||
|
||||
request()->routeIs('bo.banned_ips.*') ||
|
||||
request()->routeIs('bo.codes')) active @endif dropdown-toggle" id="navbar-dropdown-game" data-bs-toggle="dropdown"
|
||||
href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('Gestion du jeu') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbar-dropdown-game">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.instant-win')) active @endif"
|
||||
href="{{ route('bo.instant-win') }}">{{ __('Instant gagnants') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.winners-list')) active @endif"
|
||||
href="{{ route('bo.winners-list') }}">{{ __('Liste des gagnants') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.banned_ips.*')) active @endif"
|
||||
href="{{ route('bo.banned_ips.index') }}">{{ __('IP Bannies') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.codes')) active @endif"
|
||||
href="{{ route('bo.codes') }}">{{ __('Codes uniques') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.dashboard')) active @endif" data-bs-toggle="tooltip" href="{{ route('bo.dashboard') }}"
|
||||
title="{{ __('Revenir à l\'accueil') }}">
|
||||
{{ __('Accueil') }}
|
||||
<a class="nav-link @if (request()->routeIs('bo.prizes.*')) active @endif" id="navbarDropdownPrizes"
|
||||
href="{{ route('bo.prizes.index') }}">
|
||||
{{ __('Lots') }}
|
||||
</a>
|
||||
</li>
|
||||
@endsuperadmin
|
||||
|
||||
@superadmin
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.instant-win') ||
|
||||
request()->routeIs('bo.winners-list') ||
|
||||
request()->routeIs('bo.banned_ips.*') ||
|
||||
request()->routeIs('bo.codes')) active @endif dropdown-toggle" id="navbarDropdownGame" data-bs-toggle="dropdown"
|
||||
href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('Gestion du jeu') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownGame">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.instant-win')) active @endif"
|
||||
href="{{ route('bo.instant-win') }}">{{ __('Instant gagnants') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.winners-list')) active @endif"
|
||||
href="{{ route('bo.winners-list') }}">{{ __('Liste des gagnants') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.banned_ips.*')) active @endif"
|
||||
href="{{ route('bo.banned_ips.index') }}">{{ __('IP Bannies') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.codes')) active @endif"
|
||||
href="{{ route('bo.codes') }}">{{ __('Codes uniques') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if (request()->routeIs('bo.prizes.*')) active @endif" id="navbarDropdownPrizes"
|
||||
href="{{ route('bo.prizes.index') }}">
|
||||
{{ __('Lots') }}
|
||||
</a>
|
||||
</li>
|
||||
@endsuperadmin
|
||||
@admin
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.ranges.*') || request()->routeIs('bo.products.*')) active @endif dropdown-toggle" id="navbarDropdownProducts"
|
||||
data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('Produits') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownProducts">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.ranges.*')) active @endif"
|
||||
href="{{ route('bo.ranges.index') }}">{{ __('Gammes') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.fproducts.*')) active @endif"
|
||||
href="{{ route('bo.products.index') }}">{{ __('Produits porteurs') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endadmin
|
||||
@superadmin
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.static_pages.*')) ) active @endif dropdown-toggle" id="navbarDropdownContents"
|
||||
data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('Contenus') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownContents">
|
||||
<li>
|
||||
<a class="dropdown-item @if (optional(request()->route()->parameter('static_page'))->type == \App\Enums\StaticPageType::legals) active @endif"
|
||||
href="{{ route('bo.static_pages.edit', \App\Enums\StaticPageType::legals) }}">{{ __('Mentions légales') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (optional(request()->route()->parameter('static_page'))->type == \App\Enums\StaticPageType::confidentiality) active @endif"
|
||||
href="{{ route('bo.static_pages.edit', \App\Enums\StaticPageType::confidentiality) }}">{{ __('Charte') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (optional(request()->route()->parameter('static_page'))->type == \App\Enums\StaticPageType::rules) active @endif"
|
||||
href="{{ route('bo.static_pages.edit', \App\Enums\StaticPageType::rules) }}">{{ __('Règlement') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.faq-themes.*') || request()->routeIs('bo.faq-questions.*')) ) active @endif dropdown-toggle" id="navbarDropdownFaq"
|
||||
data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('FAQ') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownFaq">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.faq-themes.*')) active @endif"
|
||||
href="{{ route('bo.faq-themes.index') }}">{{ __('Thèmes') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.faq-questions.*')) active @endif"
|
||||
href="{{ route('bo.faq-questions.index') }}">{{ __('Questions') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endsuperadmin
|
||||
|
||||
@admin
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.ranges.*') || request()->routeIs('bo.products.*')) active @endif dropdown-toggle" id="navbarDropdownProducts"
|
||||
data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('Produits') }} <span class="caret"></span>
|
||||
@canAny(['isConceptor', 'viewAny'], \App\Models\User::class)
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.users.*') || request()->routeIs('bo.activity_logs.*') || request()->routeIs('bo.settings.*')) ) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button"
|
||||
aria-expanded="false">
|
||||
{{ __('Avancé') }}
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownProducts">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.ranges.*')) active @endif"
|
||||
href="{{ route('bo.ranges.index') }}">{{ __('Gammes') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.fproducts.*')) active @endif"
|
||||
href="{{ route('bo.products.index') }}">{{ __('Produits porteurs') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endadmin
|
||||
@superadmin
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.static_pages.*')) ) active @endif dropdown-toggle" id="navbarDropdownContents"
|
||||
data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('Contenus') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownContents">
|
||||
<li>
|
||||
<a class="dropdown-item @if (optional(request()->route()->parameter('static_page'))->type == \App\Enums\StaticPageType::legals) active @endif"
|
||||
href="{{ route('bo.static_pages.edit', \App\Enums\StaticPageType::legals) }}">{{ __('Mentions légales') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (optional(request()->route()->parameter('static_page'))->type == \App\Enums\StaticPageType::confidentiality) active @endif"
|
||||
href="{{ route('bo.static_pages.edit', \App\Enums\StaticPageType::confidentiality) }}">{{ __('Charte') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (optional(request()->route()->parameter('static_page'))->type == \App\Enums\StaticPageType::rules) active @endif"
|
||||
href="{{ route('bo.static_pages.edit', \App\Enums\StaticPageType::rules) }}">{{ __('Règlement') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.faq-themes.*') || request()->routeIs('bo.faq-questions.*')) ) active @endif dropdown-toggle" id="navbarDropdownFaq"
|
||||
data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
||||
{{ __('FAQ') }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="navbarDropdownFaq">
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.faq-themes.*')) active @endif"
|
||||
href="{{ route('bo.faq-themes.index') }}">{{ __('Thèmes') }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.faq-questions.*')) active @endif"
|
||||
href="{{ route('bo.faq-questions.index') }}">{{ __('Questions') }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endsuperadmin
|
||||
<ol class="dropdown-menu">
|
||||
@can('viewAny', \App\Models\User::class)
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.users.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.users.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::plural(__('models.classes.user'))]) }}">
|
||||
{{ Str::of(__('models.classes.user'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
||||
@canAny(['isConceptor', 'viewAny'], \App\Models\User::class)
|
||||
<li class="nav-item">
|
||||
<div class="dropdown">
|
||||
<a class="nav-link @if (request()->routeIs('bo.users.*') || request()->routeIs('bo.activity_logs.*') || request()->routeIs('bo.settings.*')) ) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button"
|
||||
aria-expanded="false">
|
||||
{{ __('Avancé') }}
|
||||
</a>
|
||||
<ol class="dropdown-menu">
|
||||
@can('viewAny', \App\Models\User::class)
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.users.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.users.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => Str::plural(__('models.classes.user'))]) }}">
|
||||
{{ Str::of(__('models.classes.user'))->plural()->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
||||
@can('isConceptor')
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.settings.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.settings.edit', \App\Models\Settings::first()) }}" title="{{ __('models.classes.settings') }}">
|
||||
{{ __('models.classes.settings') }}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.activity_logs.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.activity_logs.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.activity_log', '*')]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.activity_log', '*'))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ol>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ul>
|
||||
@endauth
|
||||
@can('isConceptor')
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.settings.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.settings.edit', \App\Models\Settings::first()) }}" title="{{ __('models.classes.settings') }}">
|
||||
{{ __('models.classes.settings') }}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item @if (request()->routeIs('bo.activity_logs.*')) active @endif" data-bs-toggle="tooltip"
|
||||
href="{{ route('bo.activity_logs.index') }}"
|
||||
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.activity_log', '*')]) }}">
|
||||
{{ Str::of(trans_choice('models.classes.activity_log', '*'))->ucfirst() }}
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ol>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
</ul>
|
||||
|
|
|
|||
28
resources/views/layouts/re7-offcanvas.blade.php
Normal file
28
resources/views/layouts/re7-offcanvas.blade.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<div class="offcanvas offcanvas-start" id="offcanvas-re7" data-bs-scroll="true" aria-labelledby="offcanvas-re7-label" tabindex="-1">
|
||||
<div class="offcanvas-header">
|
||||
<h5 class="offcanvas-title" id="offcanvas-re7-label">{{ __('Menu de recettage') }}</h5>
|
||||
<button class="btn-close" data-bs-dismiss="offcanvas" type="button" aria-label="{{ __('Fermer le menu de recettage') }}"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body">
|
||||
<strong class="d-block mb-5">{{ __('Liste de liens pour visualiser les pages du jeu.') }}</strong>
|
||||
<div class="list-group">
|
||||
<a class="list-group-item list-group-item-action" href="{{ route('re7.teaser') }}"
|
||||
title="{{ __('Afficher la page de teaser dans un nouvel onglet') }}" target="_blank">{{ __('Teaser') }}</a>
|
||||
<a class="list-group-item list-group-item-action" href="{{ route('re7.br') }}"
|
||||
title="{{ __('Afficher un bon de réduction dans un nouvel onglet') }}" target="_blank">{{ __('Bon de réduction') }}</a>
|
||||
<div class="list-group-item">
|
||||
<div class="list-group">
|
||||
@foreach (\App\Models\Prize::getCached() as $prize)
|
||||
<a class="list-group-item list-group-item-action" href="{{ route('re7.prize', ['prize' => $prize]) }}"
|
||||
title="{{ __('Afficher la page de gain du lot :name dans un nouvel onglet', [
|
||||
'name' => __('Lot :name', ['name' => $prize->label_one]),
|
||||
]) }}"
|
||||
target="_blank">
|
||||
{{ __('Lot :name', ['name' => $prize->label_one]) }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
@extends('back::layout')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ __('Dashboard') }} - RE7</div>
|
||||
|
||||
<div class="card-body">
|
||||
<a href="/re7/teaser" target="_blank">Teaser</a>
|
||||
<br>
|
||||
<a href="/re7/mail-gain" target="_blank">Mail gain lot</a>
|
||||
<br>
|
||||
<a href="/re7/mail-reduction" target="_blank">Mail gain BR</a>
|
||||
<br>
|
||||
<a href="/re7/br" target="_blank">Page gain BR</a>
|
||||
<br>
|
||||
<a href="/re7/gain1" target="_blank">Page gain Lot 1</a>
|
||||
<br>
|
||||
<a href="/re7/gain2" target="_blank">Page gain Lot 2</a>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,16 +1,12 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\Fo\Re7Controller;
|
||||
use App\Http\Controllers\Bo\Re7Controller;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::prefix('re7')->name('re7.')->middleware(['re7'])->group(function () {
|
||||
Route::get('/', [Re7Controller::class, 'index'])->name('index');
|
||||
Route::get('/teaser', [Re7Controller::class, 'teaser'])->name('teaser');
|
||||
Route::get('/mail-gain', [Re7Controller::class, 'prizeMail'])->name('mail-gain');
|
||||
Route::get('/mail-reduction', [Re7Controller::class, 'reductionMail'])->name('mail-reduction');
|
||||
Route::get('/br', [Re7Controller::class, 'br'])->name('br');
|
||||
// phpcs:ignore
|
||||
// TODO : Rendre dynamique la partie gain par rapport au BO.
|
||||
Route::get('/gain1', [Re7Controller::class, 'gain1'])->name('gain1');
|
||||
Route::get('/gain2', [Re7Controller::class, 'gain2'])->name('gain2');
|
||||
Route::prefix('re7')->name('re7.')->middleware(['auth:backend'])->group(function () {
|
||||
Route::view('teaser', 'theme::pages.teaser')->name('teaser');
|
||||
// Route::get('mail-gain', [Re7Controller::class, 'prizeMail'])->name('mail-gain');
|
||||
// Route::get('mail-reduction', [Re7Controller::class, 'reductionMail'])->name('mail-reduction');
|
||||
Route::get('br', [Re7Controller::class, 'br'])->name('br');
|
||||
Route::get('gain/{prize}', [Re7Controller::class, 'prize'])->name('prize');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue