mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 19:44:30 -04:00
commit
75cf7ac7e8
@ -1 +1 @@
|
|||||||
5.6.1
|
5.6.2
|
@ -53,8 +53,10 @@ class TranslationsExport extends Command
|
|||||||
'fr_CA',
|
'fr_CA',
|
||||||
'he',
|
'he',
|
||||||
'hr',
|
'hr',
|
||||||
|
'hu',
|
||||||
'it',
|
'it',
|
||||||
'ja',
|
'ja',
|
||||||
|
'km_KH',
|
||||||
'lt',
|
'lt',
|
||||||
'lv_LV',
|
'lv_LV',
|
||||||
'mk_MK',
|
'mk_MK',
|
||||||
@ -131,10 +133,11 @@ class TranslationsExport extends Command
|
|||||||
Storage::disk('local')->makeDirectory('lang');
|
Storage::disk('local')->makeDirectory('lang');
|
||||||
|
|
||||||
foreach ($this->langs as $lang) {
|
foreach ($this->langs as $lang) {
|
||||||
|
nlog($lang);
|
||||||
Storage::disk('local')->makeDirectory("lang/{$lang}");
|
Storage::disk('local')->makeDirectory("lang/{$lang}");
|
||||||
|
|
||||||
$translations = Lang::getLoader()->load($lang, 'texts');
|
$translations = Lang::getLoader()->load($lang, 'texts');
|
||||||
|
nlog($translations);
|
||||||
Storage::disk('local')->put("lang/{$lang}/{$lang}.json", json_encode(Arr::dot($translations), JSON_UNESCAPED_UNICODE));
|
Storage::disk('local')->put("lang/{$lang}/{$lang}.json", json_encode(Arr::dot($translations), JSON_UNESCAPED_UNICODE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ class CompanyController extends BaseController
|
|||||||
* summary="Gets a list of companies",
|
* summary="Gets a list of companies",
|
||||||
* description="Lists companies, search and filters allow fine grained lists to be generated.
|
* description="Lists companies, search and filters allow fine grained lists to be generated.
|
||||||
|
|
||||||
Query parameters can be added to performed more fine grained filtering of the companies, these are handled by the CompanyFilters class which defines the methods available",
|
* Query parameters can be added to performed more fine grained filtering of the companies, these are handled by the CompanyFilters class which defines the methods available",
|
||||||
* @OA\Parameter(ref="#/components/parameters/X-API-TOKEN"),
|
* @OA\Parameter(ref="#/components/parameters/X-API-TOKEN"),
|
||||||
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
* @OA\Parameter(ref="#/components/parameters/X-Requested-With"),
|
||||||
* @OA\Parameter(ref="#/components/parameters/include"),
|
* @OA\Parameter(ref="#/components/parameters/include"),
|
||||||
@ -114,7 +114,10 @@ class CompanyController extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$companies = Company::whereAccountId(auth()->user()->company()->account->id);
|
/** @var \App\Models\User $user */
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
|
$companies = Company::whereAccountId($user->company()->account->id);
|
||||||
|
|
||||||
return $this->listResponse($companies);
|
return $this->listResponse($companies);
|
||||||
}
|
}
|
||||||
@ -159,8 +162,12 @@ class CompanyController extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function create(CreateCompanyRequest $request)
|
public function create(CreateCompanyRequest $request)
|
||||||
{
|
{
|
||||||
$cf = new \App\Factory\CompanyFactory;
|
/** @var \App\Models\User $user */
|
||||||
$company = $cf->create(auth()->user()->company()->account->id);
|
$user = auth()->user();
|
||||||
|
|
||||||
|
$company_factory = new \App\Factory\CompanyFactory;
|
||||||
|
|
||||||
|
$company = $company_factory->create($user->company()->account->id);
|
||||||
|
|
||||||
return $this->itemResponse($company);
|
return $this->itemResponse($company);
|
||||||
}
|
}
|
||||||
@ -206,15 +213,18 @@ class CompanyController extends BaseController
|
|||||||
{
|
{
|
||||||
$this->forced_includes = ['company_user'];
|
$this->forced_includes = ['company_user'];
|
||||||
|
|
||||||
$company = (new CreateCompany($request->all(), auth()->user()->company()->account))->handle();
|
/** @var \App\Models\User $user */
|
||||||
(new CreateCompanyPaymentTerms($company, auth()->user()))->handle();
|
$user = auth()->user();
|
||||||
(new CreateCompanyTaskStatuses($company, auth()->user()))->handle();
|
|
||||||
|
$company = (new CreateCompany($request->all(), $user->company()->account))->handle();
|
||||||
|
(new CreateCompanyPaymentTerms($company, $user))->handle();
|
||||||
|
(new CreateCompanyTaskStatuses($company, $user))->handle();
|
||||||
|
|
||||||
$company = $this->company_repo->save($request->all(), $company);
|
$company = $this->company_repo->save($request->all(), $company);
|
||||||
|
|
||||||
$this->uploadLogo($request->file('company_logo'), $company, $company);
|
$this->uploadLogo($request->file('company_logo'), $company, $company);
|
||||||
|
|
||||||
auth()->user()->companies()->attach($company->id, [
|
$user->companies()->attach($company->id, [
|
||||||
'account_id' => $company->account->id,
|
'account_id' => $company->account->id,
|
||||||
'is_owner' => 1,
|
'is_owner' => 1,
|
||||||
'is_admin' => 1,
|
'is_admin' => 1,
|
||||||
@ -231,7 +241,7 @@ class CompanyController extends BaseController
|
|||||||
/*
|
/*
|
||||||
* Required dependencies
|
* Required dependencies
|
||||||
*/
|
*/
|
||||||
auth()->user()->setCompany($company);
|
$user->setCompany($company);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create token
|
* Create token
|
||||||
@ -412,9 +422,6 @@ class CompanyController extends BaseController
|
|||||||
|
|
||||||
$company = $this->company_repo->save($request->all(), $company);
|
$company = $this->company_repo->save($request->all(), $company);
|
||||||
|
|
||||||
/** We save the settings in the repository - this is duplicated */
|
|
||||||
// $company->saveSettings($request->input('settings'), $company);
|
|
||||||
|
|
||||||
if ($request->has('documents')) {
|
if ($request->has('documents')) {
|
||||||
$this->saveDocuments($request->input('documents'), $company, false);
|
$this->saveDocuments($request->input('documents'), $company, false);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,6 @@ class SelfUpdateController extends BaseController
|
|||||||
|
|
||||||
nlog('copying release file');
|
nlog('copying release file');
|
||||||
|
|
||||||
// if (copy($this->getDownloadUrl(), storage_path('app/invoiceninja.zip'))) {
|
|
||||||
if (copy($this->getDownloadUrl(), storage_path("app/{$this->filename}"))) {
|
if (copy($this->getDownloadUrl(), storage_path("app/{$this->filename}"))) {
|
||||||
nlog('Copied file from URL');
|
nlog('Copied file from URL');
|
||||||
} else {
|
} else {
|
||||||
@ -70,21 +69,16 @@ class SelfUpdateController extends BaseController
|
|||||||
|
|
||||||
nlog('Finished copying');
|
nlog('Finished copying');
|
||||||
|
|
||||||
// if($this->use_zip) {
|
$file = Storage::disk('local')->path($this->filename);
|
||||||
$file = Storage::disk('local')->path($this->filename);
|
|
||||||
|
|
||||||
nlog('Extracting tar');
|
nlog('Extracting tar');
|
||||||
|
|
||||||
$phar = new \PharData($file);
|
$phar = new \PharData($file);
|
||||||
$phar->extractTo(base_path(), null, true);
|
$phar->extractTo(base_path(), null, true);
|
||||||
|
|
||||||
nlog('Finished extracting files');
|
nlog('Finished extracting files');
|
||||||
|
|
||||||
unlink($file);
|
unlink($file);
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// $this->extractUsingZip();
|
|
||||||
// }
|
|
||||||
|
|
||||||
nlog('Deleted release zip file');
|
nlog('Deleted release zip file');
|
||||||
|
|
||||||
@ -110,31 +104,13 @@ class SelfUpdateController extends BaseController
|
|||||||
return response()->json(['message' => 'Update completed'], 200);
|
return response()->json(['message' => 'Update completed'], 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
// private function extractUsingZip()
|
|
||||||
// {
|
|
||||||
|
|
||||||
// $file = Storage::disk('local')->path($this->filename);
|
|
||||||
|
|
||||||
// nlog('Extracting zip');
|
|
||||||
|
|
||||||
// $zipFile = new \PhpZip\ZipFile();
|
|
||||||
// $zipFile->openFile($file);
|
|
||||||
// $zipFile->deleteFromName(".htaccess");
|
|
||||||
// $zipFile->rewrite();
|
|
||||||
// $zipFile->extractTo(base_path());
|
|
||||||
// $zipFile->close();
|
|
||||||
// $zipFile = null;
|
|
||||||
|
|
||||||
// unlink($file);
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
private function clearCacheDir()
|
private function clearCacheDir()
|
||||||
{
|
{
|
||||||
$directoryIterator = new \RecursiveDirectoryIterator(base_path('bootstrap/cache'), \RecursiveDirectoryIterator::SKIP_DOTS);
|
$directoryIterator = new \RecursiveDirectoryIterator(base_path('bootstrap/cache'), \RecursiveDirectoryIterator::SKIP_DOTS);
|
||||||
|
|
||||||
foreach (new \RecursiveIteratorIterator($directoryIterator) as $file) {
|
foreach (new \RecursiveIteratorIterator($directoryIterator) as $file) {
|
||||||
unlink(base_path('bootstrap/cache/').$file->getFileName());
|
unlink(base_path('bootstrap/cache/').$file->getFileName());
|
||||||
|
$file = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$directoryIterator = null;
|
$directoryIterator = null;
|
||||||
@ -155,6 +131,8 @@ class SelfUpdateController extends BaseController
|
|||||||
throw new FilePermissionsFailure("Cannot update system because {$file->getFileName()} is not writable");
|
throw new FilePermissionsFailure("Cannot update system because {$file->getFileName()} is not writable");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$file = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$directoryIterator = null;
|
$directoryIterator = null;
|
||||||
@ -169,10 +147,8 @@ class SelfUpdateController extends BaseController
|
|||||||
|
|
||||||
private function getDownloadUrl()
|
private function getDownloadUrl()
|
||||||
{
|
{
|
||||||
$version = $this->checkVersion();
|
|
||||||
|
|
||||||
// if(request()->has('zip'))
|
$version = $this->checkVersion();
|
||||||
// return "https://github.com/invoiceninja/invoiceninja/releases/download/v{$version}/invoiceninja.zip";
|
|
||||||
|
|
||||||
return "https://github.com/invoiceninja/invoiceninja/releases/download/v{$version}/invoiceninja.tar";
|
return "https://github.com/invoiceninja/invoiceninja/releases/download/v{$version}/invoiceninja.tar";
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ class UpdateCompanyRequest extends Request
|
|||||||
$input['settings'] = (array)$this->filterSaveableSettings($input['settings']);
|
$input['settings'] = (array)$this->filterSaveableSettings($input['settings']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(array_key_exists('subdomain', $input) && $this->subdomain == $input['subdomain']) {
|
if(array_key_exists('subdomain', $input) && $this->company->subdomain == $input['subdomain']) {
|
||||||
unset($input['subdomain']);
|
unset($input['subdomain']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ class ImportCompleted extends Mailable
|
|||||||
'client_gateway_token_count' => $this->company->client_gateway_tokens()->count(),
|
'client_gateway_token_count' => $this->company->client_gateway_tokens()->count(),
|
||||||
'tax_rate_count' => $this->company->tax_rates()->count(),
|
'tax_rate_count' => $this->company->tax_rates()->count(),
|
||||||
'document_count' => $this->company->documents()->count(),
|
'document_count' => $this->company->documents()->count(),
|
||||||
|
'url' => Ninja::isHosted() ? config('ninja.react_url') : config('ninja.app_url'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this
|
return $this
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
namespace App\Repositories;
|
namespace App\Repositories;
|
||||||
|
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
|
use App\Utils\Ninja;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CompanyRepository.
|
* CompanyRepository.
|
||||||
@ -31,12 +32,18 @@ class CompanyRepository extends BaseRepository
|
|||||||
*/
|
*/
|
||||||
public function save(array $data, Company $company) : ?Company
|
public function save(array $data, Company $company) : ?Company
|
||||||
{
|
{
|
||||||
|
|
||||||
if (isset($data['custom_fields']) && is_array($data['custom_fields'])) {
|
if (isset($data['custom_fields']) && is_array($data['custom_fields'])) {
|
||||||
$data['custom_fields'] = $this->parseCustomFields($data['custom_fields']);
|
$data['custom_fields'] = $this->parseCustomFields($data['custom_fields']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$company->fill($data);
|
$company->fill($data);
|
||||||
|
|
||||||
|
/** Only required to handle v4 migration workloads */
|
||||||
|
if(Ninja::isHosted() && $company->isDirty('is_disabled') && !$company->is_disabled) {
|
||||||
|
Ninja::triggerForwarding($company->company_key, $company->owner()->email);
|
||||||
|
}
|
||||||
|
|
||||||
if (array_key_exists('settings', $data)) {
|
if (array_key_exists('settings', $data)) {
|
||||||
$company->saveSettings($data['settings'], $company);
|
$company->saveSettings($data['settings'], $company);
|
||||||
}
|
}
|
||||||
@ -45,7 +52,13 @@ class CompanyRepository extends BaseRepository
|
|||||||
|
|
||||||
return $company;
|
return $company;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* parseCustomFields
|
||||||
|
*
|
||||||
|
* @param array $fields
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
private function parseCustomFields($fields) :array
|
private function parseCustomFields($fields) :array
|
||||||
{
|
{
|
||||||
foreach ($fields as &$value) {
|
foreach ($fields as &$value) {
|
||||||
|
@ -276,9 +276,8 @@ class Design extends BaseDesign
|
|||||||
|
|
||||||
$header = [];
|
$header = [];
|
||||||
$header[] = ['element' => 'p', 'content' => ctrans('texts.shipping_address'), 'properties' => ['data-ref' => 'shipping_address-label', 'style' => 'font-weight: bold; text-transform: uppercase']];
|
$header[] = ['element' => 'p', 'content' => ctrans('texts.shipping_address'), 'properties' => ['data-ref' => 'shipping_address-label', 'style' => 'font-weight: bold; text-transform: uppercase']];
|
||||||
return array_merge($header, $elements);
|
|
||||||
|
|
||||||
// return $elements;
|
return array_merge($header, $elements);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
namespace App\Utils;
|
namespace App\Utils;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Ninja.
|
* Class Ninja.
|
||||||
@ -152,6 +153,21 @@ class Ninja
|
|||||||
return $translations;
|
return $translations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function triggerForwarding(string $company_key, string $email)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Http::withHeaders([
|
||||||
|
'X-API-HOSTED-SECRET' => config('ninja.ninja_hosted_secret'),
|
||||||
|
])->post(config('ninja.license_url').'/api/v1/enable_forwarding', [
|
||||||
|
'account_key' => $company_key,
|
||||||
|
'email' => $email,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
nlog("attempt forwarding for{$email} - {$company_key}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function createLicense($request)
|
public function createLicense($request)
|
||||||
{
|
{
|
||||||
// $affiliate = Affiliate::where('affiliate_key', '=', SELF_HOST_AFFILIATE_KEY)->first();
|
// $affiliate = Affiliate::where('affiliate_key', '=', SELF_HOST_AFFILIATE_KEY)->first();
|
||||||
|
@ -15,8 +15,8 @@ return [
|
|||||||
'require_https' => env('REQUIRE_HTTPS', true),
|
'require_https' => env('REQUIRE_HTTPS', true),
|
||||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||||
'app_version' => '5.6.1',
|
'app_version' => '5.6.2',
|
||||||
'app_tag' => '5.6.1',
|
'app_tag' => '5.6.2',
|
||||||
'minimum_client_version' => '5.0.16',
|
'minimum_client_version' => '5.0.16',
|
||||||
'terms_version' => '1.0.1',
|
'terms_version' => '1.0.1',
|
||||||
'api_secret' => env('API_SECRET', ''),
|
'api_secret' => env('API_SECRET', ''),
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Language;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Language::unguard();
|
||||||
|
|
||||||
|
if (!Language::find(39)) {
|
||||||
|
$hungarian = ['id' => 39, 'name' => 'Hungarian', 'locale' => 'hu'];
|
||||||
|
Language::create($hungarian);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
};
|
@ -63,6 +63,7 @@ class LanguageSeeder extends Seeder
|
|||||||
['id' => 36, 'name' => 'Bulgarian', 'locale' => 'bg'],
|
['id' => 36, 'name' => 'Bulgarian', 'locale' => 'bg'],
|
||||||
['id' => 37, 'name' => 'Hebrew', 'locale' => 'he'],
|
['id' => 37, 'name' => 'Hebrew', 'locale' => 'he'],
|
||||||
['id' => 38, 'name' => 'Khmer', 'locale' => 'km_KH'],
|
['id' => 38, 'name' => 'Khmer', 'locale' => 'km_KH'],
|
||||||
|
['id' => 39, 'name' => 'Hungarian', 'locale' => 'hu'],
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($languages as $language) {
|
foreach ($languages as $language) {
|
||||||
|
@ -5105,6 +5105,8 @@ $LANG = array(
|
|||||||
'gallery' => 'Gallery',
|
'gallery' => 'Gallery',
|
||||||
'project_location' => 'Project Location',
|
'project_location' => 'Project Location',
|
||||||
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments',
|
||||||
|
'lang_Hungarian' => 'Hungarian',
|
||||||
|
'use_mobile_to_manage_plan' => 'Use your phone subscription settings to manage your plan',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -5087,6 +5087,16 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
|
|||||||
'upload_certificate' => 'Téléverser le certificat',
|
'upload_certificate' => 'Téléverser le certificat',
|
||||||
'certificate_passphrase' => 'Passphrase du certificat',
|
'certificate_passphrase' => 'Passphrase du certificat',
|
||||||
'valid_vat_number' => 'Numéro valide de taxe',
|
'valid_vat_number' => 'Numéro valide de taxe',
|
||||||
|
'react_notification_link' => 'Lien de notifications React',
|
||||||
|
'react_notification_link_help' => 'Les courriels provenant de l\'administration contiennent des liens vers l\'application React',
|
||||||
|
'show_task_billable' => 'Afficher la facturation de tâche',
|
||||||
|
'credit_item' => 'Credit Item',
|
||||||
|
'drop_file_here' => 'Déposer le fichier ici',
|
||||||
|
'files' => 'Fichiers',
|
||||||
|
'camera' => 'Caméra',
|
||||||
|
'gallery' => 'Galerie',
|
||||||
|
'project_location' => 'Emplacement du projet',
|
||||||
|
'add_gateway_help_message' => 'Ajouter un passerelle de paiement (Stripe, WePay, ou PayPal) pour accepter les paiements en ligne',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
19
lang/hu/auth.php
Normal file
19
lang/hu/auth.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Authentication Language Lines
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The following language lines are used during authentication for various
|
||||||
|
| messages that we need to display to the user. You are free to modify
|
||||||
|
| these language lines according to your application's requirements.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'failed' => 'Ovi podaci ne odgovaraju našima.',
|
||||||
|
'throttle' => 'Previše pokušaja prijave. Molim Vas pokušajte ponovno za :seconds sekundi.',
|
||||||
|
|
||||||
|
];
|
19
lang/hu/pagination.php
Normal file
19
lang/hu/pagination.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Pagination Language Lines
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The following language lines are used by the paginator library to build
|
||||||
|
| the simple pagination links. You are free to change them to anything
|
||||||
|
| you want to customize your views to better match your application.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'previous' => '« Prethodna',
|
||||||
|
'next' => 'Sljedeća »',
|
||||||
|
|
||||||
|
];
|
22
lang/hu/passwords.php
Normal file
22
lang/hu/passwords.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Password Reminder Language Lines
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The following language lines are the default lines which match reasons
|
||||||
|
| that are given by the password broker for a password update attempt
|
||||||
|
| has failed, such as for an invalid token or invalid new password.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'password' => 'Lozinke moraju biti duge barem 6 znakova i moraju odgovarati potvrdi.',
|
||||||
|
'reset' => 'Lozinka je postavljena!',
|
||||||
|
'sent' => 'Poveznica za ponovono postavljanje lozinke je poslana!',
|
||||||
|
'token' => 'Oznaka za ponovno postavljanje lozinke više nije važeća.',
|
||||||
|
'user' => 'Korisnik nije pronađen.',
|
||||||
|
|
||||||
|
];
|
5088
lang/hu/texts.php
Normal file
5088
lang/hu/texts.php
Normal file
File diff suppressed because it is too large
Load Diff
116
lang/hu/validation.php
Normal file
116
lang/hu/validation.php
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Validation Language Lines
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The following language lines contain the default error messages used by
|
||||||
|
| the validator class. Some of these rules have multiple versions such
|
||||||
|
| such as the size rules. Feel free to tweak each of these messages.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'accepted' => 'Polje :attribute mora biti prihvaćeno.',
|
||||||
|
'active_url' => 'Polje :attribute nije ispravan URL.',
|
||||||
|
'after' => 'Polje :attribute mora biti datum nakon :date.',
|
||||||
|
'alpha' => 'Polje :attribute smije sadržavati samo slova.',
|
||||||
|
'alpha_dash' => 'Polje :attribute smije sadržavati samo slova, brojeve i crtice.',
|
||||||
|
'alpha_num' => 'Polje :attribute smije sadržavati samo slova i brojeve.',
|
||||||
|
'array' => 'Polje :attribute mora biti niz.',
|
||||||
|
'before' => 'Polje :attribute mora biti datum prije :date.',
|
||||||
|
'between' => [
|
||||||
|
'numeric' => 'Polje :attribute mora biti između :min - :max.',
|
||||||
|
'file' => 'Polje :attribute mora biti između :min - :max kilobajta.',
|
||||||
|
'string' => 'Polje :attribute mora biti između :min - :max znakova.',
|
||||||
|
'array' => 'Polje :attribute mora imati između :min - :max stavki.',
|
||||||
|
],
|
||||||
|
'boolean' => 'Polje :attribute mora biti false ili true.',
|
||||||
|
'confirmed' => 'Potvrda polja :attribute se ne podudara.',
|
||||||
|
'date' => 'Polje :attribute nije ispravan datum.',
|
||||||
|
'date_format' => 'Polje :attribute ne podudara s formatom :format.',
|
||||||
|
'different' => 'Polja :attribute i :other moraju biti različita.',
|
||||||
|
'digits' => 'Polje :attribute mora sadržavati :digits znamenki.',
|
||||||
|
'digits_between' => 'Polje :attribute mora imati između :min i :max znamenki.',
|
||||||
|
'dimensions' => 'The :attribute has invalid image dimensions.',
|
||||||
|
'distinct' => 'The :attribute field has a duplicate value.',
|
||||||
|
'email' => 'Polje :attribute mora biti ispravna e-mail adresa.',
|
||||||
|
'exists' => 'Odabrano polje :attribute nije ispravno.',
|
||||||
|
'filled' => 'The :attribute field is required.',
|
||||||
|
'image' => 'Polje :attribute mora biti slika.',
|
||||||
|
'in' => 'Odabrano polje :attribute nije ispravno.',
|
||||||
|
'in_array' => 'The :attribute field does not exist in :other.',
|
||||||
|
'integer' => 'Polje :attribute mora biti broj.',
|
||||||
|
'ip' => 'Polje :attribute mora biti ispravna IP adresa.',
|
||||||
|
'json' => 'The :attribute must be a valid JSON string.',
|
||||||
|
'max' => [
|
||||||
|
'numeric' => 'Polje :attribute mora biti manje od :max.',
|
||||||
|
'file' => 'Polje :attribute mora biti manje od :max kilobajta.',
|
||||||
|
'string' => 'Polje :attribute mora sadržavati manje od :max znakova.',
|
||||||
|
'array' => 'Polje :attribute ne smije imati više od :max stavki.',
|
||||||
|
],
|
||||||
|
'mimes' => 'Polje :attribute mora biti datoteka tipa: :values.',
|
||||||
|
'min' => [
|
||||||
|
'numeric' => 'Polje :attribute mora biti najmanje :min.',
|
||||||
|
'file' => 'Polje :attribute mora biti najmanje :min kilobajta.',
|
||||||
|
'string' => 'Polje :attribute mora sadržavati najmanje :min znakova.',
|
||||||
|
'array' => 'Polje :attribute mora sadržavati najmanje :min stavki.',
|
||||||
|
],
|
||||||
|
'not_in' => 'Odabrano polje :attribute nije ispravno.',
|
||||||
|
'numeric' => 'Polje :attribute mora biti broj.',
|
||||||
|
'present' => 'The :attribute field must be present.',
|
||||||
|
'regex' => 'Polje :attribute se ne podudara s formatom.',
|
||||||
|
'required' => 'Polje :attribute je obavezno.',
|
||||||
|
'required_if' => 'Polje :attribute je obavezno kada polje :other sadrži :value.',
|
||||||
|
'required_unless' => 'The :attribute field is required unless :other is in :values.',
|
||||||
|
'required_with' => 'Polje :attribute je obavezno kada postoji polje :values.',
|
||||||
|
'required_with_all' => 'Polje :attribute je obavezno kada postje polja :values.',
|
||||||
|
'required_without' => 'Polje :attribute je obavezno kada ne postoji polje :values.',
|
||||||
|
'required_without_all' => 'Polje :attribute je obavezno kada nijedno od polja :values ne postoji.',
|
||||||
|
'same' => 'Polja :attribute i :other se moraju podudarati.',
|
||||||
|
'size' => [
|
||||||
|
'numeric' => 'Polje :attribute mora biti :size.',
|
||||||
|
'file' => 'Polje :attribute mora biti :size kilobajta.',
|
||||||
|
'string' => 'Polje :attribute mora biti :size znakova.',
|
||||||
|
'array' => 'Polje :attribute mora sadržavati :size stavki.',
|
||||||
|
],
|
||||||
|
'string' => 'The :attribute must be a string.',
|
||||||
|
'timezone' => 'Polje :attribute mora biti ispravna vremenska zona.',
|
||||||
|
'unique' => 'Polje :attribute već postoji.',
|
||||||
|
'url' => 'Polje :attribute nije ispravnog formata.',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| 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 attribute place-holders
|
||||||
|
| with something more reader friendly such as E-Mail Address instead
|
||||||
|
| of "email". This simply helps us make messages a little cleaner.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'attributes' => [
|
||||||
|
//
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
@ -40,7 +40,7 @@ Route::get('tmp_pdf/{hash}', [App\Http\Controllers\ClientPortal\TempRouteControl
|
|||||||
|
|
||||||
Route::get('client/key_login/{contact_key}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'login'])->name('client.contact_login')->middleware(['domain_db','contact_key_login']);
|
Route::get('client/key_login/{contact_key}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'login'])->name('client.contact_login')->middleware(['domain_db','contact_key_login']);
|
||||||
Route::get('client/magic_link/{magic_link}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'magicLink'])->name('client.contact_magic_link')->middleware(['domain_db','contact_key_login']);
|
Route::get('client/magic_link/{magic_link}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'magicLink'])->name('client.contact_magic_link')->middleware(['domain_db','contact_key_login']);
|
||||||
Route::get('documents/{document_hash}', [App\Http\Controllers\ClientPortal\DocumentController::class, 'publicDownload'])->name('documents.public_download')->middleware(['domain_db']);
|
Route::get('documents/{document_hash}', [App\Http\Controllers\ClientPortal\DocumentController::class, 'publicDownload'])->name('documents.public_download')->middleware(['domain_db','token_auth']);
|
||||||
Route::get('error', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'errorPage'])->name('client.error');
|
Route::get('error', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'errorPage'])->name('client.error');
|
||||||
Route::get('client/payment/{contact_key}/{payment_id}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'paymentRouter'])->middleware(['domain_db','contact_key_login']);
|
Route::get('client/payment/{contact_key}/{payment_id}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'paymentRouter'])->middleware(['domain_db','contact_key_login']);
|
||||||
Route::get('client/ninja/{contact_key}/{company_key}', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'index'])->name('client.ninja_contact_login')->middleware(['domain_db']);
|
Route::get('client/ninja/{contact_key}/{company_key}', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'index'])->name('client.ninja_contact_login')->middleware(['domain_db']);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user