diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 0733d3ba1252..bf72a28ea68e 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -293,6 +293,7 @@ class AccountController extends BaseController $account->pdf_email_attachment = Input::get('pdf_email_attachment') ? true : false; $account->utf8_invoices = Input::get('utf8_invoices') ? true : false; + $account->auto_wrap = Input::get('auto_wrap') ? true : false; if (!$account->share_counter) { $account->quote_number_counter = Input::get('quote_number_counter'); diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index cfa492463bf6..70fa028200ab 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -145,12 +145,18 @@ class PaymentController extends BaseController public function create($clientPublicId = 0, $invoicePublicId = 0) { + $invoices = Invoice::scope() + ->where('is_recurring', '=', false) + ->where('is_quote', '=', false) + ->where('invoices.balance', '>', 0) + ->with('client', 'invoice_status') + ->orderBy('invoice_number')->get(); + $data = array( 'clientPublicId' => Input::old('client') ? Input::old('client') : $clientPublicId, 'invoicePublicId' => Input::old('invoice') ? Input::old('invoice') : $invoicePublicId, 'invoice' => null, - 'invoices' => Invoice::scope()->where('is_recurring', '=', false)->where('is_quote', '=', false) - ->with('client', 'invoice_status')->orderBy('invoice_number')->get(), + 'invoices' => $invoices, 'payment' => null, 'method' => 'POST', 'url' => "payments", diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 509dbf1cce9b..72ffce9c8bf3 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -16,6 +16,7 @@ class Kernel extends HttpKernel { 'Illuminate\Session\Middleware\StartSession', 'Illuminate\View\Middleware\ShareErrorsFromSession', 'App\Http\Middleware\VerifyCsrfToken', + 'App\Http\Middleware\DuplicateSubmissionCheck', 'App\Http\Middleware\StartupCheck', ]; diff --git a/app/Http/Middleware/DuplicateSubmissionCheck.php b/app/Http/Middleware/DuplicateSubmissionCheck.php new file mode 100644 index 000000000000..0b2726cc815a --- /dev/null +++ b/app/Http/Middleware/DuplicateSubmissionCheck.php @@ -0,0 +1,24 @@ +method(), ['POST', 'PUT', 'DELETE'])) { + $lastPage = session(SESSION_LAST_REQUEST_PAGE); + $lastTime = session(SESSION_LAST_REQUEST_TIME); + + if ($lastPage == $request->path() && (microtime(true) - $lastTime <= 1.5)) { + return redirect($request->path()); + } + + session([SESSION_LAST_REQUEST_PAGE => $request->path()]); + session([SESSION_LAST_REQUEST_TIME => microtime(true)]); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/app/Http/routes.php b/app/Http/routes.php index 5499f2c3537a..bcf423009e51 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -312,6 +312,9 @@ define('SESSION_DATETIME_FORMAT', 'datetimeFormat'); define('SESSION_COUNTER', 'sessionCounter'); define('SESSION_LOCALE', 'sessionLocale'); +define('SESSION_LAST_REQUEST_PAGE', 'SESSION_LAST_REQUEST_PAGE'); +define('SESSION_LAST_REQUEST_TIME', 'SESSION_LAST_REQUEST_TIME'); + define('DEFAULT_TIMEZONE', 'US/Eastern'); define('DEFAULT_CURRENCY', 1); // US Dollar define('DEFAULT_DATE_FORMAT', 'M j, Y'); diff --git a/app/Models/Account.php b/app/Models/Account.php index 4dadd3d521c3..b067127c590b 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -355,7 +355,8 @@ class Account extends Eloquent public function getEmailFooter() { if ($this->email_footer) { - return $this->email_footer; + // Add line breaks if HTML isn't already being used + return strip_tags($this->email_footer) == $this->email_footer ? nl2br($this->email_footer) : $this->email_footer; } else { return "

" . trans('texts.email_signature') . "
\$account

"; } diff --git a/app/Ninja/Repositories/InvoiceRepository.php b/app/Ninja/Repositories/InvoiceRepository.php index af0857989321..2a10335320d3 100644 --- a/app/Ninja/Repositories/InvoiceRepository.php +++ b/app/Ninja/Repositories/InvoiceRepository.php @@ -134,7 +134,7 @@ class InvoiceRepository } return $table->addColumn('due_date', function ($model) { return Utils::fromSqlDate($model->due_date); }) - ->addColumn('invoice_status_name', function ($model) { return $model->quote_invoice_id ? link_to("invoices/{$model->quote_invoice_id}/edit", trans('texts.converted')) : $model->invoice_status_name; }) + ->addColumn('invoice_status_name', function ($model) { return $model->quote_invoice_id ? link_to("invoices/{$model->quote_invoice_id}/edit", trans('texts.converted')) : self::getStatusLabel($model->invoice_status_id, $model->invoice_status_name); }) ->addColumn('dropdown', function ($model) use ($entityType) { if ($model->is_deleted) { @@ -187,6 +187,26 @@ class InvoiceRepository ->make(); } + private function getStatusLabel($statusId, $statusName) { + $label = trans("texts.{$statusName}"); + $class = 'default'; + switch ($statusId) { + case INVOICE_STATUS_SENT: + $class = 'info'; + break; + case INVOICE_STATUS_VIEWED: + $class = 'warning'; + break; + case INVOICE_STATUS_PARTIAL: + $class = 'primary'; + break; + case INVOICE_STATUS_PAID: + $class = 'success'; + break; + } + return "

$statusName

"; + } + public function getErrors($input) { $contact = (array) $input->client->contacts[0]; diff --git a/database/migrations/2015_04_16_122647_add_partial_amount_to_invoices.php b/database/migrations/2015_04_16_122647_add_partial_amount_to_invoices.php index 033e6268d628..9915b5b9f96a 100644 --- a/database/migrations/2015_04_16_122647_add_partial_amount_to_invoices.php +++ b/database/migrations/2015_04_16_122647_add_partial_amount_to_invoices.php @@ -20,6 +20,7 @@ class AddPartialAmountToInvoices extends Migration { Schema::table('accounts', function($table) { $table->boolean('utf8_invoices')->default(false); + $table->boolean('auto_wrap')->default(true); }); } @@ -38,6 +39,7 @@ class AddPartialAmountToInvoices extends Migration { Schema::table('accounts', function($table) { $table->dropColumn('utf8_invoices'); + $table->dropColumn('auto_wrap'); }); } diff --git a/public/css/built.css b/public/css/built.css index 01e9587a4953..5115288e1fa4 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2408,7 +2408,6 @@ div.checkbox > label { .container input[type=email], .container textarea, .container select { - /*font-family: 'Roboto', sans-serif;*/ font-size: 16px; font-weight: 400; width: 100%; @@ -2424,6 +2423,24 @@ div.checkbox > label { color: #444444; } +.container input:disabled, +.container textarea:disabled, +.container select:disabled { + background-color: #EEE !important; +} + .panel-title { font-size: 18px; -} \ No newline at end of file + color: white; +} + +.panel-heading { + /*background-color: #e37329 !important;*/ + background-color: #0b4d78 !important; +} + +/* +.panel-default { + border-color: #e37329 !important; +} +*/ \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css index 7d16afe5ff0b..243f095041e7 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -826,6 +826,24 @@ div.checkbox > label { color: #444444; } +.container input:disabled, +.container textarea:disabled, +.container select:disabled { + background-color: #EEE !important; +} + .panel-title { font-size: 18px; -} \ No newline at end of file + color: white; +} + +.panel-heading { + /*background-color: #e37329 !important;*/ + background-color: #0b4d78 !important; +} + +/* +.panel-default { + border-color: #e37329 !important; +} +*/ \ No newline at end of file diff --git a/public/js/built.js b/public/js/built.js index a7cec8cdf553..716f5ae74f77 100644 --- a/public/js/built.js +++ b/public/js/built.js @@ -31664,8 +31664,9 @@ function GetPdf(invoice, javascript){ SetPdfColor(invoice.invoice_design_id == 2 || invoice.invoice_design_id == 3 ? 'White' : 'Black',doc); var top = doc.internal.pageSize.height - layout.marginLeft; if (!invoice.is_pro) top -= 25; - var numLines = invoice.invoice_footer.split("\n").length - 1; - doc.text(layout.marginLeft, top - (numLines * 8), invoice.invoice_footer); + var footer = doc.splitTextToSize(invoice.invoice_footer, 500); + var numLines = footer.length - 1; + doc.text(layout.marginLeft, top - (numLines * 8), footer); } return doc; @@ -32065,34 +32066,6 @@ if (window.ko) { }; } -function wordWrapText(value, width) -{ - var doc = new jsPDF('p', 'pt'); - doc.setFont('Helvetica',''); - doc.setFontSize(10); - - var lines = value.split("\n"); - for (var i = 0; i < lines.length; i++) { - var numLines = doc.splitTextToSize(lines[i], width).length; - if (numLines <= 1) continue; - var j = 0; space = lines[i].length; - while (j++ < lines[i].length) { - if (lines[i].charAt(j) === ' ') space = j; - } - if (space == lines[i].length) space = width/6; - lines[i + 1] = lines[i].substring(space + 1) + ' ' + (lines[i + 1] || ''); - lines[i] = lines[i].substring(0, space); - } - - var newValue = (lines.join("\n")).trim(); - - if (value == newValue) { - return newValue; - } else { - return wordWrapText(newValue, width); - } -} - function getClientDisplayName(client) { var contact = client.contacts ? client.contacts[0] : false; @@ -32473,17 +32446,19 @@ function displayNotesAndTerms(doc, layout, invoice, y) var origY = y; if (invoice.public_notes) { - doc.text(layout.marginLeft, y, invoice.public_notes); - y += 16 + (doc.splitTextToSize(invoice.public_notes, 300).length * doc.internal.getFontSize()); + var notes = doc.splitTextToSize(invoice.public_notes, 260); + doc.text(layout.marginLeft, y, notes); + y += 16 + (notes.length * doc.internal.getFontSize()); } if (invoice.terms) { - doc.setFontType("bold"); + var terms = doc.splitTextToSize(invoice.terms, 260); + doc.setFontType("bold"); doc.text(layout.marginLeft, y, invoiceLabels.terms); y += 16; doc.setFontType("normal"); - doc.text(layout.marginLeft, y, invoice.terms); - y += 16 + (doc.splitTextToSize(invoice.terms, 300).length * doc.internal.getFontSize()); + doc.text(layout.marginLeft, y, terms); + y += 16 + (terms.length * doc.internal.getFontSize()); } return y - origY; diff --git a/public/js/script.js b/public/js/script.js index 61368c085939..f77f3ea4d249 100644 --- a/public/js/script.js +++ b/public/js/script.js @@ -102,8 +102,9 @@ function GetPdf(invoice, javascript){ SetPdfColor(invoice.invoice_design_id == 2 || invoice.invoice_design_id == 3 ? 'White' : 'Black',doc); var top = doc.internal.pageSize.height - layout.marginLeft; if (!invoice.is_pro) top -= 25; - var numLines = invoice.invoice_footer.split("\n").length - 1; - doc.text(layout.marginLeft, top - (numLines * 8), invoice.invoice_footer); + var footer = doc.splitTextToSize(invoice.invoice_footer, 500); + var numLines = footer.length - 1; + doc.text(layout.marginLeft, top - (numLines * 8), footer); } return doc; @@ -503,34 +504,6 @@ if (window.ko) { }; } -function wordWrapText(value, width) -{ - var doc = new jsPDF('p', 'pt'); - doc.setFont('Helvetica',''); - doc.setFontSize(10); - - var lines = value.split("\n"); - for (var i = 0; i < lines.length; i++) { - var numLines = doc.splitTextToSize(lines[i], width).length; - if (numLines <= 1) continue; - var j = 0; space = lines[i].length; - while (j++ < lines[i].length) { - if (lines[i].charAt(j) === ' ') space = j; - } - if (space == lines[i].length) space = width/6; - lines[i + 1] = lines[i].substring(space + 1) + ' ' + (lines[i + 1] || ''); - lines[i] = lines[i].substring(0, space); - } - - var newValue = (lines.join("\n")).trim(); - - if (value == newValue) { - return newValue; - } else { - return wordWrapText(newValue, width); - } -} - function getClientDisplayName(client) { var contact = client.contacts ? client.contacts[0] : false; @@ -911,17 +884,19 @@ function displayNotesAndTerms(doc, layout, invoice, y) var origY = y; if (invoice.public_notes) { - doc.text(layout.marginLeft, y, invoice.public_notes); - y += 16 + (doc.splitTextToSize(invoice.public_notes, 300).length * doc.internal.getFontSize()); + var notes = doc.splitTextToSize(invoice.public_notes, 260); + doc.text(layout.marginLeft, y, notes); + y += 16 + (notes.length * doc.internal.getFontSize()); } if (invoice.terms) { - doc.setFontType("bold"); + var terms = doc.splitTextToSize(invoice.terms, 260); + doc.setFontType("bold"); doc.text(layout.marginLeft, y, invoiceLabels.terms); y += 16; doc.setFontType("normal"); - doc.text(layout.marginLeft, y, invoice.terms); - y += 16 + (doc.splitTextToSize(invoice.terms, 300).length * doc.internal.getFontSize()); + doc.text(layout.marginLeft, y, terms); + y += 16 + (terms.length * doc.internal.getFontSize()); } return y - origY; diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 9c4a9cb69586..2f461d474f60 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -207,7 +207,7 @@ return array( 'client_will_create' => 'client will be created', 'clients_will_create' => 'clients will be created', 'email_settings' => 'Email Settings', - 'pdf_email_attachment' => 'Attach PDF to Emails', + 'pdf_email_attachment' => 'Attach to Emails', // application messages 'created_client' => 'Successfully created client', @@ -596,8 +596,10 @@ return array( 'more_fields' => 'More Fields', 'less_fields' => 'Less Fields', 'client_name' => 'Client Name', - 'pdf_settings' => 'PDFF Settings', - 'utf8_invoices' => 'UTF-8 Support Beta', + 'pdf_settings' => 'PDF Settings', + 'utf8_invoices' => 'Cyrillic Support', + 'product_settings' => 'Product Settings', + 'auto_wrap' => 'Auto Line Wrap', ); diff --git a/resources/views/accounts/account_gateway.blade.php b/resources/views/accounts/account_gateway.blade.php index 8f214354ba98..ab1825e128c8 100644 --- a/resources/views/accounts/account_gateway.blade.php +++ b/resources/views/accounts/account_gateway.blade.php @@ -7,9 +7,10 @@ {!! Former::populate($account) !!} - {!! Former::legend($title) !!} -
+
+

{!! trans($title) !!}

+
@if ($accountGateway) diff --git a/resources/views/accounts/import_export.blade.php b/resources/views/accounts/import_export.blade.php index ac2e36b954c5..c8460bf0884a 100644 --- a/resources/views/accounts/import_export.blade.php +++ b/resources/views/accounts/import_export.blade.php @@ -3,7 +3,7 @@ @section('content') @parent -{!! Former::open_for_files('company/import_map')->addClass('col-md-9 col-md-offset-1') !!} +{!! Former::open_for_files('company/import_map')->addClass('col-md-8 col-md-offset-2') !!}

{!! trans('texts.import_clients') !!}

@@ -16,7 +16,7 @@ {!! Former::close() !!} -{!! Former::open('company/export')->addClass('col-md-9 col-md-offset-1') !!} +{!! Former::open('company/export')->addClass('col-md-8 col-md-offset-2') !!}

{!! trans('texts.export_clients') !!}

@@ -28,7 +28,7 @@ {!! Former::close() !!} -{!! Former::open('company/cancel_account')->addClass('col-md-9 col-md-offset-1 cancel-account') !!} +{!! Former::open('company/cancel_account')->addClass('col-md-8 col-md-offset-2 cancel-account') !!}

{!! trans('texts.cancel_account') !!}

diff --git a/resources/views/accounts/invoice_settings.blade.php b/resources/views/accounts/invoice_settings.blade.php index 103a12b8400e..d0b3a6cdf6be 100644 --- a/resources/views/accounts/invoice_settings.blade.php +++ b/resources/views/accounts/invoice_settings.blade.php @@ -24,6 +24,7 @@ {{ Former::populateField('share_counter', intval($account->share_counter)) }} {{ Former::populateField('pdf_email_attachment', intval($account->pdf_email_attachment)) }} {{ Former::populateField('utf8_invoices', intval($account->utf8_invoices)) }} + {{ Former::populateField('auto_wrap', intval($account->auto_wrap)) }}
@@ -93,11 +94,12 @@
-

{!! trans('texts.email_settings') !!}

+

{!! trans('texts.pdf_settings') !!}

{!! Former::checkbox('pdf_email_attachment')->text(trans('texts.enable')) !!} {!! Former::checkbox('utf8_invoices')->text(trans('texts.enable')) !!} + {!! Former::checkbox('auto_wrap')->text(trans('texts.enable')) !!}
diff --git a/resources/views/accounts/notifications.blade.php b/resources/views/accounts/notifications.blade.php index f35e9f6db017..52c38e9618c1 100644 --- a/resources/views/accounts/notifications.blade.php +++ b/resources/views/accounts/notifications.blade.php @@ -53,11 +53,11 @@

{!! trans('texts.custom_messages') !!}

- {!! Former::textarea('invoice_terms')->label(trans('texts.default_invoice_terms')) + {!! Former::textarea('invoice_terms')->label(trans('texts.default_invoice_terms'))->rows(4) ->onchange("$('#invoice_terms').val(wordWrapText($('#invoice_terms').val(), 300))") !!} - {!! Former::textarea('invoice_footer')->label(trans('texts.default_invoice_footer')) + {!! Former::textarea('invoice_footer')->label(trans('texts.default_invoice_footer'))->rows(4) ->onchange("$('#invoice_footer').val(wordWrapText($('#invoice_footer').val(), 600))") !!} - {!! Former::textarea('email_footer')->label(trans('texts.default_email_footer')) !!} + {!! Former::textarea('email_footer')->label(trans('texts.default_email_footer'))->rows(4) !!}
diff --git a/resources/views/accounts/payments.blade.php b/resources/views/accounts/payments.blade.php index b78fd38e8a4c..f984a70e223e 100644 --- a/resources/views/accounts/payments.blade.php +++ b/resources/views/accounts/payments.blade.php @@ -4,7 +4,6 @@ @parent {!! Former::open('gateways/delete')->addClass('user-form') !!} - {!! Former::legend(trans('texts.online_payments')) !!}
{!! Former::text('accountGatewayPublicId') !!} diff --git a/resources/views/accounts/product.blade.php b/resources/views/accounts/product.blade.php index 8139b6a0cb74..b31d7e543050 100644 --- a/resources/views/accounts/product.blade.php +++ b/resources/views/accounts/product.blade.php @@ -8,9 +8,10 @@ ->addClass('col-md-8 col-md-offset-2 warn-on-exit') !!} - {!! Former::legend($title) !!} -
+
+

{!! $title !!}

+
@if ($product) diff --git a/resources/views/accounts/products.blade.php b/resources/views/accounts/products.blade.php index 202b09740ba3..054bc06578d1 100644 --- a/resources/views/accounts/products.blade.php +++ b/resources/views/accounts/products.blade.php @@ -8,8 +8,10 @@ {{ Former::populateField('update_products', intval($account->update_products)) }} - {!! Former::legend(trans('texts.product_library')) !!}
+
+

{!! trans('texts.product_settings') !!}

+
{!! Former::checkbox('fill_products')->text(trans('texts.fill_products_help')) !!} diff --git a/resources/views/accounts/token.blade.php b/resources/views/accounts/token.blade.php index 6a5dce7972e7..a508ea044d6f 100644 --- a/resources/views/accounts/token.blade.php +++ b/resources/views/accounts/token.blade.php @@ -8,9 +8,10 @@ 'name' => 'required', )); !!} - {!! Former::legend($title) !!} -
+
+

{!! trans($title) !!}

+
@if ($token) diff --git a/resources/views/accounts/token_management.blade.php b/resources/views/accounts/token_management.blade.php index 40c9f61635f2..eab95a1dd78b 100644 --- a/resources/views/accounts/token_management.blade.php +++ b/resources/views/accounts/token_management.blade.php @@ -5,7 +5,6 @@ @include('accounts.nav_advanced') {!! Former::open('tokens/delete')->addClass('user-form') !!} - {!! Former::legend('token_management') !!}
{!! Former::text('tokenPublicId') !!} diff --git a/resources/views/accounts/user_management.blade.php b/resources/views/accounts/user_management.blade.php index 8b6e07e7150f..f964b5b1d059 100644 --- a/resources/views/accounts/user_management.blade.php +++ b/resources/views/accounts/user_management.blade.php @@ -5,7 +5,6 @@ @include('accounts.nav_advanced') {!! Former::open('users/delete')->addClass('user-form') !!} - {!! Former::legend('user_management') !!}
{!! Former::text('userPublicId') !!} diff --git a/resources/views/credits/edit.blade.php b/resources/views/credits/edit.blade.php index 02e01ec2e51f..a06911da039b 100644 --- a/resources/views/credits/edit.blade.php +++ b/resources/views/credits/edit.blade.php @@ -14,7 +14,7 @@ )) !!}
-
+
diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 30d9bbb737f1..b53a288d01b2 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -56,7 +56,7 @@
-
+

{{ trans('texts.notifications') }}

@@ -73,7 +73,7 @@
-
+

{{ trans('texts.invoices_past_due') }}

@@ -107,8 +107,8 @@
-
-

+
+

{{ trans('texts.upcoming_invoices') }}

diff --git a/resources/views/header.blade.php b/resources/views/header.blade.php index d7a0c94c9fec..a0b892bdc488 100644 --- a/resources/views/header.blade.php +++ b/resources/views/header.blade.php @@ -23,6 +23,256 @@ @include('script') + + @stop @section('body') @@ -350,222 +600,5 @@

 

- - @stop \ No newline at end of file diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index 771dd4cbcc11..1df700acf219 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -359,7 +359,7 @@ {!! Button::normal(trans("texts.email_{$entityType}"))->withAttributes(array('id' => 'email_button', 'onclick' => 'onEmailClick()'))->appendIcon(Icon::create('send')) !!} @endif - @if ($invoice && $invoice->id && $entityType == ENTITY_INVOICE && !$invoice->is_recurring) + @if ($invoice && $invoice->id && $entityType == ENTITY_INVOICE && !$invoice->is_recurring && !$invoice->isPaid()) {!! Button::primary(trans('texts.enter_payment'))->withAttributes(array('onclick' => 'onPaymentClick()'))->appendIcon(Icon::create('usd')) !!} @endif @elseif ($invoice && $invoice->trashed() && !$invoice->is_deleted == '1') diff --git a/resources/views/payments/edit.blade.php b/resources/views/payments/edit.blade.php index 432d21d8a10a..15da6cd6e990 100644 --- a/resources/views/payments/edit.blade.php +++ b/resources/views/payments/edit.blade.php @@ -20,7 +20,7 @@
-
+
diff --git a/resources/views/reports/report_builder.blade.php b/resources/views/reports/report_builder.blade.php index cd34d5fca64d..0f06128281e2 100644 --- a/resources/views/reports/report_builder.blade.php +++ b/resources/views/reports/report_builder.blade.php @@ -11,20 +11,22 @@ @include('accounts.nav_advanced') - - {!! trans('texts.chart_builder') !!} -
- {!! Button::normal(trans('texts.data_visualizations'))->asLinkTo('/company/advanced_settings/data_visualizations')->appendIcon(Icon::create('globe')) !!} -
-
+ {!! Button::normal(trans('texts.data_visualizations')) + ->asLinkTo('/company/advanced_settings/data_visualizations') + ->withAttributes(['class' => 'pull-right']) + ->appendIcon(Icon::create('globe')) !!} + +

 

+

 

+ +
+
{!! Former::open()->addClass('warn-on-exit') !!} -
-
{!! Former::populateField('start_date', $startDate) !!} {!! Former::populateField('end_date', $endDate) !!} {!! Former::select('chart_type')->options($chartTypes, $chartType) !!} @@ -33,8 +35,6 @@ ->append('') !!} {!! Former::text('end_date')->data_date_format(Session::get(SESSION_DATE_PICKER_FORMAT)) ->append('') !!} -
-
@if (Auth::user()->isPro()) {!! Former::actions( Button::primary('Generate')->submit() ) !!} @@ -68,6 +68,8 @@
+
+