diff --git a/app/Http/routes.php b/app/Http/routes.php index 0b043f24ba91..eed60982811f 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -435,7 +435,7 @@ if (!defined('CONTACT_EMAIL')) { define('NINJA_GATEWAY_CONFIG', 'NINJA_GATEWAY_CONFIG'); define('NINJA_WEB_URL', 'https://www.invoiceninja.com'); define('NINJA_APP_URL', 'https://app.invoiceninja.com'); - define('NINJA_VERSION', '2.4.6'); + define('NINJA_VERSION', '2.4.7'); define('NINJA_DATE', '2000-01-01'); define('NINJA_FROM_EMAIL', 'maildelivery@invoiceninja.com'); diff --git a/readme.md b/readme.md index 447f00909808..3bb80b1a58a7 100644 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ [![Join the chat at https://gitter.im/hillelcoren/invoice-ninja](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/hillelcoren/invoice-ninja?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ### Referral Program -* $100 per signup paid over 3 years | [Learn more](https://www.invoiceninja.com/referral-program/) +* $100 per signup paid over 3 years - [Learn more](https://www.invoiceninja.com/referral-program/) ### Reseller Program There are two options: diff --git a/resources/lang/da/texts.php b/resources/lang/da/texts.php index 6125f61374e0..8cac5e56ecea 100644 --- a/resources/lang/da/texts.php +++ b/resources/lang/da/texts.php @@ -917,5 +917,38 @@ 'country' => 'Country', 'include' => 'Include', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + ); diff --git a/resources/lang/de/texts.php b/resources/lang/de/texts.php index c2fe3e59ce8a..eae5510b0bcc 100644 --- a/resources/lang/de/texts.php +++ b/resources/lang/de/texts.php @@ -919,4 +919,37 @@ return array( 'country' => 'Land', 'include' => 'Hinzufügen', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + ); diff --git a/resources/lang/es/texts.php b/resources/lang/es/texts.php index 2b971743fe0b..f5236749c113 100644 --- a/resources/lang/es/texts.php +++ b/resources/lang/es/texts.php @@ -895,5 +895,38 @@ return array( 'country' => 'Country', 'include' => 'Include', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + ); diff --git a/resources/lang/es_ES/texts.php b/resources/lang/es_ES/texts.php index f71ab886a811..ea2922644209 100644 --- a/resources/lang/es_ES/texts.php +++ b/resources/lang/es_ES/texts.php @@ -916,4 +916,37 @@ return array( 'country' => 'Country', 'include' => 'Include', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + ); diff --git a/resources/lang/fr/texts.php b/resources/lang/fr/texts.php index 4fcc2a1c6eec..76b4ee253113 100644 --- a/resources/lang/fr/texts.php +++ b/resources/lang/fr/texts.php @@ -909,5 +909,38 @@ return array( 'user' => 'Utilisateur', 'country' => 'Pays', 'include' => 'Inclure', + + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', ); diff --git a/resources/lang/fr_CA/texts.php b/resources/lang/fr_CA/texts.php index 61cbe02727ad..4f94ef98f65d 100644 --- a/resources/lang/fr_CA/texts.php +++ b/resources/lang/fr_CA/texts.php @@ -910,4 +910,37 @@ return array( 'country' => 'Country', 'include' => 'Include', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + ); diff --git a/resources/lang/it/texts.php b/resources/lang/it/texts.php index ede5772c00af..a73598fa3e98 100644 --- a/resources/lang/it/texts.php +++ b/resources/lang/it/texts.php @@ -911,5 +911,38 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', + + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', ); diff --git a/resources/lang/lt/texts.php b/resources/lang/lt/texts.php index bd71755ba900..efb4248a6a3e 100644 --- a/resources/lang/lt/texts.php +++ b/resources/lang/lt/texts.php @@ -918,6 +918,39 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', + + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', ); diff --git a/resources/lang/nb_NO/texts.php b/resources/lang/nb_NO/texts.php index 74d6600a5dc9..43002f7f5bcc 100644 --- a/resources/lang/nb_NO/texts.php +++ b/resources/lang/nb_NO/texts.php @@ -916,5 +916,38 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', + + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', ); diff --git a/resources/lang/nl/texts.php b/resources/lang/nl/texts.php index bdcfe2480b11..e366bf5eca5c 100644 --- a/resources/lang/nl/texts.php +++ b/resources/lang/nl/texts.php @@ -912,5 +912,38 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', + + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', ); diff --git a/resources/lang/pt_BR/texts.php b/resources/lang/pt_BR/texts.php index 601c66c66f23..f5ca2a4da895 100644 --- a/resources/lang/pt_BR/texts.php +++ b/resources/lang/pt_BR/texts.php @@ -917,6 +917,29 @@ return array( 'user_unregistered' => 'Registre sua conta para enviar e-mails', 'user_unconfirmed' => 'Confirme sua conta para enviar e-mails', 'invalid_contact_email' => 'E-mail do contato inválido', - ] + ], + + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', ); diff --git a/resources/lang/sv/texts.php b/resources/lang/sv/texts.php index c26d84775a06..230eafb8ab26 100644 --- a/resources/lang/sv/texts.php +++ b/resources/lang/sv/texts.php @@ -914,5 +914,39 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', + + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + + 'email_errors' => [ + 'inactive_client' => 'Emails can not be sent to inactive clients', + 'inactive_contact' => 'Emails can not be sent to inactive contacts', + 'inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'user_unregistered' => 'Please register your account to send emails', + 'user_unconfirmed' => 'Please confirm your account to send emails', + 'invalid_contact_email' => 'Invalid contact email', + ], + + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import', + + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + ); diff --git a/resources/views/clients/show.blade.php b/resources/views/clients/show.blade.php index d6754ac6baec..c81cfa3fcc0c 100644 --- a/resources/views/clients/show.blade.php +++ b/resources/views/clients/show.blade.php @@ -327,9 +327,9 @@ } } }); - var tab = localStorage.getItem('client_tab').replace('#', ''); + var tab = localStorage.getItem('client_tab'); if (tab) { - $('.nav-tabs a[href="#' + tab + '"]').tab('show'); + $('.nav-tabs a[href="#' + tab.replace('#', '') + '"]').tab('show'); } else { window['load_activity'](); } diff --git a/tests/acceptance/APICest.php b/tests/acceptance/APICest.php index aff1e59c3c7e..53981b9cb256 100644 --- a/tests/acceptance/APICest.php +++ b/tests/acceptance/APICest.php @@ -4,7 +4,7 @@ use Codeception\Util\Fixtures; use Faker\Factory; use Codeception\Util\Debug; -class OnlinePaymentCest +class APICest { private $faker; private $token;