diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index bd398ea084a3..251fd8d21dd4 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -490,7 +490,7 @@ class AccountController extends BaseController } $labels = []; - foreach (['item', 'description', 'unit_cost', 'quantity'] as $field) { + foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total'] as $field) { $labels[$field] = trim(Input::get("labels_{$field}")); } $account->invoice_labels = json_encode($labels); diff --git a/app/Http/routes.php b/app/Http/routes.php index c41770d8c19a..fa7e85614734 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -391,7 +391,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.2'); + define('NINJA_VERSION', '2.4.3'); define('NINJA_DATE', '2000-01-01'); define('NINJA_FROM_EMAIL', 'maildelivery@invoiceninja.com'); diff --git a/app/Models/Account.php b/app/Models/Account.php index 067ba6d29c8e..bbfba1289485 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -26,8 +26,8 @@ class Account extends Eloquent ]; public static $advancedSettings = [ - ACCOUNT_INVOICE_DESIGN, ACCOUNT_INVOICE_SETTINGS, + ACCOUNT_INVOICE_DESIGN, ACCOUNT_TEMPLATES_AND_REMINDERS, ACCOUNT_CHARTS_AND_REPORTS, ACCOUNT_DATA_VISUALIZATIONS, diff --git a/resources/lang/da/texts.php b/resources/lang/da/texts.php index 98f666132725..71258403c658 100644 --- a/resources/lang/da/texts.php +++ b/resources/lang/da/texts.php @@ -822,4 +822,9 @@ 'gateways' => 'Payment Gateways', 'recurring_too_soon' => 'Det er for tidligt at generere den næste faktura, it\'s scheduled for :date', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + ); diff --git a/resources/lang/de/texts.php b/resources/lang/de/texts.php index ce842ad950ec..3c92476a3114 100644 --- a/resources/lang/de/texts.php +++ b/resources/lang/de/texts.php @@ -822,5 +822,10 @@ return array( 'gateways' => 'Payment Gateways', 'recurring_too_soon' => 'Es ist zu früh, um die nächste wiederkehrende Rechnung zu erstellen, it\'s scheduled for :date', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + ); diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 42491eb90aee..e2678426c23d 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -789,7 +789,7 @@ return array( 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', - 'last_sent_on' => 'Sent last: :date', + 'last_sent_on' => 'Sent Last: :date', 'page_expire' => 'This page will expire soon, :click_here to keep working', 'upcoming_quotes' => 'Upcoming Quotes', @@ -822,7 +822,7 @@ return array( 'pro' => 'Pro', 'gateways' => 'Payment Gateways', - 'next_send_on' => 'Send next: :date', + 'next_send_on' => 'Send Next: :date', 'no_longer_running' => 'This invoice is not scheduled to run', 'general_settings' => 'General Settings', 'customize' => 'Customize', diff --git a/resources/lang/es/texts.php b/resources/lang/es/texts.php index b064c8922e1b..4f350af3fa96 100644 --- a/resources/lang/es/texts.php +++ b/resources/lang/es/texts.php @@ -800,5 +800,10 @@ return array( 'gateways' => 'Payment Gateways', 'recurring_too_soon' => 'Es my pronto para crear la siguiente factura recurrente, it\'s scheduled for :date', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + ); diff --git a/resources/lang/es_ES/texts.php b/resources/lang/es_ES/texts.php index 175234b10568..95ef2b5ca6d9 100644 --- a/resources/lang/es_ES/texts.php +++ b/resources/lang/es_ES/texts.php @@ -821,4 +821,9 @@ return array( 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + ); diff --git a/resources/lang/fr/texts.php b/resources/lang/fr/texts.php index bdf65778e620..fc19c119d7cf 100644 --- a/resources/lang/fr/texts.php +++ b/resources/lang/fr/texts.php @@ -814,5 +814,10 @@ return array( 'gateways' => 'Payment Gateways', 'recurring_too_soon' => 'Il est trop tôt pour créer la prochaine facture récurrente, it\'s scheduled for :date', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + ); diff --git a/resources/lang/fr_CA/texts.php b/resources/lang/fr_CA/texts.php index 7810ef9f5bd5..1b0e7d822803 100644 --- a/resources/lang/fr_CA/texts.php +++ b/resources/lang/fr_CA/texts.php @@ -815,5 +815,10 @@ return array( 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + ); diff --git a/resources/lang/it/texts.php b/resources/lang/it/texts.php index cee9bb05d51e..916f78bc82ac 100644 --- a/resources/lang/it/texts.php +++ b/resources/lang/it/texts.php @@ -816,5 +816,10 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', ); diff --git a/resources/lang/lt/texts.php b/resources/lang/lt/texts.php index 09f4e7084fc0..c93e6d9a9196 100644 --- a/resources/lang/lt/texts.php +++ b/resources/lang/lt/texts.php @@ -823,6 +823,11 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', ); diff --git a/resources/lang/nb_NO/texts.php b/resources/lang/nb_NO/texts.php index 90d4c921778c..36ad7c3aa8b3 100644 --- a/resources/lang/nb_NO/texts.php +++ b/resources/lang/nb_NO/texts.php @@ -821,5 +821,10 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', ); \ No newline at end of file diff --git a/resources/lang/nl/texts.php b/resources/lang/nl/texts.php index e36ae44d14b0..bacb5e9d3298 100644 --- a/resources/lang/nl/texts.php +++ b/resources/lang/nl/texts.php @@ -816,5 +816,10 @@ return array( 'pro' => 'Pro', 'gateways' => 'Payment Gateways', 'recurring_too_soon' => 'Het is te vroeg om de volgende wederkerende factuur aan te maken, it\'s scheduled for :date', + + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', ); diff --git a/resources/lang/pt_BR/texts.php b/resources/lang/pt_BR/texts.php index e7e86e20f35d..562a3190ed41 100644 --- a/resources/lang/pt_BR/texts.php +++ b/resources/lang/pt_BR/texts.php @@ -816,5 +816,10 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', ); diff --git a/resources/lang/sv/texts.php b/resources/lang/sv/texts.php index f1fa93425acf..ed06fa1c8973 100644 --- a/resources/lang/sv/texts.php +++ b/resources/lang/sv/texts.php @@ -819,5 +819,10 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', + + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', ); diff --git a/resources/views/accounts/customize_design.blade.php b/resources/views/accounts/customize_design.blade.php index 4e829edd70a9..07b88de1975b 100644 --- a/resources/views/accounts/customize_design.blade.php +++ b/resources/views/accounts/customize_design.blade.php @@ -153,16 +153,14 @@
{!! Button::normal(trans('texts.help'))->withAttributes(['onclick' => 'showHelp()'])->appendIcon(Icon::create('question-sign')) !!} {!! Button::normal(trans('texts.cancel'))->asLinkTo(URL::to('/settings/invoice_design'))->appendIcon(Icon::create('remove-circle')) !!} - @if (Auth::user()->isPro()) - {!! Button::success(trans('texts.save'))->withAttributes(['onclick' => 'submitForm()'])->appendIcon(Icon::create('floppy-disk')) !!} - @endif + {!! Button::success(trans('texts.save'))->withAttributes(['onclick' => 'submitForm()'])->appendIcon(Icon::create('floppy-disk'))->withAttributes(['class' => 'save-button']) !!}
@endif diff --git a/resources/views/accounts/invoice_settings.blade.php b/resources/views/accounts/invoice_settings.blade.php index f5e8bb90626f..cfd929fbd334 100644 --- a/resources/views/accounts/invoice_settings.blade.php +++ b/resources/views/accounts/invoice_settings.blade.php @@ -10,7 +10,7 @@ .input-group-addon div.checkbox { display: inline; } - span.input-group-addon { + .tab-content span.input-group-addon { padding-right: 30px; } @@ -147,12 +147,6 @@
{!! Button::success(trans('texts.save'))->large()->submit()->appendIcon(Icon::create('floppy-disk')) !!}
- @else - @endif diff --git a/resources/views/accounts/token_management.blade.php b/resources/views/accounts/token_management.blade.php deleted file mode 100644 index 2f64596a92cf..000000000000 --- a/resources/views/accounts/token_management.blade.php +++ /dev/null @@ -1,72 +0,0 @@ -@extends('header') - -@section('content') - @parent - @include('accounts.nav', ['selected' => ACCOUNT_API_TOKENS, 'advanced' => true]) - - {!! Former::open('tokens/delete')->addClass('user-form') !!} - -
- {!! Former::text('tokenPublicId') !!} -
- {!! Former::close() !!} - - -
- {!! Button::normal(trans('texts.documentation'))->asLinkTo(NINJA_WEB_URL.'/knowledgebase/api-documentation/')->withAttributes(['target' => '_blank'])->appendIcon(Icon::create('info-sign')) !!} - @if (Utils::isNinja()) - {!! Button::normal(trans('texts.zapier'))->asLinkTo(ZAPIER_URL)->withAttributes(['target' => '_blank']) !!} - @endif - @if (Utils::isPro()) - {!! Button::primary(trans('texts.add_token'))->asLinkTo(URL::to('/tokens/create'))->appendIcon(Icon::create('plus-sign')) !!} - @endif -
- - - - {!! Datatable::table() - ->addColumn( - trans('texts.name'), - trans('texts.token'), - trans('texts.action')) - ->setUrl(url('api/tokens/')) - ->setOptions('sPaginationType', 'bootstrap') - ->setOptions('bFilter', false) - ->setOptions('bAutoWidth', false) - ->setOptions('aoColumns', [[ "sWidth"=> "40%" ], [ "sWidth"=> "40%" ], ["sWidth"=> "20%"]]) - ->setOptions('aoColumnDefs', [['bSortable'=>false, 'aTargets'=>[2]]]) - ->render('datatable') !!} - - - -@stop diff --git a/resources/views/header.blade.php b/resources/views/header.blade.php index f87d2f9dba5f..e7d2e455a76c 100644 --- a/resources/views/header.blade.php +++ b/resources/views/header.blade.php @@ -441,7 +441,7 @@ @foreach (\App\Models\Account::$basicSettings as $setting)
  • {!! link_to('settings/' . $setting, uctrans("texts.{$setting}")) !!}
  • @endforeach -
  • {!! uctrans('texts.advanced_settings') . Utils::getProLabel(ACCOUNT_ADVANCED_SETTINGS) !!}
  • +
  • {!! uctrans('texts.advanced_settings') . Utils::getProLabel(ACCOUNT_ADVANCED_SETTINGS) !!}
  • diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index 43ad79f3f355..13f1e9e43ef3 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -119,7 +119,8 @@ {!! trans('texts.last_sent_on', ['date' => link_to('/invoices/'.$lastSent->public_id, $invoice->last_sent_date, ['id' => 'lastSent'])]) !!}   @endif @if ($invoice->is_recurring && $invoice->getNextSendDate()) - {!! trans('texts.next_send_on', ['date' => ''.$account->formatDate($invoice->getNextSendDate()).'']) !!} + {!! trans('texts.next_send_on', ['date' => ''.$account->formatDate($invoice->getNextSendDate()). + '']) !!} @endif @endif diff --git a/resources/views/reports/d3.blade.php b/resources/views/reports/d3.blade.php index f4dc689eaea1..4dcc5fbba327 100644 --- a/resources/views/reports/d3.blade.php +++ b/resources/views/reports/d3.blade.php @@ -137,7 +137,7 @@ .endAngle(2 * Math.PI); - var diameter = 900, + var diameter = 800, format = d3.format(",d"); //color = d3.scale.category10(); @@ -171,7 +171,7 @@ data = bubble.nodes(data).filter(function(d) { return !d.children && d.displayTotal && d.displayName; - }); + }); var selection = svg.selectAll(".node") .data(data, function(d) { return d.displayName; }); diff --git a/tests/acceptance/InvoiceDesignCest.php b/tests/acceptance/InvoiceDesignCest.php index 748f68a49558..36dc6799d126 100644 --- a/tests/acceptance/InvoiceDesignCest.php +++ b/tests/acceptance/InvoiceDesignCest.php @@ -41,15 +41,16 @@ class InvoiceDesignCest //$I->executeJS('$("#secondary_color + .sp-replacer .sp-preview-inner").attr("style", "background-color: rgb(254,0,50);")'); $I->executeJS('$(".sp-container:nth-child(2) .sp-choose").click()'); + /* $I->fillField(['name' => 'labels_item'], $this->faker->text(6)); $I->fillField(['name' => 'labels_description'], $this->faker->text(12)); $I->fillField(['name' => 'labels_unit_cost'], $this->faker->text(12)); $I->fillField(['name' => 'labels_quantity'], $this->faker->text(8)); $I->uncheckOption('#hide_quantity'); - $I->checkOption('#hide_paid_to_date'); - + */ + $I->click('Save'); $I->wait(3);