From ddc555fa2ea7d581423bd2e3c6131c57610e1b48 Mon Sep 17 00:00:00 2001 From: Lupu Gheorghe <46172059+gheorghelupu17@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:44:29 +0300 Subject: [PATCH] Fix video feedback front feedback (#276) * Fix registration ngo, add ro lang for validation * Fix load dashboard on front user * fix project view * Fix article on home page --- app/Concerns/MustSetInitialPassword.php | 5 +- .../UserResource/Pages/CreateUser.php | 5 + .../Auth/AuthenticatedSessionController.php | 10 +- .../Auth/RegisteredUserController.php | 9 +- app/Http/Controllers/DashboardController.php | 39 + app/Http/Controllers/HomeController.php | 31 +- app/Http/Controllers/ProjectController.php | 4 - app/Http/Requests/RegistrationRequest.php | 17 +- composer.json | 1 + composer.lock | 709 +++++++++++++++++- ...051126_alter_user_table_add_created_by.php | 29 + lang/en/auth.php | 20 + lang/en/pagination.php | 19 + lang/en/passwords.php | 22 + lang/en/validation.php | 185 +++++ lang/ro/auth.php | 24 +- lang/ro/custom_validation.php | 5 + lang/ro/http-statuses.php | 84 +++ lang/ro/pagination.php | 8 + lang/ro/passwords.php | 11 + lang/ro/validation.php | 217 ++++++ resources/js/Components/cards/ArticleCard.vue | 4 +- resources/js/Components/form/Avatar.vue | 4 +- resources/js/Components/form/ButtonFile.vue | 3 + .../js/Components/registration/Step3.vue | 3 + resources/js/Pages/Auth/Register.vue | 2 +- routes/web.php | 5 +- 27 files changed, 1411 insertions(+), 64 deletions(-) create mode 100644 app/Http/Controllers/DashboardController.php create mode 100644 database/migrations/2023_08_29_051126_alter_user_table_add_created_by.php create mode 100644 lang/en/auth.php create mode 100644 lang/en/pagination.php create mode 100644 lang/en/passwords.php create mode 100644 lang/en/validation.php create mode 100644 lang/ro/custom_validation.php create mode 100644 lang/ro/http-statuses.php create mode 100644 lang/ro/pagination.php create mode 100644 lang/ro/passwords.php create mode 100644 lang/ro/validation.php diff --git a/app/Concerns/MustSetInitialPassword.php b/app/Concerns/MustSetInitialPassword.php index 4db9a342..63384194 100644 --- a/app/Concerns/MustSetInitialPassword.php +++ b/app/Concerns/MustSetInitialPassword.php @@ -22,7 +22,10 @@ protected static function bootMustSetInitialPassword(): void static::created(function (self $user) { if (! app()->runningInConsole()) { - $user->sendWelcomeNotification(); + if (!empty($user->created_by)) + { + $user->sendWelcomeNotification(); + } } }); } diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/UserResource/Pages/CreateUser.php index 4b834538..f89c0ed7 100644 --- a/app/Filament/Resources/UserResource/Pages/CreateUser.php +++ b/app/Filament/Resources/UserResource/Pages/CreateUser.php @@ -51,4 +51,9 @@ public function form(Form $form): Form ]); } + protected function mutateFormDataBeforeCreate(array $data): array + { + $data['created_by'] = auth()->id(); + return $data; + } } diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php index 010e5d61..a393775f 100644 --- a/app/Http/Controllers/Auth/AuthenticatedSessionController.php +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -35,12 +35,10 @@ public function store(LoginRequest $request): RedirectResponse $request->authenticate(); $request->session()->regenerate(); - - $redirect = RouteServiceProvider::ONG; - match ($request->get('from', '')) { - 'championship-page' => $redirect = RouteServiceProvider::CHAMPIONSHIP, - 'ong' => $redirect = RouteServiceProvider::ONG, - default => $redirect = RouteServiceProvider::HOME, + $redirect = RouteServiceProvider::HOME; + $redirect = match ($request->get('from', '')) { + 'championship-page' => RouteServiceProvider::CHAMPIONSHIP, + default => $redirect , }; return redirect()->intended($redirect); diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 0e6c5899..66ce397c 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -16,6 +16,7 @@ use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Notification; use Inertia\Inertia; use Inertia\Response; @@ -66,7 +67,10 @@ public function store(RegistrationRequest $request): RedirectResponse $ong = $data['ong']; $organization = Organization::create($ong); $organization->addMediaFromRequest('ong.logo')->toMediaCollection('organizationFilesLogo'); - $organization->addMediaFromRequest('ong.statute')->toMediaCollection('organizationFilesStatute'); + if ($request->hasFile('ong.statute')) + { + $organization->addMediaFromRequest('ong.statute')->toMediaCollection('organizationFilesStatute'); + } $organization->activityDomains()->attach($ong['activity_domains_ids']); $organization->counties()->attach($ong['counties_ids']); $adminUsers = User::whereRole(UserRole::bb_admin)->get(); @@ -78,7 +82,8 @@ public function store(RegistrationRequest $request): RedirectResponse return redirect()->route('register')->with('success_message', ['message' => 'Contul a fost creat', 'usrid' => $user['id']]); } catch(\Throwable $th) { - return redirect()->back()->with('error_message', 'Contul nu a fost creat'); + Log::log('error', $th->getMessage()); + return redirect()->back()->with('error_message', __('auth.failed')); } } diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php new file mode 100644 index 00000000..2b4a53be --- /dev/null +++ b/app/Http/Controllers/DashboardController.php @@ -0,0 +1,39 @@ +user()->isNgoAdmin()) { + return redirect()->route('admin.ong.edit'); + } + if (auth()->user()->isDonor()) { + $profile = [ + 'description' => '
Mulțumim că ești alături de noi. Prin participarea ta activă la această inițiativă, ne arăți că ești preocupat de problemele sociale și că vrei să faci o diferență pozitivă în lumea în care trăim, iar contribuția ta este extrem de valoroasă.
+Prin distribuirea informațiilor despre proiectele de pe Bursa Binelui și încurajând prietenii și familia să se alăture, devii un promotor important al inițiativei noastre.
+Fiecare pas pe care îl facem împreună contează și, împreună, putem face o diferență semnificativă.
', + 'donations_place' => '5%', + 'donations_status' => [ + 'Ai donat către mai mult de 5 organizații', + 'Volunariezi la 3 organizații', + 'Ești abonat la newsletterul de bine', + 'Ai distribuit de multiple ori informații utile', + ], + ]; + + return Inertia::render('Donor/Dashboard', [ + 'profile' => $profile, + 'badges' => auth()->user()->badges + ->map(fn ($badge) => $badge->only('image', 'title', 'description')), + ]); + } + abort(403, 'You are not authorized to access this page.'); + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index e2582e12..50bf9764 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; +use App\Models\Article; use App\Models\Project; use Inertia\Inertia; @@ -11,35 +12,7 @@ class HomeController extends Controller { public function index() { - $articles = [ - [ - 'id' => 1, - 'img' => '/images/project_img.png', - 'author' => 'Ion Popescu', - 'name' => 'Importanța educației remediare în România în timpul pandemiei', - 'team' => 'Echipa BCR', - 'content' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum.', - 'date' => '15.02.2022', - ], - [ - 'id' => 2, - 'img' => '/images/project_img.png', - 'author' => 'Ion Popescu', - 'name' => 'Importanța educației remediare în România în timpul pandemiei', - 'team' => 'Echipa BCR', - 'content' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum.', - 'date' => '15.02.2022', - ], - [ - 'id' => 3, - 'img' => '/images/project_img.png', - 'author' => 'Ion Popescu', - 'name' => 'Importanța educației remediare în România în timpul pandemiei', - 'team' => 'Echipa BCR', - 'content' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum.', - 'date' => '15.02.2022', - ], - ]; + $articles = Article::latest()->take(3)->get(); $bcr_projects = Project::publish()->paginate(9)->withQueryString(); $donate_projects = Project::publish()->paginate(9)->withQueryString(); diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index b177a56b..da9bfd91 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -51,10 +51,6 @@ public function index(Request $request) public function item(Project $project) { - if ($project->status !== ProjectStatus::approved) { - $this->authorize('view', $project); - } - return Inertia::render('Public/Projects/Project', [ 'project' => $project, ]); diff --git a/app/Http/Requests/RegistrationRequest.php b/app/Http/Requests/RegistrationRequest.php index e0f9022b..1ea45b56 100644 --- a/app/Http/Requests/RegistrationRequest.php +++ b/app/Http/Requests/RegistrationRequest.php @@ -35,20 +35,27 @@ public function rules(): array $rules['ong'] = ['array', 'required']; $rules['ong.name'] = ['string', 'required']; $rules['ong.description'] = ['string', 'required']; - $rules['ong.logo'] = ['file', 'required']; - $rules['ong.statute'] = ['file', 'required']; + $rules['ong.logo'] = ['required', 'file']; + $rules['ong.statute'] = ['required', 'file']; $rules['ong.street_address'] = ['string', 'required']; $rules['ong.cif'] = ['string', 'required']; - $rules['ong.contact_email'] = ['email', 'required']; + $rules['ong.contact_email'] = ['required', 'email']; $rules['ong.contact_phone'] = ['string', 'required']; $rules['ong.contact_person'] = ['string', 'required']; $rules['ong.activity_domains_ids'] = ['array', 'required']; $rules['ong.counties_ids'] = ['array', 'required']; $rules['ong.volunteer'] = ['boolean']; - $rules['ong.why_volunteer'] = ['string']; - $rules['ong.website'] = ['string']; + $rules['ong.why_volunteer'] = ['string','nullable']; + $rules['ong.website'] = ['string','nullable']; } return $rules; } + public function messages(): array + { + return [ + 'ong.activity_domains_ids' => __('custom_validation.activity_domains_ids'), + 'ong.counties_ids' => __('custom_validation.counties_ids'), + ]; + } } diff --git a/composer.json b/composer.json index 389d56b3..a11c3771 100644 --- a/composer.json +++ b/composer.json @@ -30,6 +30,7 @@ "doctrine/dbal": "^3.6", "fakerphp/faker": "^1.9", "friendsofphp/php-cs-fixer": "^3.23", + "laravel-lang/common": "^4.0", "laravel/breeze": "^1.23", "laravel/pint": "^1.11", "laravel/sail": "^1.23", diff --git a/composer.lock b/composer.lock index 33c6ff09..d8c53496 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fddd45a52226c9bbe29eb55d3328d5ff", + "content-hash": "f95bcfe469305ba2d9f19a696be7fe7f", "packages": [ { "name": "akaunting/laravel-money", @@ -8545,6 +8545,52 @@ } ], "packages-dev": [ + { + "name": "archtechx/enums", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/archtechx/enums.git", + "reference": "475f45e682b0771253707f9403b704759a08da5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/archtechx/enums/zipball/475f45e682b0771253707f9403b704759a08da5f", + "reference": "475f45e682b0771253707f9403b704759a08da5f", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "nunomaduro/larastan": "^1.0|^2.4", + "orchestra/testbench": "^6.9|^7.0|^8.0", + "pestphp/pest": "^1.2|^2.0", + "pestphp/pest-plugin-laravel": "^1.0|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ArchTech\\Enums\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Štancl", + "email": "samuel@archte.ch" + } + ], + "description": "Helpers for making PHP enums more lovable.", + "support": { + "issues": "https://github.com/archtechx/enums/issues", + "source": "https://github.com/archtechx/enums/tree/v0.3.2" + }, + "time": "2023-02-15T13:05:41+00:00" + }, { "name": "barryvdh/laravel-debugbar", "version": "v3.9.2", @@ -9486,6 +9532,262 @@ ], "time": "2022-10-12T20:59:15+00:00" }, + { + "name": "dragon-code/contracts", + "version": "v2.20.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/contracts.git", + "reference": "410d35bec404f465a126bb1e672f3abe1150f5d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/contracts/zipball/410d35bec404f465a126bb1e672f3abe1150f5d7", + "reference": "410d35bec404f465a126bb1e672f3abe1150f5d7", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-message": "^1.0.1 || ^2.0", + "symfony/http-kernel": "^4.0 || ^5.0 || ^6.0", + "symfony/polyfill-php80": "^1.23" + }, + "conflict": { + "andrey-helldar/contracts": "*" + }, + "require-dev": { + "illuminate/database": "^10.0", + "phpdocumentor/reflection-docblock": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "DragonCode\\Contracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + } + ], + "description": "A set of contracts for any project", + "keywords": [ + "contracts", + "interfaces" + ], + "support": { + "source": "https://github.com/TheDragonCode/contracts" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://github.com/sponsors/TheDragonCode", + "type": "github" + }, + { + "url": "https://opencollective.com/dragon-code", + "type": "open_collective" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2023-06-02T11:06:31+00:00" + }, + { + "name": "dragon-code/pretty-array", + "version": "v4.1.0", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/pretty-array.git", + "reference": "6c84e2454491b414efbd37985c322712cdf9012f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/pretty-array/zipball/6c84e2454491b414efbd37985c322712cdf9012f", + "reference": "6c84e2454491b414efbd37985c322712cdf9012f", + "shasum": "" + }, + "require": { + "dragon-code/contracts": "^2.20", + "dragon-code/support": "^6.11.2", + "ext-dom": "*", + "ext-mbstring": "*", + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^10.2" + }, + "suggest": { + "symfony/thanks": "Give thanks (in the form of a GitHub) to your fellow PHP package maintainers" + }, + "type": "library", + "autoload": { + "psr-4": { + "DragonCode\\PrettyArray\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + } + ], + "description": "Simple conversion of an array to a pretty view", + "keywords": [ + "andrey helldar", + "array", + "dragon", + "dragon code", + "pretty", + "pretty array" + ], + "support": { + "issues": "https://github.com/TheDragonCode/pretty-array/issues", + "source": "https://github.com/TheDragonCode/pretty-array" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://github.com/sponsors/TheDragonCode", + "type": "github" + }, + { + "url": "https://opencollective.com/dragon-code", + "type": "open_collective" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2023-06-02T11:37:44+00:00" + }, + { + "name": "dragon-code/support", + "version": "v6.11.3", + "source": { + "type": "git", + "url": "https://github.com/TheDragonCode/support.git", + "reference": "3dbf1715e83e216ae1fea31eecc022829dc864df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDragonCode/support/zipball/3dbf1715e83e216ae1fea31eecc022829dc864df", + "reference": "3dbf1715e83e216ae1fea31eecc022829dc864df", + "shasum": "" + }, + "require": { + "dragon-code/contracts": "^2.19.1", + "ext-bcmath": "*", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "psr/http-message": "^1.0.1 || ^2.0", + "symfony/polyfill-php81": "^1.25", + "voku/portable-ascii": "^1.4.8 || ^2.0.1" + }, + "conflict": { + "andrey-helldar/support": "*" + }, + "require-dev": { + "illuminate/contracts": "^9.0 || ^10.0", + "phpunit/phpunit": "^9.6", + "symfony/var-dumper": "^6.0" + }, + "suggest": { + "dragon-code/laravel-support": "Various helper files for the Laravel and Lumen frameworks", + "symfony/thanks": "Give thanks (in the form of a GitHub) to your fellow PHP package maintainers" + }, + "type": "library", + "extra": { + "dragon-code": { + "docs-generator": { + "preview": { + "brand": "php", + "vendor": "The Dragon Code" + } + } + } + }, + "autoload": { + "psr-4": { + "DragonCode\\Support\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + } + ], + "description": "Support package is a collection of helpers and tools for any project.", + "keywords": [ + "dragon", + "dragon-code", + "framework", + "helper", + "helpers", + "laravel", + "php", + "support", + "symfony", + "yii", + "yii2" + ], + "support": { + "issues": "https://github.com/TheDragonCode/support/issues", + "source": "https://github.com/TheDragonCode/support" + }, + "funding": [ + { + "url": "https://boosty.to/dragon-code", + "type": "boosty" + }, + { + "url": "https://www.donationalerts.com/r/dragon_code", + "type": "donationalerts" + }, + { + "url": "https://github.com/sponsors/TheDragonCode", + "type": "github" + }, + { + "url": "https://opencollective.com/dragon-code", + "type": "open_collective" + }, + { + "url": "https://yoomoney.ru/to/410012608840929", + "type": "yoomoney" + } + ], + "time": "2023-08-03T09:43:52+00:00" + }, { "name": "fakerphp/faker", "version": "v1.23.0", @@ -9773,6 +10075,411 @@ }, "time": "2020-07-09T08:09:16+00:00" }, + { + "name": "laravel-lang/attributes", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/attributes.git", + "reference": "d8526492361502e88b7f6cd1e7f3952b6becc388" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/attributes/zipball/d8526492361502e88b7f6cd1e7f3952b6becc388", + "reference": "d8526492361502e88b7f6cd1e7f3952b6becc388", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.0", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^1.19", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Attributes\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Attributes\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 78 languages for form field names", + "keywords": [ + "attributes", + "fields", + "form", + "lang", + "languages", + "laravel", + "messages", + "translations", + "validation" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/attributes/issues", + "source": "https://github.com/Laravel-Lang/attributes/tree/v2.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/laravel-lang", + "type": "open_collective" + } + ], + "time": "2023-08-09T09:01:13+00:00" + }, + { + "name": "laravel-lang/common", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/common.git", + "reference": "31744c7f64610990a77c7705e590e04c1fca372d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/common/zipball/31744c7f64610990a77c7705e590e04c1fca372d", + "reference": "31744c7f64610990a77c7705e590e04c1fca372d", + "shasum": "" + }, + "require": { + "laravel-lang/attributes": "^2.3.3", + "laravel-lang/http-statuses": "^3.3.1", + "laravel-lang/lang": "^13.0", + "laravel-lang/publisher": "^14.6.4", + "php": "^8.1" + }, + "require-dev": { + "orchestra/testbench": "^8.5 || ^9.0", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.3" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + }, + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro", + "homepage": "https://github.com/andrey-helldar" + } + ], + "description": "Easily connect the necessary language packs to the application", + "keywords": [ + "Laravel-lang", + "attribute", + "attributes", + "breeze", + "cashier", + "fortify", + "framework", + "http", + "http-status", + "http-status-code", + "i18n", + "jetstream", + "lang", + "language", + "languages", + "laravel", + "locale", + "locales", + "nova", + "publisher", + "spark", + "translation", + "translations", + "ui" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/common/issues", + "source": "https://github.com/Laravel-Lang/common" + }, + "funding": [ + { + "url": "https://opencollective.com/laravel-lang", + "type": "open_collective" + } + ], + "time": "2023-08-09T09:24:50+00:00" + }, + { + "name": "laravel-lang/http-statuses", + "version": "v3.4.4", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/http-statuses.git", + "reference": "a040c261c10f68980e865c9900b76c32fd6f0275" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/http-statuses/zipball/a040c261c10f68980e865c9900b76c32fd6f0275", + "reference": "a040c261c10f68980e865c9900b76c32fd6f0275", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.1", + "php": "^8.1" + }, + "conflict": { + "laravel-lang/publisher": "<14.0" + }, + "require-dev": { + "laravel-lang/status-generator": "^1.19", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\HttpStatuses\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\HttpStatuses\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 78 languages for HTTP statuses", + "keywords": [ + "http", + "lang", + "languages", + "laravel", + "messages", + "status", + "translations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/http-statuses/issues", + "source": "https://github.com/Laravel-Lang/http-statuses/tree/v3.4.4" + }, + "funding": [ + { + "url": "https://opencollective.com/laravel-lang", + "type": "open_collective" + } + ], + "time": "2023-08-24T01:17:58+00:00" + }, + { + "name": "laravel-lang/lang", + "version": "13.2.2", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/lang.git", + "reference": "bbef7ad051664626373ab68628676f140b2ec733" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/bbef7ad051664626373ab68628676f140b2ec733", + "reference": "bbef7ad051664626373ab68628676f140b2ec733", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel-lang/publisher": "^14.0", + "php": "^8.1" + }, + "require-dev": { + "laravel-lang/status-generator": "^1.19", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Lang\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelLang\\Lang\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "List of 78 languages for Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark and Laravel UI", + "keywords": [ + "lang", + "languages", + "laravel", + "lpm" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/lang/issues", + "source": "https://github.com/Laravel-Lang/lang" + }, + "funding": [ + { + "url": "https://opencollective.com/laravel-lang", + "type": "open_collective" + } + ], + "time": "2023-08-26T02:07:55+00:00" + }, + { + "name": "laravel-lang/publisher", + "version": "v14.7.0", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/publisher.git", + "reference": "4e6fa2d8c446282b832ffb16b9b3c33aa4296a5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/publisher/zipball/4e6fa2d8c446282b832ffb16b9b3c33aa4296a5b", + "reference": "4e6fa2d8c446282b832ffb16b9b3c33aa4296a5b", + "shasum": "" + }, + "require": { + "archtechx/enums": "^0.3", + "composer/semver": "^3.3", + "dragon-code/pretty-array": "^4.0", + "dragon-code/support": "^6.3", + "ext-json": "*", + "illuminate/console": "^8.79 || ^9.18 || ^10.0 || ^11.0", + "illuminate/support": "^8.79 || ^9.18 || ^10.0 || ^11.0", + "league/commonmark": "^2.3", + "league/config": "^1.2", + "php": "^8.1" + }, + "conflict": { + "laravel-lang/attributes": "<2.0", + "laravel-lang/http-statuses": "<3.0", + "laravel-lang/lang": "<11.0" + }, + "require-dev": { + "laravel-lang/json-fallback-hotfix": "^1.0", + "orchestra/testbench": "^6.25 || ^7.22 || ^8.0 || ^9.0", + "phpunit/phpunit": "^9.6 || ^10.0", + "symfony/var-dumper": "^5.0 || ^6.0" + }, + "suggest": { + "laravel-lang/attributes": "List of 78 languages for form field names", + "laravel-lang/http-statuses": "List of 78 languages for HTTP statuses", + "laravel-lang/lang": "List of 78 languages for Laravel Framework, Jetstream, Fortify, Breeze, Cashier, Nova, Spark and UI." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelLang\\Publisher\\ServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "helper.php" + ], + "psr-4": { + "LaravelLang\\Publisher\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andrey Helldar", + "email": "helldar@dragon-code.pro" + }, + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "Publisher lang files for the Laravel and Lumen Frameworks, Jetstream, Fortify, Cashier, Spark and Nova from Laravel-Lang/lang", + "keywords": [ + "breeze", + "cashier", + "fortify", + "framework", + "i18n", + "jetstream", + "lang", + "languages", + "laravel", + "locale", + "locales", + "localization", + "lpm", + "lumen", + "nova", + "publisher", + "spark", + "trans", + "translations", + "validations" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/publisher/issues", + "source": "https://github.com/Laravel-Lang/publisher" + }, + "funding": [ + { + "url": "https://opencollective.com/laravel-lang", + "type": "open_collective" + } + ], + "time": "2023-08-09T09:09:57+00:00" + }, { "name": "laravel/breeze", "version": "v1.23.0", diff --git a/database/migrations/2023_08_29_051126_alter_user_table_add_created_by.php b/database/migrations/2023_08_29_051126_alter_user_table_add_created_by.php new file mode 100644 index 00000000..da960a26 --- /dev/null +++ b/database/migrations/2023_08_29_051126_alter_user_table_add_created_by.php @@ -0,0 +1,29 @@ +foreignIdFor(\App\Models\User::class, 'created_by')->nullable()->constrained('users'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropForeign(['created_by']); + $table->dropColumn('created_by'); + }); + } +}; diff --git a/lang/en/auth.php b/lang/en/auth.php new file mode 100644 index 00000000..6598e2c0 --- /dev/null +++ b/lang/en/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/lang/en/pagination.php b/lang/en/pagination.php new file mode 100644 index 00000000..d4814118 --- /dev/null +++ b/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/lang/en/passwords.php b/lang/en/passwords.php new file mode 100644 index 00000000..f1223bd7 --- /dev/null +++ b/lang/en/passwords.php @@ -0,0 +1,22 @@ + 'Your password has been reset.', + 'sent' => 'We have emailed your password reset link.', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that email address.", + +]; diff --git a/lang/en/validation.php b/lang/en/validation.php new file mode 100644 index 00000000..4f8f7262 --- /dev/null +++ b/lang/en/validation.php @@ -0,0 +1,185 @@ + 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'image' => 'The :attribute field must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', + ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', + 'string' => 'The :attribute field must be a string.', + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [], + +]; diff --git a/lang/ro/auth.php b/lang/ro/auth.php index 10b506df..1d39960d 100644 --- a/lang/ro/auth.php +++ b/lang/ro/auth.php @@ -1,12 +1,18 @@ [ - 'greeting'=>'Bun venit, :name!', - 'subject'=>'Bun venit pe :app', - 'intro'=>'Bine ai venit pe platforma :app. Pentru a-ți seta parola, te rugăm să apeși pe butonul de mai jos.', - 'submit' =>'Setează parola', - 'invalid_signature'=>'Link-ul de setare a parolei este invalid.', - 'no_user'=>'Nu există un utilizator cu acest email.', - 'already_used'=>'Parola a fost deja setată.', - ] + 'failed' => 'Datele de identificare nu pot fi confirmate.', + 'password' => 'Parola este greșită.', + 'throttle' => 'Prea multe încercări de intrare în cont. Puteți încerca din nou peste :seconds secunde.', + 'welcome' => [ + 'already_used' => 'Parola a fost deja setată.', + 'greeting' => 'Bun venit, :name!', + 'intro' => 'Bine ai venit pe platforma :app. Pentru a-ți seta parola, te rugăm să apeși pe butonul de mai jos.', + 'invalid_signature' => 'Link-ul de setare a parolei este invalid.', + 'no_user' => 'Nu există un utilizator cu acest email.', + 'subject' => 'Bun venit pe :app', + 'submit' => 'Setează parola', + ], ]; diff --git a/lang/ro/custom_validation.php b/lang/ro/custom_validation.php new file mode 100644 index 00000000..1a52cd45 --- /dev/null +++ b/lang/ro/custom_validation.php @@ -0,0 +1,5 @@ + 'Trebuie să selectați cel puțin un domeniu de activitate.', + 'counties_ids' => 'Trebuie să selectați cel puțin un județ.', +]; diff --git a/lang/ro/http-statuses.php b/lang/ro/http-statuses.php new file mode 100644 index 00000000..d23db44e --- /dev/null +++ b/lang/ro/http-statuses.php @@ -0,0 +1,84 @@ + 'Eroare necunoscută', + '100' => 'Continua', + '101' => 'Protocoale de comutare', + '102' => 'Prelucrare', + '200' => 'Bine', + '201' => 'Creată', + '202' => 'Admis', + '203' => 'Informații neautoritare', + '204' => 'Fara continut', + '205' => 'Resetați conținutul', + '206' => 'Conținut parțial', + '207' => 'Multi-Stare', + '208' => 'Deja Raportat', + '226' => 'Sunt obișnuit', + '300' => 'Alegeri multiple', + '301' => 'Mutat permanent', + '302' => 'Găsite', + '303' => 'Vezi Altele', + '304' => 'Nemodificat', + '305' => 'Utilizarea proxy', + '307' => 'Redirecționare temporară', + '308' => 'Redirecționare permanentă', + '400' => 'Cerere greşită', + '401' => 'Neautorizat', + '402' => 'Plata obligatorie', + '403' => 'Interzis', + '404' => 'Nu a fost gasit', + '405' => 'metoda nepermisa', + '406' => 'Inacceptabil', + '407' => 'Este necesară autentificarea proxy', + '408' => 'Solicitare Timeout', + '409' => 'Conflict', + '410' => 'Plecat', + '411' => 'Lungimea necesară', + '412' => 'Condiție preliminară eșuată', + '413' => 'Sarcina utilă prea mare', + '414' => 'URI prea lung', + '415' => 'Tip media neacceptat', + '416' => 'Interval nu este satisfăcător', + '417' => 'Așteptarea a eșuat', + '418' => 'Sunt un ceainic', + '419' => 'Sesiunea a expirat', + '421' => 'Solicitare direcționată greșit', + '422' => 'Entitate neprocesabilă', + '423' => 'Blocat', + '424' => 'Dependență eșuată', + '425' => 'Prea devreme', + '426' => 'Upgrade necesar', + '428' => 'Precondiție necesară', + '429' => 'Prea Multe Cereri', + '431' => 'Câmpurile antetului solicitării sunt prea mari', + '444' => 'Conexiune închisă fără răspuns', + '449' => 'Reîncercați cu', + '451' => 'Indisponibil din motive legale', + '499' => 'Solicitare client închisă', + '500' => 'Internal Server Error', + '501' => 'Neimplementat', + '502' => 'Poarta proastă', + '503' => 'modul de întreținere', + '504' => 'Timeout Gateway', + '505' => 'Versiunea HTTP nu este acceptată', + '506' => 'Varianta, de asemenea, negociază', + '507' => 'Spațiu de stocare insuficient', + '508' => 'Bucla detectată', + '509' => 'Limita pentru lățime de bandă a fost depășită', + '510' => 'Neextins', + '511' => 'Este necesară autentificarea în rețea', + '520' => 'Eroare necunoscută', + '521' => 'Serverul web este oprit', + '522' => 'Conexiunea a expirat', + '523' => 'Originea este de neatins', + '524' => 'A avut loc un timeout', + '525' => 'SSL Handshake a eșuat', + '526' => 'Certificat SSL nevalid', + '527' => 'Eroare gun rail', + '598' => 'Eroare de timeout citire în rețea', + '599' => 'Eroare de expirare a conexiunii la rețea', + 'unknownError' => 'Eroare necunoscută', +]; diff --git a/lang/ro/pagination.php b/lang/ro/pagination.php new file mode 100644 index 00000000..7569ac74 --- /dev/null +++ b/lang/ro/pagination.php @@ -0,0 +1,8 @@ + 'Înainte »', + 'previous' => '« Înapoi', +]; diff --git a/lang/ro/passwords.php b/lang/ro/passwords.php new file mode 100644 index 00000000..3dcd09e4 --- /dev/null +++ b/lang/ro/passwords.php @@ -0,0 +1,11 @@ + 'Parola a fost resetată!', + 'sent' => 'Am trimis un e-mail cu link-ul de resetare a parolei!', + 'throttled' => 'Vă rugăm să așteptați înainte de a încerca din nou.', + 'token' => 'Codul de resetare a parolei este greșit.', + 'user' => 'Nu există niciun utilizator cu această adresă de e-mail.', +]; diff --git a/lang/ro/validation.php b/lang/ro/validation.php new file mode 100644 index 00000000..38a40a3d --- /dev/null +++ b/lang/ro/validation.php @@ -0,0 +1,217 @@ + 'Câmpul :attribute trebuie să fie acceptat.', + 'accepted_if' => 'Câmpul :attribute trebuie să fie acceptat când :other este :value.', + 'active_url' => 'Câmpul :attribute nu este un URL valid.', + 'after' => 'Câmpul :attribute trebuie să fie o dată după :date.', + 'after_or_equal' => 'Câmpul :attribute trebuie să fie o dată ulterioară sau egală cu :date.', + 'alpha' => 'Câmpul :attribute poate conține doar litere.', + 'alpha_dash' => 'Câmpul :attribute poate conține doar litere, numere și cratime.', + 'alpha_num' => 'Câmpul :attribute poate conține doar litere și numere.', + 'array' => 'Câmpul :attribute trebuie să fie un array.', + 'ascii' => ':Attribute trebuie să conțină doar caractere și simboluri alfanumerice pe un singur octet.', + 'before' => 'Câmpul :attribute trebuie să fie o dată înainte de :date.', + 'before_or_equal' => 'Câmpul :attribute trebuie să fie o dată înainte sau egală cu :date.', + 'between' => [ + 'array' => 'Câmpul :attribute trebuie să aibă între :min și :max elemente.', + 'file' => 'Câmpul :attribute trebuie să fie între :min și :max kilobyți.', + 'numeric' => 'Câmpul :attribute trebuie să fie între :min și :max.', + 'string' => 'Câmpul :attribute trebuie să fie între :min și :max caractere.', + ], + 'boolean' => 'Câmpul :attribute trebuie să fie adevărat sau fals.', + 'can' => 'Câmpul :attribute conține o valoare neautorizată.', + 'confirmed' => 'Confirmarea :attribute nu se potrivește.', + 'current_password' => 'Parola e incorectă.', + 'date' => 'Câmpul :attribute nu este o dată validă.', + 'date_equals' => 'Aceasta :attribute trebuie să fie o dată egală cu :date.', + 'date_format' => 'Câmpul :attribute trebuie să fie în formatul :format.', + 'decimal' => ':Attribute trebuie să aibă :decimal de zecimale.', + 'declined' => 'Câmpul :attribute trebuie să fie declinat.', + 'declined_if' => 'Câmpul :attribute trebuie să fie declinat când :other este :value.', + 'different' => 'Câmpurile :attribute și :other trebuie să fie diferite.', + 'digits' => 'Câmpul :attribute trebuie să aibă :digits cifre.', + 'digits_between' => 'Câmpul :attribute trebuie să aibă între :min și :max cifre.', + 'dimensions' => 'Câmpul :attribute are dimensiuni de imagine nevalide.', + 'distinct' => 'Câmpul :attribute are o valoare duplicat.', + 'doesnt_end_with' => ':Attribute nu se poate termina cu una dintre următoarele valori: :values.', + 'doesnt_start_with' => ':Attribute trebuie să nu înceapă cu una dintre următoarele valori: :values.', + 'email' => 'Câmpul :attribute trebuie să fie o adresă de e-mail validă.', + 'ends_with' => 'Câmpul :attribute trebuie să se încheie cu una din următoarele valori: :values', + 'enum' => 'Câmpul :attribute selectat nu este valid.', + 'exists' => 'Câmpul :attribute selectat nu este valid.', + 'file' => 'Câmpul :attribute trebuie să fie un fișier.', + 'filled' => 'Câmpul :attribute trebuie completat.', + 'gt' => [ + 'array' => 'Câmpul :attribute trebuie să aibă mai multe de :value elemente.', + 'file' => 'Câmpul :attribute trebuie să fie mai mare de :value kilobyți.', + 'numeric' => 'Câmpul :attribute trebuie să fie mai mare de :value.', + 'string' => 'Câmpul :attribute trebuie să fie mai mare de :value caractere.', + ], + 'gte' => [ + 'array' => 'Câmpul :attribute trebuie să aibă :value elemente sau mai multe.', + 'file' => 'Câmpul :attribute trebuie să fie mai mare sau egal cu :value kilobyți.', + 'numeric' => 'Câmpul :attribute trebuie să fie mai mare sau egal cu :value.', + 'string' => 'Câmpul :attribute trebuie să fie mai mare sau egal cu :value caractere.', + ], + 'image' => 'Câmpul :attribute trebuie să fie o imagine.', + 'in' => 'Câmpul :attribute selectat nu este valid.', + 'in_array' => 'Câmpul :attribute nu există în :other.', + 'integer' => 'Câmpul :attribute trebuie să fie un număr întreg.', + 'ip' => 'Câmpul :attribute trebuie să fie o adresă IP validă.', + 'ipv4' => 'Câmpul :attribute trebuie să fie o adresă IPv4 validă.', + 'ipv6' => 'Câmpul :attribute trebuie să fie o adresă IPv6 validă.', + 'json' => 'Câmpul :attribute trebuie să fie un string JSON valid.', + 'lowercase' => ':Attribute trebuie să fie format doar din litere mici.', + 'lt' => [ + 'array' => 'Câmpul :attribute trebuie să aibă mai puțin de :value elemente.', + 'file' => 'Câmpul :attribute trebuie să fie mai mic de :value kilobyți.', + 'numeric' => 'Câmpul :attribute trebuie să fie mai mic de :value.', + 'string' => 'Câmpul :attribute trebuie să fie mai mic de :value caractere.', + ], + 'lte' => [ + 'array' => 'Câmpul :attribute trebuie să aibă :value elemente sau mai puține.', + 'file' => 'Câmpul :attribute trebuie să fie mai mic sau egal cu :value kilobyți.', + 'numeric' => 'Câmpul :attribute trebuie să fie mai mic sau egal cu :value.', + 'string' => 'Câmpul :attribute trebuie să fie mai mic sau egal cu :value caractere.', + ], + 'mac_address' => 'Câmpul :attribute trebuie să fie o adresă MAC validă.', + 'max' => [ + 'array' => 'Câmpul :attribute nu poate avea mai mult de :max elemente.', + 'file' => 'Câmpul :attribute nu poate avea mai mult de :max kilobyți.', + 'numeric' => 'Câmpul :attribute nu poate fi mai mare de :max.', + 'string' => 'Câmpul :attribute nu poate avea mai mult de :max caractere.', + ], + 'max_digits' => ':Attribute nu trebuie să conțină mai mult de :max cifre.', + 'mimes' => 'Câmpul :attribute trebuie să fie un fișier de tipul: :values.', + 'mimetypes' => 'Câmpul :attribute trebuie să fie un fișier de tipul: :values.', + 'min' => [ + 'array' => 'Câmpul :attribute trebuie să aibă cel puțin :min elemente.', + 'file' => 'Câmpul :attribute trebuie să aibă cel puțin :min kilobyți.', + 'numeric' => 'Câmpul :attribute nu poate fi mai mic de :min.', + 'string' => 'Câmpul :attribute trebuie să aibă cel puțin :min caractere.', + ], + 'min_digits' => ':Attribute trebuie să conțină cel puțin :min cifre.', + 'missing' => 'Câmpul :attribute trebuie să lipsească.', + 'missing_if' => 'Câmpul :attribute trebuie să lipsească când :other este :value.', + 'missing_unless' => 'Câmpul :attribute trebuie să lipsească, cu excepția cazului în care :other este :value.', + 'missing_with' => 'Câmpul :attribute trebuie să lipsească atunci când este prezent :values.', + 'missing_with_all' => 'Câmpul :attribute trebuie să lipsească atunci când sunt prezente :values.', + 'multiple_of' => ':Attribute trebuie să fie un multiplu de :value', + 'not_in' => 'Câmpul :attribute selectat nu este valid.', + 'not_regex' => 'Câmpul :attribute nu are un format valid.', + 'numeric' => 'Câmpul :attribute trebuie să fie un număr.', + 'password' => [ + 'letters' => ':Attribute trebuie să conțină cel puțin o literă.', + 'mixed' => ':Attribute trebuie să conțină cel puțin o literă mare și o literă mică.', + 'numbers' => ':Attribute trebuie să conțină cel puțin un număr.', + 'symbols' => ':Attribute trebuie să conțină cel puțin un simbol.', + 'uncompromised' => ':Attribute dat a apărut într-o scurgere de date. Vă rugăm să alegeți un alt :attribute.', + ], + 'present' => 'Câmpul :attribute trebuie să fie prezent.', + 'prohibited' => 'Câmpul :attribute este interzis.', + 'prohibited_if' => 'Câmpul :attribute este interzis atunci când :other este :value.', + 'prohibited_unless' => 'Câmpul :attribute este interzis, cu excepția cazului în care :other este în :values.', + 'prohibits' => 'Câmpul :attribute nu permite ca :other să fie prezent.', + 'regex' => 'Câmpul :attribute nu are un format valid.', + 'required' => 'Câmpul :attribute este obligatoriu.', + 'required_array_keys' => 'Câmpul :attribute trebuie să conțină valori pentru: :values.', + 'required_if' => 'Câmpul :attribute este necesar când :other este :value.', + 'required_if_accepted' => 'Câmpul :attribute este obligatoriu când :other este acceptat.', + 'required_unless' => 'Câmpul :attribute este necesar, cu excepția cazului :other este in :values.', + 'required_with' => 'Câmpul :attribute este necesar când există :values.', + 'required_with_all' => 'Câmpul :attribute este necesar când există :values.', + 'required_without' => 'Câmpul :attribute este necesar când nu există :values.', + 'required_without_all' => 'Câmpul :attribute este necesar când niciuna dintre valorile :values nu există.', + 'same' => 'Câmpurile :attribute și :other trebuie să fie identice.', + 'size' => [ + 'array' => 'Câmpul :attribute trebuie să aibă :size elemente.', + 'file' => 'Câmpul :attribute trebuie să aibă :size kilobyți.', + 'numeric' => 'Câmpul :attribute trebuie să fie :size.', + 'string' => 'Câmpul :attribute trebuie să aibă :size caractere.', + ], + 'starts_with' => 'Câmpul :attribute trebuie să înceapă cu una din următoarele valori: :values', + 'string' => 'Câmpul :attribute trebuie să fie string.', + 'timezone' => 'Câmpul :attribute trebuie să fie un fus orar valid.', + 'ulid' => ':Attribute trebuie să fie un ULID valid.', + 'unique' => 'Câmpul :attribute a fost deja folosit.', + 'uploaded' => 'Câmpul :attribute nu a reușit încărcarea.', + 'uppercase' => ':Attribute trebuie să fie majuscule.', + 'url' => 'Câmpul :attribute nu este un URL valid.', + 'uuid' => 'Câmpul :attribute trebuie să fie un cod UUID valid.', + 'attributes' => [ + 'address' => 'abordare', + 'age' => 'vârstă', + 'amount' => 'Cantitate', + 'area' => 'zonă', + 'available' => 'disponibil', + 'birthday' => 'zi de nastere', + 'body' => 'corp', + 'city' => 'oraș', + 'content' => 'conţinut', + 'country' => 'țară', + 'created_at' => 'creat la', + 'creator' => 'creator', + 'current_password' => 'Parola actuală', + 'date' => 'Data', + 'date_of_birth' => 'Data de nastere', + 'day' => 'zi', + 'deleted_at' => 'șters la', + 'description' => 'Descriere', + 'district' => 'district', + 'duration' => 'durată', + 'email' => 'e-mail', + 'excerpt' => 'extras', + 'filter' => 'filtru', + 'first_name' => 'Nume', + 'gender' => 'gen', + 'group' => 'grup', + 'hour' => 'ora', + 'image' => 'imagine', + 'last_name' => 'numele de familie', + 'lesson' => 'lecţie', + 'line_address_1' => 'adresa de linie 1', + 'line_address_2' => 'adresa de linie 2', + 'message' => 'mesaj', + 'middle_name' => 'al doilea prenume', + 'minute' => 'minut', + 'mobile' => 'mobil', + 'month' => 'lună', + 'name' => 'Nume', + 'national_code' => 'cod national', + 'number' => 'număr', + 'password' => 'parola', + 'password_confirmation' => 'Confirmarea parolei', + 'phone' => 'telefon', + 'photo' => 'fotografie', + 'postal_code' => 'Cod poștal', + 'price' => 'Preț', + 'province' => 'provincie', + 'recaptcha_response_field' => 'câmp de răspuns recaptcha', + 'remember' => 'tine minte', + 'restored_at' => 'restaurat la', + 'result_text_under_image' => 'textul rezultat sub imagine', + 'role' => 'rol', + 'second' => 'al doilea', + 'sex' => 'sex', + 'short_text' => 'text scurt', + 'size' => 'mărimea', + 'state' => 'stat', + 'street' => 'stradă', + 'student' => 'student', + 'subject' => 'subiect', + 'teacher' => 'profesor', + 'terms' => 'termeni', + 'test_description' => 'Descriere Test', + 'test_locale' => 'locale de testare', + 'test_name' => 'numele testului', + 'text' => 'text', + 'time' => 'timp', + 'title' => 'titlu', + 'updated_at' => 'actualizat la', + 'username' => 'nume de utilizator', + 'year' => 'an', + ], +]; diff --git a/resources/js/Components/cards/ArticleCard.vue b/resources/js/Components/cards/ArticleCard.vue index 991944f6..a18e5ce3 100644 --- a/resources/js/Components/cards/ArticleCard.vue +++ b/resources/js/Components/cards/ArticleCard.vue @@ -11,14 +11,14 @@ | {{ data.team }} -{{ data.date }}
{{ $t('read_article') }} diff --git a/resources/js/Components/form/Avatar.vue b/resources/js/Components/form/Avatar.vue index 7fc01eb4..ccb587a7 100644 --- a/resources/js/Components/form/Avatar.vue +++ b/resources/js/Components/form/Avatar.vue @@ -13,9 +13,10 @@ class="absolute inset-0 w-full h-full opacity-0 cursor-pointer" /> -{{ error }}
+