1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 00:11:35 +02:00

Bug fixes

This commit is contained in:
Hillel Coren 2015-12-29 19:49:40 +02:00
parent bb04eba0fe
commit 60daef8d58
25 changed files with 192 additions and 32 deletions

View File

@ -425,8 +425,7 @@ class PaymentController extends BaseController
$details['customerReference'] = $token; $details['customerReference'] = $token;
} else { } else {
$this->error('Token-No-Ref', $this->paymentService->lastError, $accountGateway); $this->error('Token-No-Ref', $this->paymentService->lastError, $accountGateway);
return Redirect::to('payment/'.$invitationKey) return Redirect::to('payment/'.$invitationKey)->withInput(Request::except('cvv'));
->withInput(Request::except('cvv'));
} }
} }
} }
@ -471,8 +470,12 @@ class PaymentController extends BaseController
Session::save(); Session::save();
$response->redirect(); $response->redirect();
} else { } else {
$this->error('Fatal', $response->getMessage(), $accountGateway); $this->error('Unknown', $response->getMessage(), $accountGateway);
return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.<p>', $response->getMessage()); if ($onSite) {
return Redirect::to('payment/'.$invitationKey)->withInput(Request::except('cvv'));
} else {
return Redirect::to('view/'.$invitationKey);
}
} }
} catch (\Exception $e) { } catch (\Exception $e) {
$this->error('Uncaught', false, $accountGateway, $e); $this->error('Uncaught', false, $accountGateway, $e);

View File

@ -175,7 +175,7 @@ class TaskController extends BaseController
{ {
$action = Input::get('action'); $action = Input::get('action');
if (in_array($action, ['archive', 'delete', 'invoice', 'restore', 'add_to_invoice'])) { if (in_array($action, ['archive', 'delete', 'restore'])) {
return self::bulk(); return self::bulk();
} }
@ -190,6 +190,10 @@ class TaskController extends BaseController
$task = $this->taskRepo->save($publicId, Input::all()); $task = $this->taskRepo->save($publicId, Input::all());
Session::flash('message', trans($publicId ? 'texts.updated_task' : 'texts.created_task')); Session::flash('message', trans($publicId ? 'texts.updated_task' : 'texts.created_task'));
if (in_array($action, ['invoice', 'add_to_invoice'])) {
return self::bulk();
}
return Redirect::to("tasks/{$task->public_id}/edit"); return Redirect::to("tasks/{$task->public_id}/edit");
} }

View File

@ -1,6 +1,5 @@
<?php <?php
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Application Routes | Application Routes
@ -435,7 +434,7 @@ if (!defined('CONTACT_EMAIL')) {
define('NINJA_GATEWAY_CONFIG', 'NINJA_GATEWAY_CONFIG'); define('NINJA_GATEWAY_CONFIG', 'NINJA_GATEWAY_CONFIG');
define('NINJA_WEB_URL', 'https://www.invoiceninja.com'); define('NINJA_WEB_URL', 'https://www.invoiceninja.com');
define('NINJA_APP_URL', 'https://app.invoiceninja.com'); define('NINJA_APP_URL', 'https://app.invoiceninja.com');
define('NINJA_VERSION', '2.4.8'); define('NINJA_VERSION', '2.4.8.1');
define('NINJA_DATE', '2000-01-01'); define('NINJA_DATE', '2000-01-01');
define('SOCIAL_LINK_FACEBOOK', 'https://www.facebook.com/invoiceninja'); define('SOCIAL_LINK_FACEBOOK', 'https://www.facebook.com/invoiceninja');
@ -510,7 +509,8 @@ if (!defined('CONTACT_EMAIL')) {
define('API_SERIALIZER_JSON', 'json'); define('API_SERIALIZER_JSON', 'json');
define('EMAIL_DESIGN_PLAIN', 1); define('EMAIL_DESIGN_PLAIN', 1);
define('FLAT_BUTTON_CSS', 'border:0 none;border-radius:6px;padding:12px 40px;margin:0 6px;cursor:hand;display:inline-block;font-size:14px;color:#fff;text-transform:none'); define('EMAIL_DESIGN_LIGHT', 2);
define('EMAIL_DESIGN_DARK', 3);
$creditCards = [ $creditCards = [
1 => ['card' => 'images/credit_cards/Test-Visa-Icon.png', 'text' => 'Visa'], 1 => ['card' => 'images/credit_cards/Test-Visa-Icon.png', 'text' => 'Visa'],

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -981,5 +981,13 @@
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -982,5 +982,13 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -272,7 +272,7 @@ return array(
'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.', 'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.',
'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.', 'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.',
'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.', 'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.',
'reset_password' => 'You can reset your account password by clicking the following link:', 'reset_password' => 'You can reset your account password by clicking the following button:',
'reset_password_footer' => 'If you did not request this password reset please email our support: ' . CONTACT_EMAIL, 'reset_password_footer' => 'If you did not request this password reset please email our support: ' . CONTACT_EMAIL,
@ -989,5 +989,7 @@ return array(
'field_due_date' => 'due date', 'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date', 'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule', 'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -958,5 +958,13 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -980,4 +980,12 @@ return array(
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -973,5 +973,13 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -974,4 +974,12 @@ return array(
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -975,5 +975,13 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -270,7 +270,7 @@ return array(
'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.', 'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.',
'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.', 'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.',
'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.', 'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.',
'reset_password' => 'You can reset your account password by clicking the following link:', 'reset_password' => 'You can reset your account password by clicking the following button:',
'reset_password_footer' => 'If you did not request this password reset please email our support: ' . CONTACT_EMAIL, 'reset_password_footer' => 'If you did not request this password reset please email our support: ' . CONTACT_EMAIL,
@ -982,6 +982,14 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -980,5 +980,13 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -976,5 +976,13 @@ return array(
'created_invoices' => 'Successfully created :count invoice(s)', 'created_invoices' => 'Successfully created :count invoice(s)',
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -973,4 +973,12 @@ return array(
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -978,4 +978,13 @@ return array(
'next_invoice_number' => 'The next invoice number is :number.', 'next_invoice_number' => 'The next invoice number is :number.',
'next_quote_number' => 'The next quote number is :number.', 'next_quote_number' => 'The next quote number is :number.',
'days_before' => 'days before',
'days_after' => 'days after',
'field_due_date' => 'due date',
'field_invoice_date' => 'invoice date',
'schedule' => 'Schedule',
'email_designs' => 'Email Designs',
'assigned_when_sent' => 'Assigned when sent',
); );

View File

@ -53,10 +53,11 @@
<div class="panel-body form-padding-right"> <div class="panel-body form-padding-right">
{!! Former::select('email_design_id') {!! Former::select('email_design_id')
->style('width: 200px') ->appendIcon('question-sign')
->addOption(trans('texts.plain'), 1) ->addGroupClass('email_design_id')
->addOption(trans('texts.light'), 2) ->addOption(trans('texts.plain'), EMAIL_DESIGN_PLAIN)
->addOption(trans('texts.dark'), 3) ->addOption(trans('texts.light'), EMAIL_DESIGN_LIGHT)
->addOption(trans('texts.dark'), EMAIL_DESIGN_DARK)
->help(trans('texts.email_design_help')) !!} ->help(trans('texts.email_design_help')) !!}
&nbsp; &nbsp;
@ -105,6 +106,39 @@
</div> </div>
</div> </div>
<div class="modal fade" id="designHelpModal" tabindex="-1" role="dialog" aria-labelledby="designHelpModalLabel" aria-hidden="true">
<div class="modal-dialog" style="min-width:150px">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="designHelpModalLabel">{{ trans('texts.email_designs') }}</h4>
</div>
<div class="modal-body">
<div class="row" style="text-align:center">
<div class="col-md-4">
<h4>{{ trans('texts.plain') }}</h4><br/>
<img src="{{ asset('images/emails/plain.png') }}" class="img-responsive"/>
</div>
<div class="col-md-4">
<h4>{{ trans('texts.light') }}</h4><br/>
<img src="{{ asset('images/emails/light.png') }}" class="img-responsive"/>
</div>
<div class="col-md-4">
<h4>{{ trans('texts.dark') }}</h4><br/>
<img src="{{ asset('images/emails/dark.png') }}" class="img-responsive"/>
</div>
</div>
</div>
<div class="modal-footer" style="margin-top: 0px">
<button type="button" class="btn btn-primary" data-dismiss="modal">{{ trans('texts.close') }}</button>
</div>
</div>
</div>
</div>
{!! Former::close() !!} {!! Former::close() !!}
<script type="text/javascript"> <script type="text/javascript">
@ -132,6 +166,9 @@
$('#iframeHelpModal').modal('show'); $('#iframeHelpModal').modal('show');
}); });
$('.email_design_id .input-group-addon').click(function() {
$('#designHelpModal').modal('show');
});
$(function() { $(function() {
onCustomLinkChange(); onCustomLinkChange();

View File

@ -20,11 +20,11 @@
</td> </td>
<td width="183" style="border-collapse: collapse; vertical-align: middle;" valign="middle"> <td width="183" style="border-collapse: collapse; vertical-align: middle;" valign="middle">
<p class="left" style="line-height: 22px; margin: 0; padding: 2px 0 0;"> <p class="left" style="line-height: 22px; margin: 0; padding: 2px 0 0;">
<span style="font-size: 11px; color: #8f8d8e;">
@if ($invoice->due_date) @if ($invoice->due_date)
{{ strtoupper(trans('texts.due_by', ['date' => $account->formatDate($invoice->due_date)])) }} <span style="font-size: 11px; color: #8f8d8e;">
{{ strtoupper(trans('texts.due_by', ['date' => $account->formatDate($invoice->due_date)])) }}
</span><br />
@endif @endif
</span><br />
<span style="font-size: 18px;"> <span style="font-size: 18px;">
{{ trans("texts.{$entityType}") }} {{ $invoice->invoice_number }} {{ trans("texts.{$entityType}") }} {{ $invoice->invoice_number }}
</span> </span>

View File

@ -20,11 +20,11 @@
</td> </td>
<td width="183" style="border-collapse: collapse; vertical-align: middle; line-height: 16px;" valign="middle"> <td width="183" style="border-collapse: collapse; vertical-align: middle; line-height: 16px;" valign="middle">
<p class="left" style="line-height: 22px; margin: 3px 0 0; padding: 0;"> <p class="left" style="line-height: 22px; margin: 3px 0 0; padding: 0;">
<span style="font-size: 11px; color: #8f8d8e;">
@if ($invoice->due_date) @if ($invoice->due_date)
{{ strtoupper(trans('texts.due_by', ['date' => $account->formatDate($invoice->due_date)])) }} <span style="font-size: 11px; color: #8f8d8e;">
{{ strtoupper(trans('texts.due_by', ['date' => $account->formatDate($invoice->due_date)])) }}
</span><br />
@endif @endif
</span><br />
<span style="font-size: 19px; color: #FFFFFF;"> <span style="font-size: 19px; color: #FFFFFF;">
{{ trans("texts.{$entityType}") }} {{ $invoice->invoice_number }} {{ trans("texts.{$entityType}") }} {{ $invoice->invoice_number }}
</span> </span>

View File

@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head> </head>
<body style="min-height: 600px; color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; background: #F4F5F5; margin: 0; padding: 0;" <body style="min-height: 700px; color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 12px; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; background: #F4F5F5; margin: 0; padding: 0;"
alink="#FF0000" link="#FF0000" bgcolor="#F4F5F5" text="#000000" yahoo="fix"> alink="#FF0000" link="#FF0000" bgcolor="#F4F5F5" text="#000000" yahoo="fix">
@yield('markup') @yield('markup')
@ -48,7 +48,7 @@
} }
</style> </style>
<div id="body_style" style="min-height: 600px; color: #2E2B2B; font-family: Helvetica, sans-serif; font-size: 16px; <div id="body_style" style="min-height: 700px; color: #2E2B2B; font-family: Helvetica, sans-serif; font-size: 16px;
background: #F4F5F5; padding: 0px 15px;"> background: #F4F5F5; padding: 0px 15px;">
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" width="600" align="center"> <table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" width="600" align="center">

View File

@ -1,9 +1,26 @@
{{ trans('texts.email_salutation', ['name' => $user->username]) }} <p/> @extends('emails.master_user')
{{ trans('texts.reset_password') }} <br/> @section('body')
{!! url('password/reset/'.$token) !!}<p/> <div>
{{ trans('texts.reset_password') }}
{{ trans('texts.email_signature') }} <br/> </div>
{{ trans('texts.email_from') }} <p/> &nbsp;
<div>
{{ trans('texts.reset_password_footer') }} <p/> <center>
@include('partials.email_button', [
'link' => URL::to("password/reset/{$token}"),
'field' => 'reset',
'color' => '#36c157',
])
</center>
</div>
&nbsp;
<div>
{{ trans('texts.email_signature') }}<br/>
{{ trans('texts.email_from') }}
</div>
&nbsp;
<div>
{{ trans('texts.reset_password_footer') }}
</div>
@stop

View File

@ -857,7 +857,7 @@
invoice.contact = _.findWhere(invoice.client.contacts, {send_invoice: true}); invoice.contact = _.findWhere(invoice.client.contacts, {send_invoice: true});
if (invoice.is_recurring) { if (invoice.is_recurring) {
invoice.invoice_number = '0000'; invoice.invoice_number = "{{ trans('texts.assigned_when_sent') }}";
if (invoice.start_date) { if (invoice.start_date) {
invoice.invoice_date = invoice.start_date; invoice.invoice_date = invoice.start_date;
} }