mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 13:04:30 -04:00
commit
039290694f
@ -123,7 +123,7 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailInvoiceTemplate()
|
public static function emailInvoiceTemplate()
|
||||||
{
|
{
|
||||||
$invoice_message = '<p>'.self::transformText('invoice_message').'</p><br><br><p>$view_link</p>';
|
$invoice_message = '<p>'.self::transformText('invoice_message').'</p><p>$view_link</p>';
|
||||||
|
|
||||||
return $invoice_message;
|
return $invoice_message;
|
||||||
}
|
}
|
||||||
@ -135,7 +135,7 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailQuoteTemplate()
|
public static function emailQuoteTemplate()
|
||||||
{
|
{
|
||||||
$quote_message = '<p>'.self::transformText('quote_message').'</p><br><br><p>$view_link</p>';
|
$quote_message = '<p>'.self::transformText('quote_message').'</p><p>$view_link</p>';
|
||||||
|
|
||||||
return $quote_message;
|
return $quote_message;
|
||||||
}
|
}
|
||||||
@ -147,21 +147,21 @@ class EmailTemplateDefaults
|
|||||||
|
|
||||||
public static function emailPaymentTemplate()
|
public static function emailPaymentTemplate()
|
||||||
{
|
{
|
||||||
$payment_message = '<p>'.self::transformText('payment_message').'</p><br><br><p>$view_link</p>';
|
$payment_message = '<p>'.self::transformText('payment_message').'</p><p>$view_link</p>';
|
||||||
|
|
||||||
return $payment_message;
|
return $payment_message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function emailCreditTemplate()
|
public static function emailCreditTemplate()
|
||||||
{
|
{
|
||||||
$credit_message = '<p>'.self::transformText('credit_message').'</p><br><br><p>$view_link</p>';
|
$credit_message = '<p>'.self::transformText('credit_message').'</p><p>$view_link</p>';
|
||||||
|
|
||||||
return $credit_message;
|
return $credit_message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function emailPaymentPartialTemplate()
|
public static function emailPaymentPartialTemplate()
|
||||||
{
|
{
|
||||||
$payment_message = '<p>'.self::transformText('payment_message').'</p><br><br><p>$view_link</p>';
|
$payment_message = '<p>'.self::transformText('payment_message').'</p><p>$view_link</p>';
|
||||||
|
|
||||||
return $payment_message;
|
return $payment_message;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,11 @@ class RequiredClientInfo extends Component
|
|||||||
*/
|
*/
|
||||||
public $contact;
|
public $contact;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $countries;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mappings for updating the database. Left side is mapping from gateway,
|
* Mappings for updating the database. Left side is mapping from gateway,
|
||||||
* right side is column in database.
|
* right side is column in database.
|
||||||
@ -58,16 +63,18 @@ class RequiredClientInfo extends Component
|
|||||||
'contact_phone' => 'phone',
|
'contact_phone' => 'phone',
|
||||||
];
|
];
|
||||||
|
|
||||||
public $show_form = true;
|
public $show_form = false;
|
||||||
|
|
||||||
public function handleSubmit(array $data): bool
|
public function handleSubmit(array $data): bool
|
||||||
{
|
{
|
||||||
$rules = [];
|
$rules = [];
|
||||||
|
|
||||||
collect($this->fields)->map(function ($field) use (&$rules) {
|
collect($this->fields)->map(function ($field) use (&$rules) {
|
||||||
$rules[$field['name']] = array_key_exists('validation_rules', $field)
|
if (!array_key_exists('filled', $field)) {
|
||||||
? $field['validation_rules']
|
$rules[$field['name']] = array_key_exists('validation_rules', $field)
|
||||||
: 'required';
|
? $field['validation_rules']
|
||||||
|
: 'required';
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$validator = Validator::make($data, $rules);
|
$validator = Validator::make($data, $rules);
|
||||||
@ -120,19 +127,23 @@ class RequiredClientInfo extends Component
|
|||||||
|
|
||||||
public function checkFields()
|
public function checkFields()
|
||||||
{
|
{
|
||||||
foreach ($this->fields as $field) {
|
foreach ($this->fields as $index => $field) {
|
||||||
$_field = $this->mappings[$field['name']];
|
$_field = $this->mappings[$field['name']];
|
||||||
|
|
||||||
if (Str::startsWith($field['name'], 'client_')) {
|
if (Str::startsWith($field['name'], 'client_')) {
|
||||||
(empty($this->contact->client->{$_field}) || is_null($this->contact->client->{$_field}))
|
if (empty($this->contact->client->{$_field}) || is_null($this->contact->client->{$_field})) {
|
||||||
? $this->show_form = true
|
$this->show_form = true;
|
||||||
: $this->show_form = false;
|
} else {
|
||||||
|
$this->fields[$index]['filled'] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Str::startsWith($field['name'], 'contact_')) {
|
if (Str::startsWith($field['name'], 'contact_')) {
|
||||||
(empty($this->contact->{$_field}) || is_null($this->contact->{$_field}))
|
if ((empty($this->contact->{$_field}) || is_null($this->contact->{$_field}))) {
|
||||||
? $this->show_form = true
|
$this->show_form = true;
|
||||||
: $this->show_form = false;
|
} else {
|
||||||
|
$this->fields[$index]['filled'] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
namespace App\PaymentDrivers\Authorize;
|
namespace App\PaymentDrivers\Authorize;
|
||||||
|
|
||||||
use App\Events\Payment\PaymentWasCreated;
|
|
||||||
use App\Jobs\Util\SystemLogger;
|
use App\Jobs\Util\SystemLogger;
|
||||||
use App\Models\ClientGatewayToken;
|
use App\Models\ClientGatewayToken;
|
||||||
use App\Models\GatewayType;
|
use App\Models\GatewayType;
|
||||||
@ -21,7 +20,6 @@ use App\Models\PaymentHash;
|
|||||||
use App\Models\PaymentType;
|
use App\Models\PaymentType;
|
||||||
use App\Models\SystemLog;
|
use App\Models\SystemLog;
|
||||||
use App\PaymentDrivers\AuthorizePaymentDriver;
|
use App\PaymentDrivers\AuthorizePaymentDriver;
|
||||||
use App\Utils\Ninja;
|
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,11 +44,11 @@ class AuthorizeCreditCard
|
|||||||
->get();
|
->get();
|
||||||
|
|
||||||
$data['tokens'] = $tokens;
|
$data['tokens'] = $tokens;
|
||||||
$data['gateway'] = $this->authorize->company_gateway;
|
$data['gateway'] = $this->authorize;
|
||||||
$data['public_client_id'] = $this->authorize->init()->getPublicClientKey();
|
$data['public_client_id'] = $this->authorize->init()->getPublicClientKey();
|
||||||
$data['api_login_id'] = $this->authorize->company_gateway->getConfigField('apiLoginId');
|
$data['api_login_id'] = $this->authorize->company_gateway->getConfigField('apiLoginId');
|
||||||
|
|
||||||
return render('gateways.authorize.credit_card_payment', $data);
|
return render('gateways.authorize.credit_card.pay', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processPaymentResponse($request)
|
public function processPaymentResponse($request)
|
||||||
@ -97,7 +95,6 @@ class AuthorizeCreditCard
|
|||||||
|
|
||||||
/*Refactor and push to BaseDriver*/
|
/*Refactor and push to BaseDriver*/
|
||||||
if ($data['response'] != null && $data['response']->getMessages()->getResultCode() == 'Ok') {
|
if ($data['response'] != null && $data['response']->getMessages()->getResultCode() == 'Ok') {
|
||||||
|
|
||||||
$this->storePayment($payment_hash, $data);
|
$this->storePayment($payment_hash, $data);
|
||||||
|
|
||||||
$vars = [
|
$vars = [
|
||||||
@ -184,7 +181,8 @@ class AuthorizeCreditCard
|
|||||||
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
SystemLog::CATEGORY_GATEWAY_RESPONSE,
|
||||||
SystemLog::EVENT_GATEWAY_SUCCESS,
|
SystemLog::EVENT_GATEWAY_SUCCESS,
|
||||||
SystemLog::TYPE_AUTHORIZE,
|
SystemLog::TYPE_AUTHORIZE,
|
||||||
$this->authorize->client);
|
$this->authorize->client
|
||||||
|
);
|
||||||
|
|
||||||
return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]);
|
return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]);
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ class AuthorizePaymentMethod
|
|||||||
$data['public_client_id'] = $this->authorize->init()->getPublicClientKey();
|
$data['public_client_id'] = $this->authorize->init()->getPublicClientKey();
|
||||||
$data['api_login_id'] = $this->authorize->company_gateway->getConfigField('apiLoginId');
|
$data['api_login_id'] = $this->authorize->company_gateway->getConfigField('apiLoginId');
|
||||||
|
|
||||||
return render('gateways.authorize.add_credit_card', $data);
|
return render('gateways.authorize.credit_card.authorize', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function authorizeBankTransfer()
|
public function authorizeBankTransfer()
|
||||||
|
@ -68,6 +68,12 @@ class AuthorizePaymentDriver extends BaseDriver
|
|||||||
return [
|
return [
|
||||||
['name' => 'client_name', 'label' => ctrans('texts.name'), 'type' => 'text', 'validation' => 'required|min:2'],
|
['name' => 'client_name', 'label' => ctrans('texts.name'), 'type' => 'text', 'validation' => 'required|min:2'],
|
||||||
['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required|email:rfc'],
|
['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required|email:rfc'],
|
||||||
|
['name' => 'client_address_line_1', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'required'],
|
||||||
|
['name' => 'client_address_line_2', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'sometimes'],
|
||||||
|
['name' => 'client_city', 'label' => ctrans('texts.city'), 'type' => 'text', 'validation' => 'required'],
|
||||||
|
['name' => 'client_state', 'label' => ctrans('texts.state'), 'type' => 'text', 'validation' => 'required'],
|
||||||
|
['name' => 'client_postal_code', 'label' => ctrans('texts.postal_code'), 'type' => 'text', 'validation' => 'required'],
|
||||||
|
['name' => 'client_country_id', 'label' => ctrans('texts.country'), 'type' => 'select', 'validation' => 'required'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,11 @@ class SOFORT
|
|||||||
$this->stripe = $stripe;
|
$this->stripe = $stripe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function authorizeView($data)
|
||||||
|
{
|
||||||
|
return render('gateways.stripe.sofort.authorize', $data);
|
||||||
|
}
|
||||||
|
|
||||||
public function paymentView(array $data)
|
public function paymentView(array $data)
|
||||||
{
|
{
|
||||||
$data['gateway'] = $this->stripe;
|
$data['gateway'] = $this->stripe;
|
||||||
|
@ -21,6 +21,7 @@ use App\Models\GatewayType;
|
|||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use App\Models\PaymentHash;
|
use App\Models\PaymentHash;
|
||||||
use App\Models\SystemLog;
|
use App\Models\SystemLog;
|
||||||
|
use App\PaymentDrivers\Stripe\ACH;
|
||||||
use App\PaymentDrivers\Stripe\Alipay;
|
use App\PaymentDrivers\Stripe\Alipay;
|
||||||
use App\PaymentDrivers\Stripe\Charge;
|
use App\PaymentDrivers\Stripe\Charge;
|
||||||
use App\PaymentDrivers\Stripe\CreditCard;
|
use App\PaymentDrivers\Stripe\CreditCard;
|
||||||
@ -56,7 +57,7 @@ class StripePaymentDriver extends BaseDriver
|
|||||||
|
|
||||||
public static $methods = [
|
public static $methods = [
|
||||||
GatewayType::CREDIT_CARD => CreditCard::class,
|
GatewayType::CREDIT_CARD => CreditCard::class,
|
||||||
GatewayType::BANK_TRANSFER => SOFORT::class,
|
GatewayType::BANK_TRANSFER => ACH::class,
|
||||||
GatewayType::ALIPAY => Alipay::class,
|
GatewayType::ALIPAY => Alipay::class,
|
||||||
GatewayType::SOFORT => SOFORT::class,
|
GatewayType::SOFORT => SOFORT::class,
|
||||||
GatewayType::APPLE_PAY => 1, // TODO
|
GatewayType::APPLE_PAY => 1, // TODO
|
||||||
|
@ -123,7 +123,7 @@ class HtmlEngine
|
|||||||
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')];
|
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')];
|
||||||
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.invoice_terms')];
|
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.invoice_terms')];
|
||||||
$data['$terms'] = &$data['$entity.terms'];
|
$data['$terms'] = &$data['$entity.terms'];
|
||||||
$data['$view_link'] = ['value' => '<a href="'.$this->invitation->getLink().'">'.ctrans('texts.view_invoice').'</a>', 'label' => ctrans('texts.view_invoice')];
|
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_invoice').'</a>', 'label' => ctrans('texts.view_invoice')];
|
||||||
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_invoice')];
|
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_invoice')];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ class HtmlEngine
|
|||||||
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.quote_number')];
|
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.quote_number')];
|
||||||
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.quote_terms')];
|
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.quote_terms')];
|
||||||
$data['$terms'] = &$data['$entity.terms'];
|
$data['$terms'] = &$data['$entity.terms'];
|
||||||
$data['$view_link'] = ['value' => '<a href="'.$this->invitation->getLink().'">'.ctrans('texts.view_quote').'</a>', 'label' => ctrans('texts.view_quote')];
|
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_quote').'</a>', 'label' => ctrans('texts.view_quote')];
|
||||||
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_quote')];
|
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_quote')];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ class HtmlEngine
|
|||||||
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.credit_number')];
|
$data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.credit_number')];
|
||||||
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.credit_terms')];
|
$data['$entity.terms'] = ['value' => $this->entity->terms ?: ' ', 'label' => ctrans('texts.credit_terms')];
|
||||||
$data['$terms'] = &$data['$entity.terms'];
|
$data['$terms'] = &$data['$entity.terms'];
|
||||||
$data['$view_link'] = ['value' => '<a href="'.$this->invitation->getLink().'">'.ctrans('texts.view_credit').'</a>', 'label' => ctrans('texts.view_credit')];
|
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_credit').'</a>', 'label' => ctrans('texts.view_credit')];
|
||||||
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
|
$data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
|
||||||
// $data['$view_link'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
|
// $data['$view_link'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
"composer/composer": "^2",
|
"composer/composer": "^2",
|
||||||
"czproject/git-php": "^3.17",
|
"czproject/git-php": "^3.17",
|
||||||
"doctrine/dbal": "^2.10",
|
"doctrine/dbal": "^2.10",
|
||||||
"fedeisas/laravel-mail-css-inliner": "^3",
|
|
||||||
"fideloper/proxy": "^4.2",
|
"fideloper/proxy": "^4.2",
|
||||||
"fzaninotto/faker": "^1.4",
|
"fzaninotto/faker": "^1.4",
|
||||||
"google/apiclient": "^2.7",
|
"google/apiclient": "^2.7",
|
||||||
|
62
composer.lock
generated
62
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "0afe2d541cb6e16cfb9d29faf3425c2d",
|
"content-hash": "94ab2953278081e3fdf663e1e7cf14c4",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "asgrim/ofxparser",
|
"name": "asgrim/ofxparser",
|
||||||
@ -1657,66 +1657,6 @@
|
|||||||
],
|
],
|
||||||
"time": "2020-12-29T14:50:06+00:00"
|
"time": "2020-12-29T14:50:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fedeisas/laravel-mail-css-inliner",
|
|
||||||
"version": "3.1",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/fedeisas/laravel-mail-css-inliner.git",
|
|
||||||
"reference": "263f395b46ef9666151ac78daf429632b0b2e2c3"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/fedeisas/laravel-mail-css-inliner/zipball/263f395b46ef9666151ac78daf429632b0b2e2c3",
|
|
||||||
"reference": "263f395b46ef9666151ac78daf429632b0b2e2c3",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"ext-dom": "*",
|
|
||||||
"illuminate/mail": "^7.4 || ^8.0",
|
|
||||||
"illuminate/support": "^7.4 || ^8.0",
|
|
||||||
"php": "^7.2.5",
|
|
||||||
"tijsverkoyen/css-to-inline-styles": "~2.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpunit/phpunit": "^8.5",
|
|
||||||
"swiftmailer/swiftmailer": "^6.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"laravel": {
|
|
||||||
"providers": [
|
|
||||||
"Fedeisas\\LaravelMailCssInliner\\LaravelMailCssInlinerServiceProvider"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Fedeisas\\LaravelMailCssInliner\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Fede Isas",
|
|
||||||
"email": "fedeisas@hotmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Inline the CSS of your HTML emails using Laravel",
|
|
||||||
"keywords": [
|
|
||||||
"css",
|
|
||||||
"laravel",
|
|
||||||
"mailer"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/fedeisas/laravel-mail-css-inliner/issues",
|
|
||||||
"source": "https://github.com/fedeisas/laravel-mail-css-inliner/tree/3.1"
|
|
||||||
},
|
|
||||||
"time": "2020-09-12T05:00:14+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "fideloper/proxy",
|
"name": "fideloper/proxy",
|
||||||
"version": "4.4.1",
|
"version": "4.4.1",
|
||||||
|
2
public/css/app.css
vendored
2
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
2
public/flutter_service_worker.js
vendored
2
public/flutter_service_worker.js
vendored
@ -27,7 +27,7 @@ const RESOURCES = {
|
|||||||
"assets/AssetManifest.json": "659dcf9d1baf3aed3ab1b9c42112bf8f",
|
"assets/AssetManifest.json": "659dcf9d1baf3aed3ab1b9c42112bf8f",
|
||||||
"version.json": "6b7a4ad416a3730ae32b64e007cef7f3",
|
"version.json": "6b7a4ad416a3730ae32b64e007cef7f3",
|
||||||
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
|
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
|
||||||
"main.dart.js": "1e4432ea8822b383364c591ad3798039",
|
"main.dart.js": "970638cb2278a4390edc11bc44e7adf8",
|
||||||
"manifest.json": "77215c1737c7639764e64a192be2f7b8",
|
"manifest.json": "77215c1737c7639764e64a192be2f7b8",
|
||||||
"/": "23224b5e03519aaa87594403d54412cf",
|
"/": "23224b5e03519aaa87594403d54412cf",
|
||||||
"icons/Icon-512.png": "0f9aff01367f0a0c69773d25ca16ef35",
|
"icons/Icon-512.png": "0f9aff01367f0a0c69773d25ca16ef35",
|
||||||
|
210482
public/main.dart.js
vendored
210482
public/main.dart.js
vendored
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"/js/app.js": "/js/app.js?id=a33a5a58bfc6e2174841",
|
"/js/app.js": "/js/app.js?id=a33a5a58bfc6e2174841",
|
||||||
"/css/app.css": "/css/app.css?id=7f1ae2f30438771b9dbe",
|
"/css/app.css": "/css/app.css?id=0bc73459b671b24af838",
|
||||||
"/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=a09bb529b8e1826f13b4",
|
"/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=a09bb529b8e1826f13b4",
|
||||||
"/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=8ce8955ba775ea5f47d1",
|
"/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=8ce8955ba775ea5f47d1",
|
||||||
"/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=cddcd46c630c71737bda",
|
"/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=cddcd46c630c71737bda",
|
||||||
|
@ -3262,6 +3262,7 @@ return [
|
|||||||
'cancelled' => 'Cancelled',
|
'cancelled' => 'Cancelled',
|
||||||
|
|
||||||
'checkout_authorize_label' => 'Checkout.com can be can saved as payment method for future use, once you complete your first transaction. Don\'t forget to check "Store credit card details" during payment process.',
|
'checkout_authorize_label' => 'Checkout.com can be can saved as payment method for future use, once you complete your first transaction. Don\'t forget to check "Store credit card details" during payment process.',
|
||||||
|
'sofort_authorize_label' => 'Bank account (SOFORT) can be can saved as payment method for future use, once you complete your first transaction. Don\'t forget to check "Store payment details" during payment process.',
|
||||||
|
|
||||||
'node_status' => 'Node status',
|
'node_status' => 'Node status',
|
||||||
'npm_status' => 'NPM status',
|
'npm_status' => 'NPM status',
|
||||||
|
@ -1,22 +1,19 @@
|
|||||||
@component('email.template.master', ['design' => 'light'])
|
@component('email.template.master', ['design' => 'light', 'whitelabel' => false])
|
||||||
|
|
||||||
@slot('header')
|
@slot('header')
|
||||||
@component('email.components.header', ['p' => '', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
Hello!
|
@endslot
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
@endslot
|
<p>You are receiving this email because we received a password reset request for your account.</p>
|
||||||
|
|
||||||
You are receiving this email because we received a password reset request for your account.
|
<a href="{{ $link }}" target="_blank" class="button">
|
||||||
|
Reset Password
|
||||||
|
</a>
|
||||||
|
|
||||||
@component('email.components.button', ['url' => $link, 'show_link' => true])
|
<p>
|
||||||
Reset Password
|
If you’re having trouble clicking the "Reset Password" button, copy and paste the URL below into your web
|
||||||
@endcomponent
|
browser:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '© InvoiceNinja'])
|
|
||||||
If you’re having trouble clicking the "Reset Password" button, copy and paste the URL below into your web browser:
|
|
||||||
<a href="{{ $link }}">{{ $link }}</a>
|
<a href="{{ $link }}">{{ $link }}</a>
|
||||||
@endcomponent
|
@endcomponent
|
||||||
|
|
||||||
@endcomponent
|
|
@ -1,35 +1,12 @@
|
|||||||
@component('mail::layout')
|
@component('email.template.master', ['design' => 'light', 'whitelabel' => false])
|
||||||
|
|
||||||
{{-- Header --}}
|
|
||||||
@slot('header')
|
|
||||||
@component('mail::header', ['url' => config('app.url')])
|
|
||||||
Header Title
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
{{-- Body --}}
|
|
||||||
{{ $user }}
|
|
||||||
trans('texts.confirmation_message')
|
|
||||||
|
|
||||||
@component('mail::button', ['url' => url("/user/confirm/{$user->confirmation_code}")])
|
|
||||||
trans('texts.confirm')
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
{{-- Subcopy --}}
|
|
||||||
@isset($subcopy)
|
|
||||||
@slot('subcopy')
|
|
||||||
@component('mail::subcopy')
|
|
||||||
{{ $subcopy }}
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
@endisset
|
|
||||||
|
|
||||||
|
|
||||||
{{-- Footer --}}
|
|
||||||
@slot('footer')
|
|
||||||
@component('mail::footer')
|
|
||||||
© {{ date('Y') }} {{ config('ninja.app_name') }}.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
@slot('header')
|
||||||
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
@endslot
|
||||||
|
|
||||||
|
<p>{{ ctrans('texts.confirmation_message') }}</p>
|
||||||
|
|
||||||
|
<a href="{{ url("/user/confirm/{$user->confirmation_code}") }}" target="_blank" class="button">
|
||||||
|
{{ ctrans('texts.confirm') }}
|
||||||
|
</a>
|
||||||
@endcomponent
|
@endcomponent
|
@ -1,14 +1,3 @@
|
|||||||
<div id="header" class="border-b {{ isset($logo) ? 'p-6' : '' }} flex justify-center">
|
@isset($logo)
|
||||||
@isset($logo)
|
<img src="{{ $logo }}" style="height: 4rem;">
|
||||||
<img src="{{ $logo }}" style="height: 6rem;">
|
@endisset
|
||||||
@endisset
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex flex-col items-center mt-8 mb-4">
|
|
||||||
<h1 id="title" class="text-2xl md:text-3xl mt-5">
|
|
||||||
{{ $slot }}
|
|
||||||
</h1>
|
|
||||||
@isset($p)
|
|
||||||
{!! $p !!}
|
|
||||||
@endisset
|
|
||||||
</div>
|
|
||||||
|
@ -1,82 +1,56 @@
|
|||||||
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
@slot('header')
|
||||||
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
@endslot
|
||||||
|
|
||||||
@slot('header')
|
<h1>Import completed</h1>
|
||||||
@component('email.components.header')
|
<p>Hello, here is the output of your recent import job.</p>
|
||||||
Import completed
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
@slot('greeting')
|
@if(isset($clients) && count($clients) >=1)
|
||||||
Hello,
|
<h3>Clients Imported: {{ count($clients) }} </h3>
|
||||||
@endslot
|
@endif
|
||||||
|
|
||||||
Here is the output of your recent import job. <br><br>
|
@if(isset($errors['clients']) && count($errors['clients']) >=1)
|
||||||
|
<h3>Client Errors</h3>
|
||||||
|
|
||||||
@if(isset($clients) && count($clients) >=1)
|
<ul>
|
||||||
|
@foreach($errors['clients'] as $error)
|
||||||
|
<li>{{ $error['client'] }} - {{ $error['error'] }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
|
|
||||||
<h3>Clients Imported: {{ count($clients) }} </h3>
|
@if(isset($invoices) && count($invoices) >=1)
|
||||||
|
|
||||||
@endif
|
<h3>Invoices Imported: {{ count($invoices) }} </h3>
|
||||||
|
|
||||||
@if(isset($errors['clients']) && count($errors['clients']) >=1)
|
@endif
|
||||||
|
|
||||||
<h3>Client Errors</h3>
|
@if(isset($errors['invoices']) && count($errors['invoices']) >=1)
|
||||||
|
<h3>Invoices Errors</h3>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
@foreach($errors['clients'] as $error)
|
@foreach($errors['invoices'] as $error)
|
||||||
<li>{{ $error['client'] }} - {{ $error['error'] }}</li>
|
<li>{{ $error['invoice'] }} - {{ $error['error'] }}</li>
|
||||||
@endforeach
|
@endforeach
|
||||||
</ul>
|
</ul>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@if(isset($invoices) && count($invoices) >=1)
|
@if(isset($products) && count($products) >=1)
|
||||||
|
<h3>Products Imported: {{ count($products) }} </h3>
|
||||||
|
@endif
|
||||||
|
|
||||||
<h3>Invoices Imported: {{ count($invoices) }} </h3>
|
@if(isset($errors['products']) && count($errors['products']) >=1)
|
||||||
|
<h3>Client Errors</h3>
|
||||||
|
|
||||||
@endif
|
<ul>
|
||||||
|
@foreach($errors['products'] as $error)
|
||||||
|
<li>{{ $error['product'] }} - {{ $error['error'] }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
@endif
|
||||||
|
|
||||||
@if(isset($errors['invoices']) && count($errors['invoices']) >=1)
|
<a href="{{ url('/') }}" target="_blank" class="button">Visit portal</a>
|
||||||
|
|
||||||
<h3>Invoices Errors</h3>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
@foreach($errors['invoices'] as $error)
|
|
||||||
<li>{{ $error['invoice'] }} - {{ $error['error'] }}</li>
|
|
||||||
@endforeach
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if(isset($products) && count($products) >=1)
|
|
||||||
|
|
||||||
<h3>Products Imported: {{ count($products) }} </h3>
|
|
||||||
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if(isset($errors['products']) && count($errors['products']) >=1)
|
|
||||||
|
|
||||||
<h3>Client Errors</h3>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
@foreach($errors['products'] as $error)
|
|
||||||
<li>{{ $error['product'] }} - {{ $error['error'] }}</li>
|
|
||||||
@endforeach
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@component('email.components.button', ['url' => url('/')])
|
|
||||||
Visit portal
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
|
|
||||||
@slot('signature')
|
|
||||||
Thank you, <br>
|
|
||||||
Invoice Ninja
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
@slot('footer')
|
|
||||||
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '© InvoiceNinja'])
|
|
||||||
For any info, please visit InvoiceNinja.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
<p>Thank you, <br/> Invoice Ninja.</p>
|
||||||
@endcomponent
|
@endcomponent
|
@ -1,26 +1,10 @@
|
|||||||
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
@slot('header')
|
||||||
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
@endslot
|
||||||
|
|
||||||
@slot('header')
|
<h1>Payment for your invoice has been completed!</h1>
|
||||||
@component('email.components.header', ['p' => 'Payment for your invoice has been completed!', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
|
<p>We want to inform you that payment was completed for your invoice.</p>
|
||||||
Invoice paid
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
@slot('greeting')
|
|
||||||
Hello,
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
We want to inform you that payment was completed for your invoice. Amount: $10,000.00.
|
|
||||||
|
|
||||||
@component('email.components.button', ['url' => 'https://invoiceninja.com', 'show_link' => true])
|
|
||||||
Visit InvoiceNinja
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
@slot('below_card')
|
|
||||||
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '© InvoiceNinja'])
|
|
||||||
For any info, please visit InvoiceNinja.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
<a href="https://invoiceninja.com" target="_blank" class="button">Visit Invoice Ninja</a>
|
||||||
@endcomponent
|
@endcomponent
|
@ -1,31 +1,13 @@
|
|||||||
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
|
||||||
@slot('header')
|
@slot('header')
|
||||||
@component('email.components.header')
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
Migration completed
|
@endslot
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
@slot('greeting')
|
<h1>Migration completed</h1>
|
||||||
Hello,
|
<p>We're happy to inform you that migration has been completed successfully. It is ready for you to review it.</p>
|
||||||
@endslot
|
|
||||||
|
|
||||||
We're happy to inform you that migration has been completed successfully. It is ready for you to review it.
|
<a href="{{ url('/') }}" target="_blank" class="button">Visit portal</a>
|
||||||
|
|
||||||
@component('email.components.button', ['url' => url('/')])
|
|
||||||
Visit portal
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
|
|
||||||
@slot('signature')
|
|
||||||
Thank you, <br>
|
|
||||||
Invoice Ninja
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
@slot('footer')
|
|
||||||
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '© InvoiceNinja'])
|
|
||||||
For any info, please visit InvoiceNinja.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
<p>Thank you, <br/> Invoice Ninja</p>
|
||||||
@endcomponent
|
@endcomponent
|
@ -1,4 +1,4 @@
|
|||||||
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
|
||||||
@slot('header')
|
@slot('header')
|
||||||
@component('email.components.header')
|
@component('email.components.header')
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
Whoops!
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
Looks like your migration failed.
|
@slot('header')
|
||||||
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
@endslot
|
||||||
|
|
||||||
<pre>
|
<h1>Whoops, migration failed.</h1>
|
||||||
{!! $exception->getMessage() !!}
|
<p>Looks like your migration failed. Here's the error message:</p>
|
||||||
{!! $content !!}
|
|
||||||
</pre>
|
<pre>
|
||||||
|
{!! $exception->getMessage() !!}
|
||||||
|
{!! $content !!}
|
||||||
|
</pre>
|
||||||
|
@endcomponent
|
||||||
|
@ -1,26 +1,10 @@
|
|||||||
@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
@slot('header')
|
||||||
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
@endslot
|
||||||
|
|
||||||
@slot('header')
|
<h1>Quote approved!</h1>
|
||||||
@component('email.components.header', ['p' => 'Your quote was approved!', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
|
<p>We want to inform you that quote was approved.</p>
|
||||||
Quote approved
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
@slot('greeting')
|
|
||||||
Hello,
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
We want to inform you that quote was approved. Put nicer text here.
|
|
||||||
|
|
||||||
@component('email.components.button', ['url' => 'https://invoiceninja.com', 'show_link' => true])
|
|
||||||
Visit InvoiceNinja
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
@slot('below_card')
|
|
||||||
@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '© InvoiceNinja'])
|
|
||||||
For any info, please visit InvoiceNinja.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
<a href="https://invoiceninja.com" target="_blank" class="button">Visit Invoice Ninja</a>
|
||||||
@endcomponent
|
@endcomponent
|
@ -1,30 +1,7 @@
|
|||||||
@component('mail::layout')
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
@slot('header')
|
||||||
{{-- Header --}}
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
@slot('header')
|
@endslot
|
||||||
@component('mail::header', ['url' => config('app.url')])
|
|
||||||
Header Title
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
{{-- Body --}}
|
|
||||||
{{ $message }}
|
|
||||||
|
|
||||||
{{-- Subcopy --}}
|
|
||||||
@isset($subcopy)
|
|
||||||
@slot('subcopy')
|
|
||||||
@component('mail::subcopy')
|
|
||||||
{{ $subcopy }}
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
@endisset
|
|
||||||
|
|
||||||
|
|
||||||
{{-- Footer --}}
|
|
||||||
@slot('footer')
|
|
||||||
@component('mail::footer')
|
|
||||||
© {{ date('Y') }} {{ config('ninja.app_name') }}.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
{{ $message }}
|
||||||
@endcomponent
|
@endcomponent
|
||||||
|
@ -1,40 +1,19 @@
|
|||||||
@component('mail::layout')
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings])
|
||||||
|
@slot('header')
|
||||||
{{-- Header --}}
|
@include('email.components.header', ['logo' => 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
@slot('header')
|
@endslot
|
||||||
@component('mail::header', ['url' => config('app.url')])
|
|
||||||
Header Title
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
{{-- Body --}}
|
|
||||||
{{ $message }}
|
|
||||||
|
|
||||||
{!! str_replace('\n', '<br>', $system_info) !!}
|
|
||||||
|
|
||||||
@if(@count($laravel_log) > 0)
|
|
||||||
<details>
|
|
||||||
<summary>{{ ctrans('texts.display_log') }}</summary>
|
|
||||||
@foreach($laravel_log as $log_line)
|
|
||||||
<small>{{ $log_line }}</small> <br>
|
|
||||||
@endforeach
|
|
||||||
</details>
|
|
||||||
@endif
|
|
||||||
{{-- Subcopy --}}
|
|
||||||
@isset($subcopy)
|
|
||||||
@slot('subcopy')
|
|
||||||
@component('mail::subcopy')
|
|
||||||
{{ $subcopy }}
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
@endisset
|
|
||||||
|
|
||||||
|
|
||||||
{{-- Footer --}}
|
|
||||||
@slot('footer')
|
|
||||||
@component('mail::footer')
|
|
||||||
© {{ date('Y') }} {{ config('ninja.app_name') }}.
|
|
||||||
@endcomponent
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
{{-- Body --}}
|
||||||
|
{{ $message }}
|
||||||
|
|
||||||
|
{!! str_replace('\n', '<br>', $system_info) !!}
|
||||||
|
|
||||||
|
@if(@count($laravel_log) > 0)
|
||||||
|
<details>
|
||||||
|
<summary>{{ ctrans('texts.display_log') }}</summary>
|
||||||
|
@foreach($laravel_log as $log_line)
|
||||||
|
<small>{{ $log_line }}</small> <br>
|
||||||
|
@endforeach
|
||||||
|
</details>
|
||||||
|
@endif
|
||||||
@endcomponent
|
@endcomponent
|
||||||
|
@ -1,22 +1,15 @@
|
|||||||
@component('email.template.master', ['design' => 'dark', 'settings' => $settings, 'whitelabel' => $whitelabel])
|
@component('email.template.master', ['design' => 'dark', 'settings' => $settings, 'whitelabel' => $whitelabel])
|
||||||
|
|
||||||
@slot('header')
|
@slot('header')
|
||||||
@component('email.components.header', ['p' => $body, 'logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
|
@include('email.components.header', ['logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
@endslot
|
||||||
|
|
||||||
@if(isset($title))
|
{!! $body !!}
|
||||||
{{$title}}
|
|
||||||
|
@slot('below_card')
|
||||||
|
@if($signature)
|
||||||
|
{{ $signature }}
|
||||||
@endif
|
@endif
|
||||||
|
@endslot
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
@if($footer)
|
|
||||||
@component('email.components.button', ['url' => $view_link])
|
|
||||||
{{$view_text}}
|
|
||||||
@endcomponent
|
|
||||||
@endif
|
|
||||||
|
|
||||||
|
|
||||||
@endslot
|
|
||||||
|
|
||||||
|
|
||||||
@endcomponent
|
@endcomponent
|
||||||
|
@ -1,30 +1,15 @@
|
|||||||
@component('email.template.master', ['design' => 'light', 'settings' => $settings, 'whitelabel' => $whitelabel])
|
@component('email.template.master', ['design' => 'light', 'settings' => $settings, 'whitelabel' => $whitelabel])
|
||||||
|
|
||||||
@slot('header')
|
@slot('header')
|
||||||
@component('email.components.header', ['p' => $body, 'logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png'])
|
@include('email.components.header', ['logo' => (strlen($settings->company_logo) > 1) ? url('') . $settings->company_logo : 'https://www.invoiceninja.com/wp-content/uploads/2015/10/logo-white-horizontal-1.png'])
|
||||||
|
|
||||||
@if(isset($title))
|
|
||||||
{{$title}}
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@endcomponent
|
|
||||||
|
|
||||||
|
|
||||||
@if($footer)
|
|
||||||
@component('email.components.button', ['url' => $view_link])
|
|
||||||
{{$view_text}}
|
|
||||||
@endcomponent
|
|
||||||
@endif
|
|
||||||
|
|
||||||
|
|
||||||
@endslot
|
@endslot
|
||||||
|
|
||||||
@slot('below_card')
|
{!! $body !!}
|
||||||
|
|
||||||
|
@slot('below_card')
|
||||||
@if($signature)
|
@if($signature)
|
||||||
{{ $signature }}
|
{{ $signature }}
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@endslot
|
@endslot
|
||||||
|
|
||||||
@endcomponent
|
@endcomponent
|
||||||
|
@ -1,78 +1,95 @@
|
|||||||
@php
|
@php
|
||||||
if(!isset($design)) $design = 'light';
|
if(!isset($design)) {
|
||||||
|
$design = 'light';
|
||||||
|
}
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
<html lang="en">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<title>@yield('title')</title>
|
</head>
|
||||||
</head>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
:root {
|
:root {
|
||||||
@isset($settings)
|
--primary-color: {{ isset($settings) ? $settings->primary_color : '#4caf50' }};
|
||||||
--primary-color: {{ $settings->primary_color }};
|
}
|
||||||
@else
|
|
||||||
--primary-color: #4caf50;
|
|
||||||
@endisset
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-primary {
|
.primary-color-bg {
|
||||||
border-color: var(--primary-color);
|
background-color: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#email-content h1, h2, h3, h4 {
|
||||||
|
display: block;
|
||||||
|
color: {{ $design == 'light' ? 'black' : 'white' }};
|
||||||
|
padding-bottom: 20px;
|
||||||
|
padding-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#email-content p {
|
||||||
|
display: block;
|
||||||
|
color: {{ $design == 'light' ? 'black' : 'white' }};
|
||||||
|
padding-bottom: 20px;
|
||||||
|
padding-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
background-color: var(--primary-color);
|
||||||
|
color: white;
|
||||||
|
padding: 10px 16px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#email-content a, .link {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@if($design == 'dark')
|
<body style="margin: 0; padding: 0; background-color: {{ $design == 'light' ? '#F9FAFB' : '#111827' }};">
|
||||||
<style>
|
<table role="presentation" cellpadding="0" cellspacing="0" width="100%">
|
||||||
* {
|
<tr>
|
||||||
color: #cbd5e0 !important;
|
<td style="padding: 20px; font-family: Arial, sans-serif, 'Open Sans'">
|
||||||
}
|
<table align="center" cellpadding="0" cellspacing="0" width="600"
|
||||||
</style>
|
style="box-shadow: 0 1px 3px 0 rgba(0,0,0,.1), 0 1px 2px 0 rgba(0,0,0,.06)">
|
||||||
@endif
|
<tr>
|
||||||
|
<td align="center" bgcolor="#4caf50" class="primary-color-bg" style="padding: 40px 0 30px 0;">
|
||||||
<body class="{{ $design == 'light' ? 'bg-gray-200' : 'bg-gray-800' }} my-10 font-sans {{ $design == 'light' ? 'text-gray-700' : 'text-gray-400' }}">
|
{{ $header }}
|
||||||
<div class="grid grid-cols-6">
|
</td>
|
||||||
<div class="col-span-4 col-start-2">
|
</tr>
|
||||||
<div class="{{ $design == 'light' ? 'bg-white' : 'bg-gray-900' }} shadow border-t-2 {{ $design == 'light' ? 'border-primary' : 'border-gray-800' }}">
|
<tr>
|
||||||
<div class="px-10 break-all">
|
<td bgcolor="{{ $design == 'light' ? '#ffffff' : '#1F2937'}}" style="padding: 40px 30px 40px 30px;">
|
||||||
{{ $header }}
|
<table cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse;">
|
||||||
</div>
|
<tr>
|
||||||
<div id="text" class="flex flex-col px-10 py-6">
|
<td align="center" id="email-content">
|
||||||
@isset($greeting)
|
{{ $slot }}
|
||||||
{{ $greeting }}
|
</td>
|
||||||
@endisset
|
</tr>
|
||||||
|
</table>
|
||||||
<div class="break-all">
|
</td>
|
||||||
{{ $slot}}
|
</tr>
|
||||||
</div>
|
<tr>
|
||||||
|
@isset($whitelabel)
|
||||||
@isset($signature)
|
@if(!$whitelabel)
|
||||||
{{ $signature }}
|
<td bgcolor="{{ $design == 'light' ? '#ffffff' : '#1F2937'}}" style="padding-top: 20px; padding-bottom: 20px;" align="center">
|
||||||
@endisset
|
<p style="margin: 0; border-top: 1px solid {{ $design == 'light' ? '#F3F4F6' : '#374151' }}; padding-top: 20px;">
|
||||||
</div>
|
<a href="https://invoiceninja.com" target="_blank">
|
||||||
</div>
|
<img
|
||||||
|
style="height: 4rem; {{ $design == 'dark' ? 'filter: invert(100%);' : '' }}"
|
||||||
@isset($below_card)
|
src="{{ asset('images/created-by-invoiceninja-new.png') }}"
|
||||||
<div id="bottomText" class="px-10 my-4 text-center">
|
alt="Invoice Ninja">
|
||||||
{{ $below_card }}
|
</a>
|
||||||
</div>
|
</p>
|
||||||
@endisset
|
</td>
|
||||||
|
@endif
|
||||||
</div>
|
@endif
|
||||||
</div>
|
</tr>
|
||||||
|
</table>
|
||||||
<!-- Whitelabel -->
|
</td>
|
||||||
@isset($whitelabel)
|
</tr>
|
||||||
@if(!$whitelabel)
|
</table>
|
||||||
<div style="display: flex; flex-direction: row; justify-content: center; margin-top: 1rem; margin-bottom: 1rem;">
|
|
||||||
<a href="https://invoiceninja.com" target="_blank">
|
|
||||||
<img style="height: 4rem; {{ $design == 'dark' ? 'filter: invert(100%);' : '' }}" src="{{ asset('images/created-by-invoiceninja-new.png') }}" alt="Invoice Ninja">
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
@endif
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -1,30 +1,47 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
<html lang="{{ App::getLocale() }}" class="bg-white">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
|
<title>Invoice Ninja</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="bg-white p-4">
|
<body>
|
||||||
{!! $body !!}
|
<table role="presentation" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
@if($signature)
|
<td style="font-family: Arial, sans-serif, 'Open Sans'">
|
||||||
<div style="margin-top: 20px">
|
<table cellpadding="0" cellspacing="0" width="100%">
|
||||||
{!! $signature !!}
|
<tr>
|
||||||
</div>
|
<td>
|
||||||
@endif
|
<table cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td id="email-content">
|
||||||
|
{!! $body !!}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
@isset($whitelabel)
|
||||||
|
@if(!$whitelabel)
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<a href="https://invoiceninja.com" target="_blank">
|
||||||
|
{{ __('texts.ninja_email_footer', ['site' => 'Invoice Ninja']) }}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<footer class="p-4">
|
|
||||||
{!! $footer !!}
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
@if(!$whitelabel)
|
|
||||||
<div style="display: block; margin-top: 1rem; margin-bottom: 1rem;">
|
|
||||||
<a href="https://invoiceninja.com" target="_blank">
|
|
||||||
{{ __('texts.ninja_email_footer', ['site' => 'Invoice Ninja']) }}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<style id="style">
|
<style id="style">
|
||||||
:root {
|
:root {
|
||||||
--primary-color: $ primary_color;
|
--primary-color: $primary_color;
|
||||||
--secondary-color: $ secondary_color;
|
--secondary-color: $secondary_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -12,13 +12,27 @@
|
|||||||
|
|
||||||
<form wire:submit.prevent="handleSubmit(Object.fromEntries(new FormData($event.target)))">
|
<form wire:submit.prevent="handleSubmit(Object.fromEntries(new FormData($event.target)))">
|
||||||
@foreach($fields as $field)
|
@foreach($fields as $field)
|
||||||
@component('portal.ninja2020.components.general.card-element', ['title' => $field['label']])
|
@if(!array_key_exists('filled', $field))
|
||||||
<input class="input w-full" type="{{ $field['type'] }}" name="{{ $field['name'] }}">
|
@component('portal.ninja2020.components.general.card-element', ['title' => $field['label']])
|
||||||
|
@if($field['name'] == 'client_country_id' || $field['name'] == 'client_shipping_country_id')
|
||||||
|
<select id="country" class="input w-full form-select" name="{{ $field['name'] }}">
|
||||||
|
<option value="none"></option>
|
||||||
|
|
||||||
@if(session()->has('validation_errors') && array_key_exists($field['name'], session('validation_errors')))
|
@foreach($countries as $country)
|
||||||
<p class="mt-2 text-gray-900 border-red-300 px-2 py-1 bg-gray-100">{{ session('validation_errors')[$field['name']][0] }}</p>
|
<option value="{{ $country->id }}">
|
||||||
@endif
|
{{ $country->iso_3166_2 }} ({{ $country->name }})
|
||||||
@endcomponent
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@else
|
||||||
|
<input class="input w-full" type="{{ $field['type'] }}" name="{{ $field['name'] }}">
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if(session()->has('validation_errors') && array_key_exists($field['name'], session('validation_errors')))
|
||||||
|
<p class="mt-2 text-gray-900 border-red-300 px-2 py-1 bg-gray-100">{{ session('validation_errors')[$field['name']][0] }}</p>
|
||||||
|
@endif
|
||||||
|
@endcomponent
|
||||||
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
@component('portal.ninja2020.components.general.card-element-single')
|
@component('portal.ninja2020.components.general.card-element-single')
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
@extends('portal.ninja2020.layout.app')
|
|
||||||
@section('meta_title', ctrans('texts.add_credit_card'))
|
|
||||||
|
|
||||||
@push('head')
|
|
||||||
<meta name="authorize-public-key" content="{{ $public_client_id }}">
|
|
||||||
<meta name="authorize-login-id" content="{{ $api_login_id }}">
|
|
||||||
|
|
||||||
<meta name="year-invalid" content="{{ ctrans('texts.year_invalid') }}">
|
|
||||||
<meta name="month-invalid" content="{{ ctrans('texts.month_invalid') }}">
|
|
||||||
<meta name="credit-card-invalid" content="{{ ctrans('texts.credit_card_invalid') }}">
|
|
||||||
|
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
|
|
||||||
<script src="{{ asset('js/clients/payments/card-js.min.js') }}"></script>
|
|
||||||
<link href="{{ asset('css/card-js.min.css') }}" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
@endpush
|
|
||||||
|
|
||||||
@section('body')
|
|
||||||
<form action="{{ route('client.payment_methods.store', ['method' => App\Models\GatewayType::CREDIT_CARD]) }}" method="post" id="server_response">
|
|
||||||
|
|
||||||
@csrf
|
|
||||||
<input type="hidden" name="company_gateway_id" value="{{ $gateway->id }}">
|
|
||||||
<input type="hidden" name="payment_method_id" value="1">
|
|
||||||
<input type="hidden" name="gateway_response" id="gateway_response">
|
|
||||||
<input type="hidden" name="is_default" id="is_default">
|
|
||||||
<input type="hidden" name="dataValue" id="dataValue" />
|
|
||||||
<input type="hidden" name="dataDescriptor" id="dataDescriptor" />
|
|
||||||
</form>
|
|
||||||
<div class="container mx-auto">
|
|
||||||
<div class="grid grid-cols-6 gap-4">
|
|
||||||
<div class="col-span-6 md:col-start-2 md:col-span-3">
|
|
||||||
<div class="alert alert-failure mb-4" hidden id="errors"></div>
|
|
||||||
@if(!Request::isSecure())
|
|
||||||
<p class="alert alert-failure">{{ ctrans('texts.https_required') }}</p>
|
|
||||||
@endif
|
|
||||||
<div class="bg-white shadow overflow-hidden sm:rounded-lg">
|
|
||||||
<div class="px-4 py-5 border-b border-gray-200 sm:px-6">
|
|
||||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
|
||||||
{{ ctrans('texts.add_credit_card') }}
|
|
||||||
</h3>
|
|
||||||
<p class="mt-1 max-w-2xl text-sm leading-5 text-gray-500" translate>
|
|
||||||
{{ ctrans('texts.authorize_for_future_use') }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<dl>
|
|
||||||
<div class="bg-gray-50 px-4 py-5 sm:px-6">
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 flex justify-center">
|
|
||||||
@include('portal.ninja2020.gateways.authorize.credit_card')
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.save_as_default') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
<input type="checkbox" class="form-checkbox cursor-pointer" name="proxy_is_default" id="proxy_is_default" />
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="bg-gray-50 px-4 py-5 flex justify-end">
|
|
||||||
<div id="errors"></div>
|
|
||||||
<button type="primary" class="button button-primary bg-primary" id="card_button">
|
|
||||||
<svg class="animate-spin h-5 w-5 text-white hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
|
||||||
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
|
||||||
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
|
||||||
</svg>
|
|
||||||
<span>{{ __('texts.save') }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@push('footer')
|
|
||||||
|
|
||||||
@if($gateway->getConfigField('testMode'))
|
|
||||||
<script src="https://jstest.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
|
||||||
@else
|
|
||||||
<script src="https://js.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<script src="{{ asset('js/clients/payment_methods/authorize-authorize-card.js') }}"></script>
|
|
||||||
@endpush
|
|
@ -1,10 +0,0 @@
|
|||||||
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6" style="display: flex!important; justify-content: center!important;">
|
|
||||||
<div class="card-js" id="my-card" data-capture-name="true">
|
|
||||||
<input class="name" id="cardholder_name" name="card-holders-name" placeholder="{{ ctrans('texts.name')}}">
|
|
||||||
<input class="card-number my-custom-class" id="card_number" name="card-number">
|
|
||||||
<input class="expiry-month" name="expiry-month" id="expiration_month">
|
|
||||||
<input class="expiry-year" name="expiry-year" id="expiration_year">
|
|
||||||
<input class="cvc" name="cvc" id="cvv">
|
|
||||||
</div>
|
|
||||||
<div id="errors"></div>
|
|
||||||
</div>
|
|
@ -0,0 +1,54 @@
|
|||||||
|
@extends('portal.ninja2020.layout.payments', ['gateway_title' => ctrans('texts.credit_card'), 'card_title' => ctrans('texts.credit_card')])
|
||||||
|
|
||||||
|
@section('gateway_head')
|
||||||
|
<meta name="authorize-public-key" content="{{ $public_client_id }}">
|
||||||
|
<meta name="authorize-login-id" content="{{ $api_login_id }}">
|
||||||
|
<meta name="year-invalid" content="{{ ctrans('texts.year_invalid') }}">
|
||||||
|
<meta name="month-invalid" content="{{ ctrans('texts.month_invalid') }}">
|
||||||
|
<meta name="credit-card-invalid" content="{{ ctrans('texts.credit_card_invalid') }}">
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
|
||||||
|
<script src="{{ asset('js/clients/payments/card-js.min.js') }}"></script>
|
||||||
|
|
||||||
|
<link href="{{ asset('css/card-js.min.css') }}" rel="stylesheet" type="text/css">
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('gateway_content')
|
||||||
|
<form action="{{ route('client.payment_methods.store', ['method' => App\Models\GatewayType::CREDIT_CARD]) }}"
|
||||||
|
method="post" id="server_response">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<input type="hidden" name="company_gateway_id" value="{{ $gateway->id }}">
|
||||||
|
<input type="hidden" name="payment_method_id" value="1">
|
||||||
|
<input type="hidden" name="gateway_response" id="gateway_response">
|
||||||
|
<input type="hidden" name="is_default" id="is_default">
|
||||||
|
<input type="hidden" name="dataValue" id="dataValue"/>
|
||||||
|
<input type="hidden" name="dataDescriptor" id="dataDescriptor"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
@if(!Request::isSecure())
|
||||||
|
<p class="alert alert-failure">{{ ctrans('texts.https_required') }}</p>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="alert alert-failure mb-4" hidden id="errors"></div>
|
||||||
|
|
||||||
|
@component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.method')])
|
||||||
|
{{ ctrans('texts.credit_card') }}
|
||||||
|
@endcomponent
|
||||||
|
|
||||||
|
@include('portal.ninja2020.gateways.authorize.includes.credit_card')
|
||||||
|
|
||||||
|
@component('portal.ninja2020.gateways.includes.pay_now', ['id' => 'card_button'])
|
||||||
|
{{ ctrans('texts.add_payment_method') }}
|
||||||
|
@endcomponent
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('gateway_footer')
|
||||||
|
@if($gateway->getConfigField('testMode'))
|
||||||
|
<script src="https://jstest.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
||||||
|
@else
|
||||||
|
<script src="https://js.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<script src="{{ asset('js/clients/payment_methods/authorize-authorize-card.js') }}"></script>
|
||||||
|
@endsection
|
@ -0,0 +1,55 @@
|
|||||||
|
@extends('portal.ninja2020.layout.payments', ['gateway_title' => ctrans('texts.payment_type_credit_card'), 'card_title' => ctrans('texts.payment_type_credit_card')])
|
||||||
|
|
||||||
|
@section('gateway_head')
|
||||||
|
<meta name="authorize-public-key" content="{{ $public_client_id }}">
|
||||||
|
<meta name="authorize-login-id" content="{{ $api_login_id }}">
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
|
||||||
|
<script src="{{ asset('js/clients/payments/card-js.min.js') }}"></script>
|
||||||
|
|
||||||
|
<link href="{{ asset('css/card-js.min.css') }}" rel="stylesheet" type="text/css">
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('gateway_content')
|
||||||
|
<form action="{{ route('client.payments.response') }}" method="post" id="server_response">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="payment_hash" value="{{ $payment_hash }}">
|
||||||
|
<input type="hidden" name="company_gateway_id" value="{{ $gateway->company_gateway->id }}">
|
||||||
|
<input type="hidden" name="payment_method_id" value="1">
|
||||||
|
<input type="hidden" name="gateway_response" id="gateway_response">
|
||||||
|
<input type="hidden" name="dataValue" id="dataValue"/>
|
||||||
|
<input type="hidden" name="dataDescriptor" id="dataDescriptor"/>
|
||||||
|
<input type="hidden" name="token" id="token"/>
|
||||||
|
<input type="hidden" name="store_card" id="store_card"/>
|
||||||
|
<input type="hidden" name="amount_with_fee" id="amount_with_fee" value="{{ $total['amount_with_fee'] }}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="alert alert-failure mb-4" hidden id="errors"></div>
|
||||||
|
|
||||||
|
@component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.payment_type')])
|
||||||
|
{{ ctrans('texts.credit_card') }}
|
||||||
|
@endcomponent
|
||||||
|
|
||||||
|
@include('portal.ninja2020.gateways.includes.payment_details')
|
||||||
|
|
||||||
|
@if($token)
|
||||||
|
@component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.credit_card')])
|
||||||
|
{{ strtoupper($token->meta->brand) }} - **** {{ $token->meta->last4 }}
|
||||||
|
@endcomponent
|
||||||
|
|
||||||
|
@include('portal.ninja2020.gateways.includes.pay_now', ['id' => 'card_button', 'class' => 'pay_now_button', 'data' => ['id' => $token->hashed_id]])
|
||||||
|
@else
|
||||||
|
@include('portal.ninja2020.gateways.authorize.includes.credit_card')
|
||||||
|
@include('portal.ninja2020.gateways.includes.pay_now', ['id' => 'card_button'])
|
||||||
|
@endif
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('gateway_footer')
|
||||||
|
@if($gateway->company_gateway->getConfigField('testMode'))
|
||||||
|
<script src="https://jstest.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
||||||
|
@else
|
||||||
|
<script src="https://js.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<script src="{{ asset('js/clients/payments/authorize-credit-card-payment.js') }}"></script>
|
||||||
|
@endsection
|
@ -1,154 +0,0 @@
|
|||||||
@extends('portal.ninja2020.layout.app')
|
|
||||||
@section('meta_title', ctrans('texts.payment_type_credit_card'))
|
|
||||||
|
|
||||||
@push('head')
|
|
||||||
<meta name="authorize-public-key" content="{{ $public_client_id }}">
|
|
||||||
<meta name="authorize-login-id" content="{{ $api_login_id }}">
|
|
||||||
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
|
|
||||||
<script src="{{ asset('js/clients/payments/card-js.min.js') }}"></script>
|
|
||||||
<link href="{{ asset('css/card-js.min.css') }}" rel="stylesheet" type="text/css">
|
|
||||||
|
|
||||||
@endpush
|
|
||||||
|
|
||||||
@section('body')
|
|
||||||
<form action="{{ route('client.payments.response') }}" method="post" id="server_response">
|
|
||||||
@csrf
|
|
||||||
<input type="hidden" name="payment_hash" value="{{ $payment_hash }}">
|
|
||||||
<input type="hidden" name="company_gateway_id" value="{{ $gateway->id }}">
|
|
||||||
<input type="hidden" name="payment_method_id" value="1">
|
|
||||||
<input type="hidden" name="gateway_response" id="gateway_response">
|
|
||||||
<input type="hidden" name="dataValue" id="dataValue" />
|
|
||||||
<input type="hidden" name="dataDescriptor" id="dataDescriptor" />
|
|
||||||
<input type="hidden" name="token" id="token" />
|
|
||||||
<input type="hidden" name="store_card" id="store_card" />
|
|
||||||
<input type="hidden" name="amount_with_fee" id="amount_with_fee" value="{{ $total['amount_with_fee'] }}" />
|
|
||||||
</form>
|
|
||||||
<div class="container mx-auto">
|
|
||||||
<div class="grid grid-cols-6 gap-4">
|
|
||||||
<div class="col-span-6 md:col-start-2 md:col-span-4">
|
|
||||||
<div class="alert alert-failure mb-4" hidden id="errors"></div>
|
|
||||||
<div class="bg-white shadow overflow-hidden sm:rounded-lg">
|
|
||||||
<div class="px-4 py-5 border-b border-gray-200 sm:px-6">
|
|
||||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
|
||||||
{{ ctrans('texts.enter_payment') }}
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
@if($tokens->count() == 0)
|
|
||||||
<dl>
|
|
||||||
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.subtotal') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
{{ App\Utils\Number::formatMoney($total['invoice_totals'], $client) }}
|
|
||||||
</dd>
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.gateway_fees') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
{{ App\Utils\Number::formatMoney($total['fee_total'], $client) }}
|
|
||||||
</dd>
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.total') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
{{ App\Utils\Number::formatMoney($total['amount_with_fee'], $client) }}
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@include('portal.ninja2020.gateways.authorize.credit_card')
|
|
||||||
|
|
||||||
<div class="{{ ($gateway->token_billing == 'optin' || $gateway->token_billing == 'optout') ? 'sm:grid' : 'hidden' }} bg-gray-50 px-4 py-5 sm:grid-cols-3 sm:gap-4 sm:px-6">
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.token_billing_checkbox') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
<label class="mr-4">
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
class="form-radio cursor-pointer"
|
|
||||||
name="store_card_checkbox"
|
|
||||||
id="proxy_is_default"
|
|
||||||
value="true"
|
|
||||||
{{ ($gateway->token_billing == 'always' || $gateway->token_billing == 'optout') ? 'checked' : '' }} />
|
|
||||||
<span class="ml-1 cursor-pointer">{{ ctrans('texts.yes') }}</span>
|
|
||||||
</label>
|
|
||||||
<label>
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
class="form-radio cursor-pointer"
|
|
||||||
name="store_card_checkbox"
|
|
||||||
id="proxy_is_default"
|
|
||||||
value="false"
|
|
||||||
{{ ($gateway->token_billing == 'off' || $gateway->token_billing == 'optin') ? 'checked' : '' }} />
|
|
||||||
<span class="ml-1 cursor-pointer">{{ ctrans('texts.no') }}</span>
|
|
||||||
</label>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
<div class="bg-white px-4 py-5 flex justify-end">
|
|
||||||
<button class="button button-primary bg-primary" id="card_button">
|
|
||||||
<svg class="animate-spin h-5 w-5 text-white hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
|
||||||
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
|
||||||
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
|
||||||
</svg>
|
|
||||||
<span>{{ __('texts.pay_now') }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</dl>
|
|
||||||
@else
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<dl>
|
|
||||||
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.totals') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
{{ App\Utils\Number::formatMoney($total['invoice_totals'], $client) }}
|
|
||||||
</dd>
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.gateway_fees') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
{{ App\Utils\Number::formatMoney($total['fee_total'], $client) }}
|
|
||||||
</dd>
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ ctrans('texts.amount') }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
{{ App\Utils\Number::formatMoney($total['amount_with_fee'], $client) }}
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
@foreach($tokens as $token)
|
|
||||||
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
|
|
||||||
<dt class="text-sm leading-5 font-medium text-gray-500">
|
|
||||||
{{ $token->meta->brand }} : {{ $token->meta->last4 }}
|
|
||||||
</dt>
|
|
||||||
<dd class="mt-1 text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
|
|
||||||
<button class="button button-primary bg-primary pay_now_button" data-id="{{ $token->hashed_id }}">{{ ctrans('texts.pay_now') }}</button>
|
|
||||||
</dd>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@endif
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@push('footer')
|
|
||||||
|
|
||||||
@if($gateway->getConfigField('testMode'))
|
|
||||||
<script src="https://jstest.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
|
||||||
@else
|
|
||||||
<script src="https://js.authorize.net/v1/Accept.js" charset="utf-8"></script>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<script src="{{ asset('js/clients/payments/authorize-credit-card-payment.js') }}"></script>
|
|
||||||
@endpush
|
|
@ -0,0 +1,12 @@
|
|||||||
|
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"
|
||||||
|
style="display: flex!important; justify-content: center!important;">
|
||||||
|
<div class="card-js" id="my-card" data-capture-name="true">
|
||||||
|
<input class="name" id="cardholder_name" name="card-holders-name" placeholder="{{ ctrans('texts.name')}}">
|
||||||
|
<input class="card-number my-custom-class" id="card_number" name="card-number">
|
||||||
|
<input class="expiry-month" name="expiry-month" id="expiration_month">
|
||||||
|
<input class="expiry-year" name="expiry-year" id="expiration_year">
|
||||||
|
<input class="cvc" name="cvc" id="cvv">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="errors"></div>
|
||||||
|
</div>
|
@ -3,7 +3,8 @@
|
|||||||
@isset($form) form="{{ $form }}" @endisset
|
@isset($form) form="{{ $form }}" @endisset
|
||||||
type="{{ $type ?? 'button' }}"
|
type="{{ $type ?? 'button' }}"
|
||||||
id="{{ $id ?? 'pay-now' }}"
|
id="{{ $id ?? 'pay-now' }}"
|
||||||
class="button button-primary bg-primary">
|
@isset($data) @foreach($data as $prop => $value) data-{{ $prop }}="{{ $value }}" @endforeach @endisset
|
||||||
|
class="button button-primary bg-primary {{ $class ?? '' }}">
|
||||||
<svg class="animate-spin h-5 w-5 text-white hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
<svg class="animate-spin h-5 w-5 text-white hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
||||||
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
||||||
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
@extends('portal.ninja2020.layout.payments', ['gateway_title' => ctrans('texts.bank_account'), 'card_title' => ctrans('texts.bank_account')])
|
||||||
|
|
||||||
|
@section('gateway_content')
|
||||||
|
@component('portal.ninja2020.components.general.card-element-single', ['title' => ctrans('texts.bank_account'), 'show_title' => false])
|
||||||
|
{{ __('texts.sofort_authorize_label') }}
|
||||||
|
@endcomponent
|
||||||
|
@endsection
|
@ -11,7 +11,7 @@
|
|||||||
@endpush
|
@endpush
|
||||||
|
|
||||||
@section('body')
|
@section('body')
|
||||||
@livewire('required-client-info', ['fields' => method_exists($gateway, 'getClientRequiredFields') ? $gateway->getClientRequiredFields() : [], 'contact' => auth('contact')->user()])
|
@livewire('required-client-info', ['fields' => method_exists($gateway, 'getClientRequiredFields') ? $gateway->getClientRequiredFields() : [], 'contact' => auth('contact')->user(), 'countries' => $countries])
|
||||||
|
|
||||||
<div class="container mx-auto grid grid-cols-12 opacity-25 pointer-events-none" data-ref="gateway-container">
|
<div class="container mx-auto grid grid-cols-12 opacity-25 pointer-events-none" data-ref="gateway-container">
|
||||||
<div class="col-span-12 lg:col-span-6 lg:col-start-4 overflow-hidden bg-white shadow rounded-lg">
|
<div class="col-span-12 lg:col-span-6 lg:col-start-4 overflow-hidden bg-white shadow rounded-lg">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user