diff --git a/app/Http/Controllers/Bo/CodesController.php b/app/Http/Controllers/Bo/CodeController.php similarity index 98% rename from app/Http/Controllers/Bo/CodesController.php rename to app/Http/Controllers/Bo/CodeController.php index 23f7224..2c66bfd 100644 --- a/app/Http/Controllers/Bo/CodesController.php +++ b/app/Http/Controllers/Bo/CodeController.php @@ -13,7 +13,7 @@ use App\Models\Settings; use Illuminate\Support\Facades\Queue; use Kwaadpepper\Serial\Exceptions\SerialCasterException; -class CodesController extends Controller +class CodeController extends Controller { /** * Show code form to generate and export diff --git a/app/Http/Controllers/Bo/FaqQuestionsController.php b/app/Http/Controllers/Bo/FaqQuestionController.php similarity index 99% rename from app/Http/Controllers/Bo/FaqQuestionsController.php rename to app/Http/Controllers/Bo/FaqQuestionController.php index bdc01b8..89708f4 100644 --- a/app/Http/Controllers/Bo/FaqQuestionsController.php +++ b/app/Http/Controllers/Bo/FaqQuestionController.php @@ -11,7 +11,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; -class FaqQuestionsController extends Controller +class FaqQuestionController extends Controller { /** * Display a listing of the resource. diff --git a/app/Http/Controllers/Bo/FaqThemesController.php b/app/Http/Controllers/Bo/FaqThemeController.php similarity index 99% rename from app/Http/Controllers/Bo/FaqThemesController.php rename to app/Http/Controllers/Bo/FaqThemeController.php index 74616b3..6b1b5b8 100644 --- a/app/Http/Controllers/Bo/FaqThemesController.php +++ b/app/Http/Controllers/Bo/FaqThemeController.php @@ -10,7 +10,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; -class FaqThemesController extends Controller +class FaqThemeController extends Controller { /** * Display a listing of the resource. diff --git a/app/Http/Controllers/Bo/PrizesController.php b/app/Http/Controllers/Bo/PrizeController.php similarity index 97% rename from app/Http/Controllers/Bo/PrizesController.php rename to app/Http/Controllers/Bo/PrizeController.php index a12b8be..2320f53 100644 --- a/app/Http/Controllers/Bo/PrizesController.php +++ b/app/Http/Controllers/Bo/PrizeController.php @@ -11,7 +11,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; -class PrizesController extends Controller +class PrizeController extends Controller { /** * Display a listing of the resource. @@ -81,14 +81,14 @@ class PrizesController extends Controller ->route('bo.prizes.edit', $prize) ->with('success', trans( 'crud.messages.has_been_created', - ['model' => Str::singular(__('models.classes.prizes'))] + ['model' => Str::singular(__('models.classes.prize'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_created', - ['model' => Str::singular(__('models.classes.prizes'))] + ['model' => Str::singular(__('models.classes.prize'))] )); }); } @@ -124,14 +124,14 @@ class PrizesController extends Controller ->route('bo.prizes.edit', $prize) ->with('success', trans( 'crud.messages.has_been_updated', - ['model' => Str::singular(__('models.classes.prizes'))] + ['model' => Str::singular(__('models.classes.prize'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_updated', - ['model' => Str::singular(__('models.classes.prizes'))] + ['model' => Str::singular(__('models.classes.prize'))] )); }); } @@ -150,14 +150,14 @@ class PrizesController extends Controller ->route('bo.prizes.index') ->with('success', __( 'crud.messages.has_been_deleted', - ['model' => Str::singular(__('models.classes.prizes'))] + ['model' => Str::singular(__('models.classes.prize'))] )); } return redirect() ->back() ->with('error', __( ':crud.messages.cannot_be_deleted', - ['model' => Str::singular(__('models.classes.prizes'))] + ['model' => Str::singular(__('models.classes.prize'))] )); }); } diff --git a/app/Http/Controllers/Bo/ProductsController.php b/app/Http/Controllers/Bo/ProductController.php similarity index 95% rename from app/Http/Controllers/Bo/ProductsController.php rename to app/Http/Controllers/Bo/ProductController.php index 271fd8d..b8f50d5 100644 --- a/app/Http/Controllers/Bo/ProductsController.php +++ b/app/Http/Controllers/Bo/ProductController.php @@ -11,7 +11,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; -class ProductsController extends Controller +class ProductController extends Controller { /** * Display a listing of the resource. @@ -22,7 +22,7 @@ class ProductsController extends Controller public function index(Request $request): \Illuminate\Contracts\View\View { /** @var \Illuminate\Database\Eloquent\Builder $productModels */ - $productModels = Product::query(); + $productModels = Product::query()->with('range'); /** @var string $search Search field */ $search = $request->search; @@ -32,14 +32,12 @@ class ProductsController extends Controller $search, null, 'name', - 'no_art', 'code_ean', ); } $searchFields = \sprintf( - '%s, %s, %s ...', + '%s, %s ...', Str::ucfirst(__('validation.attributes.name')), - __('validation.custom.no_art'), __('validation.custom.ean_code'), ); @@ -90,14 +88,14 @@ class ProductsController extends Controller ->route('bo.products.edit', $product) ->with('success', trans( 'crud.messages.has_been_created', - ['model' => Str::singular(__('models.classes.products'))] + ['model' => Str::singular(__('models.classes.product'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_created', - ['model' => Str::singular(__('models.classes.products'))] + ['model' => Str::singular(__('models.classes.product'))] )); }); } @@ -133,14 +131,14 @@ class ProductsController extends Controller ->route('bo.products.edit', $product) ->with('success', trans( 'crud.messages.has_been_updated', - ['model' => Str::singular(__('models.classes.products'))] + ['model' => Str::singular(__('models.classes.product'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_updated', - ['model' => Str::singular(__('models.classes.products'))] + ['model' => Str::singular(__('models.classes.product'))] )); }); } @@ -159,14 +157,14 @@ class ProductsController extends Controller ->route('bo.products.index') ->with('success', __( 'crud.messages.has_been_deleted', - ['model' => Str::singular(__('models.classes.products'))] + ['model' => Str::singular(__('models.classes.product'))] )); } return redirect() ->back() ->with('error', __( ':crud.messages.cannot_be_deleted', - ['model' => Str::singular(__('models.classes.products'))] + ['model' => Str::singular(__('models.classes.product'))] )); }); } diff --git a/app/Http/Controllers/Bo/RangeController.php b/app/Http/Controllers/Bo/RangeController.php index 1e8b019..10f3adc 100644 --- a/app/Http/Controllers/Bo/RangeController.php +++ b/app/Http/Controllers/Bo/RangeController.php @@ -73,14 +73,14 @@ class RangeController extends Controller ->route('bo.ranges.edit', $range) ->with('success', trans( 'crud.messages.has_been_created', - ['model' => Str::singular(__('models.classes.ranges'))] + ['model' => Str::singular(__('models.classes.range'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_created', - ['model' => Str::singular(__('models.classes.ranges'))] + ['model' => Str::singular(__('models.classes.range'))] )); }); } @@ -114,14 +114,14 @@ class RangeController extends Controller ->route('bo.ranges.edit', $range) ->with('success', trans( 'crud.messages.has_been_updated', - ['model' => Str::singular(__('models.classes.ranges'))] + ['model' => Str::singular(__('models.classes.range'))] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_updated', - ['model' => Str::singular(__('models.classes.ranges'))] + ['model' => Str::singular(__('models.classes.range'))] )); }); } @@ -145,14 +145,14 @@ class RangeController extends Controller ->route('bo.ranges.index') ->with('success', __( 'crud.messages.has_been_deleted', - ['model' => Str::singular(__('models.classes.ranges'))] + ['model' => Str::singular(__('models.classes.range'))] )); } return redirect() ->back() ->with('error', __( ':crud.messages.cannot_be_deleted', - ['model' => Str::singular(__('models.classes.ranges'))] + ['model' => Str::singular(__('models.classes.range'))] )); }); } diff --git a/app/Http/Controllers/Bo/WinnersListController.php b/app/Http/Controllers/Bo/WinnerListController.php similarity index 95% rename from app/Http/Controllers/Bo/WinnersListController.php rename to app/Http/Controllers/Bo/WinnerListController.php index 6af2242..e2c4fb2 100644 --- a/app/Http/Controllers/Bo/WinnersListController.php +++ b/app/Http/Controllers/Bo/WinnerListController.php @@ -7,7 +7,7 @@ use App\Models\Participation; use App\Models\Settings; use Illuminate\Http\Request; -class WinnersListController extends Controller +class WinnerListController extends Controller { /** * Display a listing of the resource. diff --git a/app/Http/Controllers/Fo/HomeController.php b/app/Http/Controllers/Fo/HomeController.php index 283107b..85d24ee 100644 --- a/app/Http/Controllers/Fo/HomeController.php +++ b/app/Http/Controllers/Fo/HomeController.php @@ -3,16 +3,36 @@ namespace App\Http\Controllers\Fo; use App\Http\Controllers\Controller; +use App\Models\Range; +use Illuminate\Contracts\View\View; +use Illuminate\Support\Facades\Gate; class HomeController extends Controller { /** - * home + * Display home page * - * @return \Illuminate\View\View + * @return \Illuminate\Contracts\View\View */ - public function home() + public function home(): View { return view('theme::pages.home'); } + + /** + * Display products with game stickers + * + * @return \Illuminate\Contracts\View\View + * @phpcs:ignore Squiz.Commenting.FunctionComment.EmptyThrows + * @throws \Illuminate\Http\Exceptions\HttpResponseException + */ + public function showProducts(): View + { + if (!Gate::allows('fo.showProducts')) { + \response()->redirectToRoute('fo.homepage')->throwResponse(); + } + + $rangeModelList = Range::query()->with('products')->orderBy('id')->get(); + return view('theme::pages.products', compact('rangeModelList')); + } } diff --git a/app/Http/Controllers/Fo/ProduitsController.php b/app/Http/Controllers/Fo/ProduitsController.php deleted file mode 100644 index c3bc4a8..0000000 --- a/app/Http/Controllers/Fo/ProduitsController.php +++ /dev/null @@ -1,23 +0,0 @@ -orderBy('id')->get(); - if (view()->exists('theme::produits-porteurs')) { - return view('theme::produits-porteurs', compact('ranges')); - } - return redirect()->route('home'); - } -} diff --git a/app/Http/Middleware/SecureHeaders.php b/app/Http/Middleware/SecureHeaders.php index c5e47cf..545ba89 100644 --- a/app/Http/Middleware/SecureHeaders.php +++ b/app/Http/Middleware/SecureHeaders.php @@ -53,7 +53,7 @@ class SecureHeaders "default-src 'none';", "manifest-src 'self';", // * CKEDITOR Specific https://ckeditor.com/docs/ckeditor5/latest/installation/advanced/csp.html - "connect-src 'self' " . implode(' ', [ + "connect-src 'self' blob: " . implode(' ', [ // * VITE DEV config('app.debug') ? "wss://{$host}:4443" : '', config('app.debug') ? "https://{$host}:4443" : '', diff --git a/app/Http/Requests/Bo/Products/StoreProductRequest.php b/app/Http/Requests/Bo/Products/StoreProductRequest.php index 82c2095..fde842a 100644 --- a/app/Http/Requests/Bo/Products/StoreProductRequest.php +++ b/app/Http/Requests/Bo/Products/StoreProductRequest.php @@ -38,17 +38,18 @@ class StoreProductRequest extends FormRequest { $rules = [ 'name' => 'required|string|min:3|max:255', - 'no_art' => 'nullable|numeric|min:0', 'code_ean' => [ 'required', 'numeric', 'unique:products,code_ean', 'regex:/^[0-9]{7}$|^[0-9]{8}$|^[0-9]{13}$/', ], - 'range_id' => 'exists:ranges,id' + 'picture_alt' => 'required_with:picture|string|between:3,255', + 'picture_title' => 'required_with:picture|string|between:3,255', + 'range_id' => 'exists:ranges,id' ]; - $width = config('theme.product_image_maxwidth'); - $height = config('theme.product_image_maxheight'); + $width = config('theme.models.products.picture_max_width'); + $height = config('theme.models.products.picture_max_height'); return \array_merge( $rules, $this->pictureRules('picture', $width, $height, $width, $height, true), @@ -63,7 +64,7 @@ class StoreProductRequest extends FormRequest public function attributes(): array { return [ - 'code_ean' => trans('Code EAN'), + 'code_ean' => trans('validation.custom.ean_code'), ]; } } diff --git a/app/Http/Requests/Bo/Ranges/StoreRangeRequest.php b/app/Http/Requests/Bo/Ranges/StoreRangeRequest.php index a44fd6b..0ef6a9e 100644 --- a/app/Http/Requests/Bo/Ranges/StoreRangeRequest.php +++ b/app/Http/Requests/Bo/Ranges/StoreRangeRequest.php @@ -39,9 +39,11 @@ class StoreRangeRequest extends FormRequest $rules = [ 'name' => 'required|string|min:2|max:255', ]; + $width = config('theme.models.ranges.picture_max_width'); + $height = config('theme.models.ranges.picture_max_height'); return \array_merge( $rules, - $this->pictureRules('picture', 500, 500, 500, 500, false), + $this->pictureRules('picture', $width, $height, $width, $height, false), ); } } diff --git a/app/Models/Product.php b/app/Models/Product.php index 0b5d1d5..2cff4a0 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -3,13 +3,13 @@ namespace App\Models; use App\Lib\Helpers\FileStorageHelper; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** * Product. * * @property string $name Name - * @property integer $no_art Number of this article * @property string $picture Path of the picture * @property integer $code_ean Ean code * @property-read \Illuminate\Support\Carbon $created_at Creation Date. @@ -24,6 +24,8 @@ use Illuminate\Database\Eloquent\Model; */ class Product extends Model { + use HasFactory; + /** * The attributes that are mass assignable. * @@ -31,8 +33,9 @@ class Product extends Model */ protected $fillable = [ 'name', - 'no_art', 'picture', + 'picture_alt', + 'picture_title', 'code_ean', 'range_id', ]; diff --git a/app/Models/Range.php b/app/Models/Range.php index 8716f31..e87baea 100644 --- a/app/Models/Range.php +++ b/app/Models/Range.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Lib\Helpers\FileStorageHelper; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -21,6 +22,8 @@ use Illuminate\Database\Eloquent\Model; */ class Range extends Model { + use HasFactory; + /** * The attributes that are mass assignable. * diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 7f2dc1b..c1e859a 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -4,6 +4,7 @@ namespace App\Providers; use App\Auth\CrmUserProvider; use App\Enums\Users\RoleEnum; +use App\Models\Product; use App\Models\User; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; @@ -28,6 +29,12 @@ class AuthServiceProvider extends ServiceProvider return $user->role === RoleEnum::conceptor; }); + Gate::define( + 'fo.showProducts', + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + fn (?User $user) => view()->exists('theme::pages.products') and (bool)Product::query()->count() + ); + $this->app->auth->provider('crm', function ($app, array $config) { return new CrmUserProvider($app['hash'], $config['model']); }); diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php new file mode 100644 index 0000000..eace3a9 --- /dev/null +++ b/database/factories/ProductFactory.php @@ -0,0 +1,27 @@ + + */ +class ProductFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => 'product ' . \fake()->jobTitle(), + // * EAN 13 generate + 'code_ean' => fake()->randomNumber(8, true) . fake()->randomNumber(5, true), + 'picture_alt' => fake()->sentence(), + 'picture_title' => fake()->sentence(), + ]; + } +} diff --git a/database/factories/RangeFactory.php b/database/factories/RangeFactory.php new file mode 100644 index 0000000..6343e04 --- /dev/null +++ b/database/factories/RangeFactory.php @@ -0,0 +1,25 @@ + + */ +class RangeFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => 'range ' . \fake()->jobTitle(), + 'picture_alt' => fake()->sentence(), + 'picture_title' => fake()->sentence(), + ]; + } +} diff --git a/database/factories/assets/products/default-picture-550x550.jpg b/database/factories/assets/products/default-picture-550x550.jpg new file mode 100644 index 0000000..00854b0 Binary files /dev/null and b/database/factories/assets/products/default-picture-550x550.jpg differ diff --git a/database/factories/assets/ranges/default-picture-476x355.jpg b/database/factories/assets/ranges/default-picture-476x355.jpg new file mode 100644 index 0000000..ae3d58f Binary files /dev/null and b/database/factories/assets/ranges/default-picture-476x355.jpg differ diff --git a/database/migrations/2021_08_18_154140_create_ranges_table.php b/database/migrations/2021_08_18_154140_create_ranges_table.php index 77a3fdd..8d24d0e 100644 --- a/database/migrations/2021_08_18_154140_create_ranges_table.php +++ b/database/migrations/2021_08_18_154140_create_ranges_table.php @@ -15,8 +15,12 @@ class CreateRangesTable extends Migration { Schema::create('ranges', function (Blueprint $table) { $table->id(); - $table->string('name'); - $table->string('picture')->nullable(); + + $table->string('name')->comment('Nom de la gamme'); + $table->string('picture')->nullable()->comment('Image de la gamme'); + $table->string('picture_alt')->nullable()->comment('Attribut alt de l\'image de la gamme'); + $table->string('picture_title')->nullable()->comment('Attribut title de l\'image de la gamme'); + $table->timestamps(); }); } diff --git a/database/migrations/2021_08_18_162010_create_products_table.php b/database/migrations/2021_08_18_162010_create_products_table.php index d60fd02..03a3a8a 100644 --- a/database/migrations/2021_08_18_162010_create_products_table.php +++ b/database/migrations/2021_08_18_162010_create_products_table.php @@ -15,10 +15,13 @@ class CreateProductsTable extends Migration { Schema::create('products', function (Blueprint $table) { $table->id(); - $table->string('name'); - $table->unsignedInteger('no_art')->nullable(); - $table->string('picture')->nullable(); - $table->unsignedBigInteger('code_ean'); + $table->string('name')->comment('Nom du produit'); + $table->string('picture')->nullable()->comment('Image du produit'); + $table->string('picture_alt')->nullable()->comment('Attribut alt de l\'image du produit'); + $table->string('picture_title')->nullable()->comment('Attribut title de l\'image du produit'); + + $table->unsignedBigInteger('code_ean')->comment('Code EAN du produit pour la participation au jeu'); + $table->foreignId('range_id')->before('created_at')->references('id') ->on('ranges')->onDelete('cascade'); $table->timestamps(); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 2f99f19..f0ccdcf 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,8 +13,10 @@ class DatabaseSeeder extends Seeder */ public function run() { - $this->call(SettingsSeeder::class); - $this->call(StaticPageSeeder::class); - $this->call(PrizeSeeder::class); + $this->call([ + SettingsSeeder::class, + StaticPageSeeder::class, + PrizeSeeder::class, + ]); } } diff --git a/database/seeders/ProductSeeder.php b/database/seeders/ProductSeeder.php new file mode 100644 index 0000000..981756b --- /dev/null +++ b/database/seeders/ProductSeeder.php @@ -0,0 +1,45 @@ +truncate(); + DB::table('ranges')->truncate(); + Schema::enableForeignKeyConstraints(); + + File::deleteDirectory(\storage_path('app/public/modelfiles/ranges')); + File::deleteDirectory(\storage_path('app/public/modelfiles/products')); + + $this->call(RangeSeeder::class); + + Range::all()->each(function (Range $range) { + Product::factory(6)->make()->each(function (Product $product) use ($range) { + $product->picture = FileStorageHelper::storeFile( + new Range(), + new \SplFileInfo( + \resource_path('../database/factories/assets/products/default-picture-550x550.jpg') + ) + ); + $product->range()->associate($range); + $product->saveQuietly(); + }); + }); + } +} diff --git a/database/seeders/RangeSeeder.php b/database/seeders/RangeSeeder.php new file mode 100644 index 0000000..f1a8fb2 --- /dev/null +++ b/database/seeders/RangeSeeder.php @@ -0,0 +1,28 @@ +make()->each(function (Range $range) { + $range->picture = FileStorageHelper::storeFile( + new Range(), + new \SplFileInfo( + \resource_path('../database/factories/assets/ranges/default-picture-476x355.jpg') + ) + ); + $range->saveQuietly(); + }); + } +} diff --git a/resources/lang/fr/models.php b/resources/lang/fr/models.php index dfa964b..07582ed 100644 --- a/resources/lang/fr/models.php +++ b/resources/lang/fr/models.php @@ -9,10 +9,10 @@ return [ 'faq-questions' => 'Question pour la FAQ|Questions pour la FAQ', 'faq-themes' => 'Thème pour la FAQ|Thèmes pour la FAQ', 'gain-views' => 'Page de gain|Pages de gain', - 'prizes' => 'Lots', - 'ranges' => 'Gammes', - 'products' => 'Produits', - 'winners' => 'Gagnants', + 'prizes' => 'Lot', + 'range' => 'Gamme', + 'winner' => 'Gagnant', 'settings' => 'Réglages', + 'product' => 'Produit', ] ]; diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index 4cf0072..14a9e28 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -221,6 +221,8 @@ return [ 'female' => 'de la ', 'vowel' => 'de l\'' ], + 'attribute_alt' => 'attribut alt', + 'attribute_title' => 'attribut title', 'event' => 'évènement', 'model' => 'élément ciblé', 'order' => 'ordre', @@ -250,7 +252,6 @@ return [ 'pdf_winning_proof' => 'pdf preuve de gain', 'need_proof' => 'preuve de gain obligatoire', 'picture' => 'illustration', - 'no_art' => 'numéro d\'article', 'ean_code' => 'code EAN', 'start_date' => 'date de début', 'end_date' => 'date de fin', diff --git a/resources/ts/components/ImageInputComponent.vue b/resources/ts/components/ImageInputComponent.vue index abc6c36..8803c8e 100644 --- a/resources/ts/components/ImageInputComponent.vue +++ b/resources/ts/components/ImageInputComponent.vue @@ -380,6 +380,7 @@ class="form-text text-body-secondary d-block" >{{ __("vue.ImageInputComponent.preview_picture") }} { - this.intValue = value.replace(/^\/|^/, "/"); - this.intValueFileName = value.replace(/^\/|^/, ""); - fetch(this.intValue) - .then((response) => { - this.intOriginalFileName = decodeURI(response.url.substring( - response.url.lastIndexOf("/") + 1 - )); - return response.blob(); - }) - .then((blob: Blob) => { - if (!actualImage.files) { - throw new Error("3- missing files list"); - } - this.fetchDataUrlImageSizes(this.inTvalue); - const file = new File([blob], this.inTvalueFileName, { - type: "image/png", - lastModified: new Date().getTime(), - }); - this.intHasImage = true; - this.intOriginalFile = file; - this.$emit("imageFile", file); - container.items.add(file); - actualImage.files = container.files; - this.changedImage(); - }); - }); + this.fetchPictureFromPath(value); } }, }, @@ -761,6 +738,42 @@ export default defineComponent({ this.$nextTick(() => (this.intHasImage = false)); this.$emit("imageFile", null); }, + fetchPictureFromPath(value: string): void { + const actualImage: HTMLInputElement = this.$refs.actualImage as HTMLInputElement, + container: DataTransfer = new DataTransfer(); + + this.$nextTick(() => { + const stringValue: string = value.replace(/^\/|^/, "/"), + stringFileName: string = stringValue.substring(stringValue.lastIndexOf("/")).replace(/^\/|^/, ""); + + fetch(stringValue) + .then((response) => { + this.intOriginalFileName = decodeURI(response.url.substring( + response.url.lastIndexOf("/") + 1 + )); + return response.blob(); + }) + .then((blob: Blob) => { + if (!actualImage.files) { + throw new Error("3- missing files list"); + } + this.fetchDataUrlImageSizes(stringValue); + const file = new File([blob], stringFileName, { + type: "image/png", + lastModified: new Date().getTime(), + }); + + this.intValue = stringValue; + this.intValueFileName = stringFileName; + this.intHasImage = true; + this.intOriginalFile = file; + this.$emit("imageFile", file); + container.items.add(file); + actualImage.files = container.files; + this.changedImage(); + }); + }); + }, changedImage() { const reader = new FileReader(), actualImage = this.$refs.actualImage as HTMLInputElement; diff --git a/resources/ts/components/InputTextAutoComponent.vue b/resources/ts/components/InputTextAutoComponent.vue index 213f539..22690d1 100644 --- a/resources/ts/components/InputTextAutoComponent.vue +++ b/resources/ts/components/InputTextAutoComponent.vue @@ -25,6 +25,7 @@ import WordCounter from "./WordCounterComponent.vue"; const textarea = ref(null); export default defineComponent({ + name: "InputTextAutoComponent", inheritAttrs: false, mixins: [trans], components: { diff --git a/resources/ts/components/WordCounterComponent.vue b/resources/ts/components/WordCounterComponent.vue index 0b4182d..5723be9 100644 --- a/resources/ts/components/WordCounterComponent.vue +++ b/resources/ts/components/WordCounterComponent.vue @@ -14,6 +14,7 @@ import { defineComponent } from "vue"; import trans from "../modules/trans"; export default defineComponent({ + name: "WordCounterComponent", mixins: [trans], mounted() { const json = String(this.$attrs.json ?? "{}"); diff --git a/resources/views/layouts/header.blade.php b/resources/views/layouts/header.blade.php index a300086..4913931 100644 --- a/resources/views/layouts/header.blade.php +++ b/resources/views/layouts/header.blade.php @@ -4,7 +4,7 @@ title="{{ __('Accéder au front du projet') }}" target="_blank"> {{ config('app.name', 'Laravel') }} - @auth + @auth('backend') @@ -27,7 +27,7 @@
diff --git a/resources/views/pages/prizes/edit.blade.php b/resources/views/pages/prizes/edit.blade.php index d42ac58..a126c49 100644 --- a/resources/views/pages/prizes/edit.blade.php +++ b/resources/views/pages/prizes/edit.blade.php @@ -1,7 +1,7 @@ @extends('back::layout', ['brParam' => $prizeModel]) -@section('title', __('Édition d\'une :model', ['model' => Str::singular(__('models.classes.prizes'))])) -@section('description', __('Édition d\'une :model déjà existante', ['model' => Str::singular(__('models.classes.prizes'))])) +@section('title', __('Édition d\'une :model', ['model' => Str::singular(__('models.classes.prize'))])) +@section('description', __('Édition d\'une :model déjà existante', ['model' => Str::singular(__('models.classes.prize'))])) @section('breadcrumb', request()->route()->getName()) @@ -9,7 +9,7 @@
+ href="{{ route('bo.prizes.index') }}" title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.prize')]) }}"> @include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $prizeModel]) @@ -20,11 +20,11 @@ @method('DELETE')
@@ -38,7 +38,7 @@
diff --git a/resources/views/pages/prizes/form-inputs.blade.php b/resources/views/pages/prizes/form-inputs.blade.php index 21d479f..27eba05 100644 --- a/resources/views/pages/prizes/form-inputs.blade.php +++ b/resources/views/pages/prizes/form-inputs.blade.php @@ -23,7 +23,7 @@ ]), 'placeholder' => __(':field du :model', [ 'field' => Str::ucfirst(__('validation.custom.label_one')), - 'model' => Str::singular(__('models.classes.prizes')), + 'model' => Str::singular(__('models.classes.prize')), ]), ])
@@ -54,7 +54,7 @@ ]), 'placeholder' => __(':field du :model', [ 'field' => Str::ucfirst(__('validation.custom.label_many')), - 'model' => Str::singular(__('models.classes.prizes')), + 'model' => Str::singular(__('models.classes.prize')), ]), ])
@@ -86,7 +86,7 @@ ]), 'placeholder' => __(':field du :model', [ 'field' => Str::ucfirst(__('validation.attributes.title')), - 'model' => Str::singular(__('models.classes.prizes')), + 'model' => Str::singular(__('models.classes.prize')), ]), ])
@@ -110,7 +110,7 @@ ]), 'placeholder' => __(':field du :model', [ 'field' => Str::ucfirst(__('validation.custom.subtitle')), - 'model' => Str::singular(__('models.classes.prizes')), + 'model' => Str::singular(__('models.classes.prize')), ]), ])
diff --git a/resources/views/pages/prizes/index.blade.php b/resources/views/pages/prizes/index.blade.php index ba05d26..eb2ca3f 100644 --- a/resources/views/pages/prizes/index.blade.php +++ b/resources/views/pages/prizes/index.blade.php @@ -1,13 +1,13 @@ @extends('back::layout') -@section('title', __('models.classes.prizes')) -@section('description', __('Liste de toutes les :model', ['model' => __('models.classes.prizes')])) +@section('title', __('models.classes.prize')) +@section('description', __('Liste de toutes les :model', ['model' => __('models.classes.prize')])) @section('content') @@ -64,7 +64,7 @@ @else - {{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.prizes'))]) }} + {{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.prize'))]) }} @endif diff --git a/resources/views/pages/products/create.blade.php b/resources/views/pages/products/create.blade.php index b2f0c67..c3936b0 100644 --- a/resources/views/pages/products/create.blade.php +++ b/resources/views/pages/products/create.blade.php @@ -1,7 +1,7 @@ @extends('back::layout', ['brParam' => $productModel]) -@section('title', __('Création d\'une :model', ['model' => Str::singular(__('models.classes.products'))])) -@section('description', __('Création d\'une toute nouvelle :model', ['model' => Str::singular(__('models.classes.products'))])) +@section('title', __('Création d\'une :model', ['model' => Str::singular(__('models.classes.product'))])) +@section('description', __('Création d\'une toute nouvelle :model', ['model' => Str::singular(__('models.classes.product'))])) @section('breadcrumb', request()->route()->getName()) @@ -9,14 +9,14 @@
@@ -27,7 +27,7 @@
diff --git a/resources/views/pages/products/edit.blade.php b/resources/views/pages/products/edit.blade.php index e4d68c4..608c701 100644 --- a/resources/views/pages/products/edit.blade.php +++ b/resources/views/pages/products/edit.blade.php @@ -1,7 +1,7 @@ @extends('back::layout', ['brParam' => $productModel]) -@section('title', __('Édition d\'une :model', ['model' => Str::singular(__('models.classes.products'))])) -@section('description', __('Édition d\'une :model déjà existante', ['model' => Str::singular(__('models.classes.products'))])) +@section('title', __('Édition d\'une :model', ['model' => Str::singular(__('models.classes.product'))])) +@section('description', __('Édition d\'une :model déjà existante', ['model' => Str::singular(__('models.classes.product'))])) @section('breadcrumb', request()->route()->getName()) @@ -9,7 +9,7 @@
+ href="{{ route('bo.products.index') }}" title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.product')]) }}"> @include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $productModel]) @@ -20,11 +20,11 @@ @method('DELETE')
@@ -38,7 +38,7 @@
diff --git a/resources/views/pages/products/form-inputs.blade.php b/resources/views/pages/products/form-inputs.blade.php index 4ed71ad..8ccaa41 100644 --- a/resources/views/pages/products/form-inputs.blade.php +++ b/resources/views/pages/products/form-inputs.blade.php @@ -23,69 +23,90 @@ ]), 'placeholder' => __(':field du :model', [ 'field' => Str::ucfirst(__('validation.attributes.name')), - 'model' => Str::singular(__('models.classes.products')), + 'model' => Str::singular(__('models.classes.product')), ]), ])
- {{-- NO_ART --}} -
-
- {{ Str::ucfirst(__('validation.custom.no_art')) }} -
-
- @include('back::partials.inputs.int-number', [ - 'id' => 'productNoArt', - 'label' => __(':field', [ - 'field' => Str::ucfirst(__('validation.custom.no_art')), - ]), - 'name' => 'no_art', - 'required' => false, - 'model' => $productModel ?? null, - 'helper' => __('validation.min.numeric', [ - 'attribute' => __(':field', [ - 'field' => Str::ucfirst(__('validation.custom.no_art')), - ]), - 'min' => 0, - ]), - 'min' => 0, - ]) -
-
-
-
{{-- PICTURE --}} -
+
- {{ Str::ucfirst(__('validation.custom.picture')) }} -
+ {{ Str::ucfirst(__('validation.attributes.image')) }} +
+ {{-- PICTURE_ALT --}} +
+ @include('back::partials.inputs.varchar', [ + 'id' => 'productPictureAlt', + 'label' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_alt')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + 'hasWordCounter' => true, + 'name' => 'picture_alt', + 'required' => false, + 'model' => $productModel ?? null, + 'helper' => __('crud.minicrud.picture_alt_helper'), + 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_alt')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + ]) +
+ {{-- PICTURE_TITLE --}} +
+ @include('back::.partials.inputs.varchar', [ + 'id' => 'productPictureTitle', + 'label' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_title')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + 'hasWordCounter' => true, + 'name' => 'picture_title', + 'required' => false, + 'model' => $productModel ?? null, + 'helper' => __('crud.minicrud.picture_title_helper'), + 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_title')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.product'), + ]), + ]) +
+ {{-- PICTURE --}}
-
-
- @include('back::partials.inputs.varchar-picture', [ - 'id' => 'productPicture', - 'name' => 'picture', - 'width' => 500, - 'height' => 500, - 'model' => $productModel ?? null, - 'helper' => __('crud.minicrud.dimensions_must_be', [ - 'widthpx' => '500px', - 'heightpx' => '500px', - ]), - 'required' => false, - 'preview' => true, - ]) -
-
+ @include('back::partials.inputs.varchar-picture', [ + 'id' => 'productPicture', + 'name' => 'picture', + 'width' => config('theme.models.products.picture_max_width'), + 'height' => config('theme.models.products.picture_max_height'), + 'model' => $productModel ?? null, + 'helper' => __('crud.minicrud.dimensions_must_be', [ + 'widthpx' => config('theme.models.products.picture_max_width') . 'px', + 'heightpx' => config('theme.models.products.picture_max_height') . 'px', + ]), + 'required' => false, + 'preview' => true, + ])
{{-- CODE_EAN --}}
-
+
{{ Str::ucfirst(__('validation.custom.ean_code')) }}
@@ -118,13 +139,13 @@
@include('back::partials.inputs.bigint-foreign-id', [ 'id' => 'productRange', - 'label' => __('crud.minicrud.associated', ['entity' => __('models.classes.ranges')]), + 'label' => __('crud.minicrud.associated', ['entity' => __('models.classes.range')]), 'name' => 'range_id', 'size' => 5, 'model' => $productModel ?? null, 'associatedModels' => $rangeModels, 'foreignLabel' => 'name', - 'helper' => __('crud.minicrud.select', ['entity' => __('models.classes.ranges')]), + 'helper' => __('crud.minicrud.select', ['entity' => __('models.classes.range')]), ])
diff --git a/resources/views/pages/products/index.blade.php b/resources/views/pages/products/index.blade.php index 4461519..4fe26ce 100644 --- a/resources/views/pages/products/index.blade.php +++ b/resources/views/pages/products/index.blade.php @@ -1,13 +1,13 @@ @extends('back::layout') -@section('title', __('models.classes.products')) -@section('description', __('Liste de toutes les :model', ['model' => __('models.classes.products')])) +@section('title', __('models.classes.product')) +@section('description', __('Liste de toutes les :model', ['model' => __('models.classes.product')])) @section('content') @@ -18,9 +18,8 @@ @include('back::modules.table-col-sorter', [ 'cols' => [ 'name' => Str::ucfirst(__('validation.attributes.name')), - 'no_art' => Str::ucfirst(__('validation.custom.no_art')), 'code_ean' => Str::ucfirst(__('validation.custom.ean_code')), - 'range_id' => Str::ucfirst(__('models.classes.ranges')), + 'range_id' => Str::ucfirst(__('models.classes.range')), ], ]) @@ -28,7 +27,6 @@ @foreach ($productModels as $productModel) {{ $productModel->name }} - {{ $productModel->no_art }} {{ $productModel->code_ean }} {{ $productModel->range->name }} @@ -52,7 +50,7 @@ @else - {{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.products'))]) }} + {{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.product'))]) }} @endif diff --git a/resources/views/pages/ranges/create.blade.php b/resources/views/pages/ranges/create.blade.php index ad4eb93..a2274d2 100644 --- a/resources/views/pages/ranges/create.blade.php +++ b/resources/views/pages/ranges/create.blade.php @@ -1,7 +1,7 @@ @extends('back::layout', ['brParam' => $rangeModel]) -@section('title', __('Création d\'une :model', ['model' => Str::singular(__('models.classes.ranges'))])) -@section('description', __('Création d\'une toute nouvelle :model', ['model' => Str::singular(__('models.classes.ranges'))])) +@section('title', __('Création d\'une :model', ['model' => Str::singular(__('models.classes.range'))])) +@section('description', __('Création d\'une toute nouvelle :model', ['model' => Str::singular(__('models.classes.range'))])) @section('breadcrumb', request()->route()->getName()) @@ -9,14 +9,14 @@
@@ -27,7 +27,7 @@
diff --git a/resources/views/pages/ranges/edit.blade.php b/resources/views/pages/ranges/edit.blade.php index 76d76e2..b40291d 100644 --- a/resources/views/pages/ranges/edit.blade.php +++ b/resources/views/pages/ranges/edit.blade.php @@ -1,7 +1,7 @@ @extends('back::layout', ['brParam' => $rangeModel]) -@section('title', __('Édition d\'une :model', ['model' => Str::singular(__('models.classes.ranges'))])) -@section('description', __('Édition d\'une :model déjà existante', ['model' => Str::singular(__('models.classes.ranges'))])) +@section('title', __('Édition d\'une :model', ['model' => Str::singular(__('models.classes.range'))])) +@section('description', __('Édition d\'une :model déjà existante', ['model' => Str::singular(__('models.classes.range'))])) @section('breadcrumb', request()->route()->getName()) @@ -9,7 +9,7 @@
+ href="{{ route('bo.ranges.index') }}" title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.range')]) }}"> @include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $rangeModel]) @@ -20,11 +20,11 @@ @method('DELETE')
@@ -38,7 +38,7 @@
diff --git a/resources/views/pages/ranges/form-inputs.blade.php b/resources/views/pages/ranges/form-inputs.blade.php index 9747cd1..4fdffbe 100644 --- a/resources/views/pages/ranges/form-inputs.blade.php +++ b/resources/views/pages/ranges/form-inputs.blade.php @@ -23,7 +23,7 @@ ]), 'placeholder' => __(':field de la :model', [ 'field' => Str::ucfirst(__('validation.attributes.name')), - 'model' => Str::singular(__('models.classes.ranges')), + 'model' => Str::singular(__('models.classes.range')), ]), ])
@@ -31,22 +31,73 @@
{{-- PICTURE --}} -
-
- {{ Str::ucfirst(__('validation.custom.picture')) }} -
+
+
+ {{ Str::ucfirst(__('validation.attributes.image')) }} +
+ {{-- PICTURE_ALT --}} +
+ @include('back::partials.inputs.varchar', [ + 'id' => 'rangePictureAlt', + 'label' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_alt')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.range'), + ]), + 'hasWordCounter' => true, + 'name' => 'picture_alt', + 'required' => false, + 'model' => $rangeModel ?? null, + 'helper' => __('crud.minicrud.picture_alt_helper'), + 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_alt')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.range'), + ]), + ]) +
+ {{-- PICTURE_TITLE --}} +
+ @include('back::.partials.inputs.varchar', [ + 'id' => 'rangePictureTitle', + 'label' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_title')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.range'), + ]), + 'hasWordCounter' => true, + 'name' => 'picture_title', + 'required' => false, + 'model' => $rangeModel ?? null, + 'helper' => __('crud.minicrud.picture_title_helper'), + 'placeholder' => __(':field1 :inter1:field2 :inter2:model', [ + 'field1' => Str::ucfirst(__('validation.custom.attribute_title')), + 'inter1' => __('validation.custom.of_the.vowel'), + 'field2' => __('validation.attributes.image'), + 'inter2' => __('validation.custom.of_the.male'), + 'model' => __('models.classes.range'), + ]), + ]) +
+ {{-- PICTURE --}}
@include('back::partials.inputs.varchar-picture', [ 'id' => 'rangePicture', 'name' => 'picture', - 'width' => 500, - 'height' => 500, + 'width' => config('theme.models.ranges.picture_max_width'), + 'height' => config('theme.models.ranges.picture_max_height'), 'model' => $rangeModel ?? null, 'helper' => __('crud.minicrud.dimensions_must_be', [ - 'widthpx' => '500px', - 'heightpx' => '500px', + 'widthpx' => config('theme.models.ranges.picture_max_width') . 'px', + 'heightpx' => config('theme.models.ranges.picture_max_height') . 'px', ]), - 'required' => true, + 'required' => false, 'preview' => true, ])
diff --git a/resources/views/pages/ranges/index.blade.php b/resources/views/pages/ranges/index.blade.php index ebcbab6..c1f0e2a 100644 --- a/resources/views/pages/ranges/index.blade.php +++ b/resources/views/pages/ranges/index.blade.php @@ -1,13 +1,13 @@ @extends('back::layout') -@section('title', __('models.classes.ranges')) -@section('description', __('Liste de toutes les :model', ['model' => __('models.classes.ranges')])) +@section('title', __('models.classes.range')) +@section('description', __('Liste de toutes les :model', ['model' => __('models.classes.range')])) @section('content') @@ -46,7 +46,7 @@ @else - {{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.ranges'))]) }} + {{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.range'))]) }} @endif diff --git a/routes/breadcrumbs-bo.php b/routes/breadcrumbs-bo.php index b025fc2..a62cdec 100644 --- a/routes/breadcrumbs-bo.php +++ b/routes/breadcrumbs-bo.php @@ -75,7 +75,7 @@ Breadcrumbs::for('bo.gain-views.edit', function (Generator $trail, GainView $gai // * PRIZES Breadcrumbs::for('bo.prizes.index', function (Generator $trail) { - $trail->push(trans_choice('models.classes.prizes', 2), route('bo.prizes.index')); + $trail->push(trans_choice('models.classes.prize', 2), route('bo.prizes.index')); }); Breadcrumbs::for('bo.prizes.create', function (Generator $trail) { $trail->parent('bo.prizes.index'); @@ -88,7 +88,7 @@ Breadcrumbs::for('bo.prizes.edit', function (Generator $trail, Prize $prize) { // * RANGES Breadcrumbs::for('bo.ranges.index', function (Generator $trail) { - $trail->push(trans_choice('models.classes.ranges', 2), route('bo.ranges.index')); + $trail->push(trans_choice('models.classes.range', 2), route('bo.ranges.index')); }); Breadcrumbs::for('bo.ranges.create', function (Generator $trail) { $trail->parent('bo.ranges.index'); @@ -101,7 +101,7 @@ Breadcrumbs::for('bo.ranges.edit', function (Generator $trail, Range $range) { // * PRODUCTS Breadcrumbs::for('bo.products.index', function (Generator $trail) { - $trail->push(trans_choice('models.classes.products', 2), route('bo.products.index')); + $trail->push(trans_choice('models.classes.product', 2), route('bo.products.index')); }); Breadcrumbs::for('bo.products.create', function (Generator $trail) { $trail->parent('bo.products.index'); diff --git a/routes/web-bo.php b/routes/web-bo.php index c40c0b1..b34af9e 100644 --- a/routes/web-bo.php +++ b/routes/web-bo.php @@ -2,19 +2,19 @@ use App\Http\Controllers\Bo\ActivityLogController; use App\Http\Controllers\Bo\BannedIpController; -use App\Http\Controllers\Bo\CodesController; +use App\Http\Controllers\Bo\CodeController; use App\Http\Controllers\Bo\DashboardController; -use App\Http\Controllers\Bo\FaqQuestionsController; -use App\Http\Controllers\Bo\FaqThemesController; +use App\Http\Controllers\Bo\FaqQuestionController; +use App\Http\Controllers\Bo\FaqThemeController; use App\Http\Controllers\Bo\GainViewController; use App\Http\Controllers\Bo\InstantWinController; -use App\Http\Controllers\Bo\PrizesController; -use App\Http\Controllers\Bo\ProductsController; +use App\Http\Controllers\Bo\PrizeController; +use App\Http\Controllers\Bo\ProductController; use App\Http\Controllers\Bo\RangeController; use App\Http\Controllers\Bo\SettingsController; use App\Http\Controllers\Bo\StaticPageController; use App\Http\Controllers\Bo\UserController; -use App\Http\Controllers\Bo\WinnersListController; +use App\Http\Controllers\Bo\WinnerListController; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; @@ -63,13 +63,13 @@ Route::prefix('bo')->name('bo.')->group(function () { Route::middleware(['is-super-admin'])->group(function () { // * FAQ - THEMES - Route::resource('/faq-themes', FaqThemesController::class)->except('show'); + Route::resource('/faq-themes', FaqThemeController::class)->except('show'); // * FAQ - QUESTIONS - Route::resource('/faq-questions', FaqQuestionsController::class)->except('show'); + Route::resource('/faq-questions', FaqQuestionController::class)->except('show'); // * GAIN VIEWS Route::resource('/gain-views', GainViewController::class)->except('show'); // * PRIZES - Route::resource('/prizes', PrizesController::class) + Route::resource('/prizes', PrizeController::class) ->except('show') ->withoutMiddleware('htmlsanitize') ->middleware(['htmlsanitize:arg_content']); @@ -78,22 +78,22 @@ Route::prefix('bo')->name('bo.')->group(function () { ->except('show') ->withoutMiddleware('is-super-admin'); // * PRODUCTS - Route::resource('products', ProductsController::class) + Route::resource('products', ProductController::class) ->except('show') ->withoutMiddleware('is-super-admin'); // * SETTINGS. Route::resource('/settings', SettingsController::class) ->only(['edit', 'update']); // * WINNERS LIST - Route::get('/winners-list', [WinnersListController::class, 'index'])->name('winners-list'); + Route::get('/winners-list', [WinnerListController::class, 'index'])->name('winners-list'); // * INSTANT WIN Route::get('/instant-win', [InstantWinController::class, 'index'])->name('instant-win'); Route::get('/ajax/instant-win-generate', [InstantWinController::class, 'instantWinGenerate']); // * UNIQUES CODES. - Route::get('/codes', [CodesController::class, 'index'])->name('codes'); - Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes'); - Route::get('/codes/search', [CodesController::class, 'search'])->name('codes.search'); - Route::post('/codes/export', [CodesController::class, 'export'])->name('export-codes'); + Route::get('/codes', [CodeController::class, 'index'])->name('codes'); + Route::post('/codes', [CodeController::class, 'generate'])->name('generate-codes'); + Route::get('/codes/search', [CodeController::class, 'search'])->name('codes.search'); + Route::post('/codes/export', [CodeController::class, 'export'])->name('export-codes'); // * BANNED IPS Route::resource('/bannedips', BannedIpController::class)->except('show'); diff --git a/routes/web-fo.php b/routes/web-fo.php index 7f44bc0..1d4fcc5 100644 --- a/routes/web-fo.php +++ b/routes/web-fo.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Fo\FAQController; use App\Http\Controllers\Fo\GainsController; use App\Http\Controllers\Fo\HomeController; use App\Http\Controllers\Fo\HowToPlayController; -use App\Http\Controllers\Fo\ProduitsController; use App\Http\Controllers\Fo\TeaserController; use App\Http\Controllers\Fo\StaticPageController; use App\Http\Controllers\Fo\WinningProofController; @@ -45,13 +44,12 @@ Route::middleware(['throttle:credentials'])->name('fo.')->group(function () { Route::get('/', [HomeController::class, 'home'])->name('homepage'); - + Route::get('produits-porteurs', [HomeController::class, 'showProducts'])->name('produits-porteurs'); Route::get('reglement', [StaticPageController::class, 'reglement'])->name('reglement'); Route::get('charte', [StaticPageController::class, 'charte'])->name('charte'); Route::get('mentions-legales', [StaticPageController::class, 'legals'])->name('legals'); Route::get('faq', [FAQController::class, 'index'])->name('faq'); Route::get('comment-jouer', [HowToPlayController::class, 'index'])->name('comment-jouer'); Route::get('les-gains', [GainsController::class, 'index'])->name('les-gains'); - Route::get('produits-porteurs', [ProduitsController::class, 'index'])->name('produits-porteurs'); }); });