mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 05:02:36 +01:00
Working on #1234
This commit is contained in:
parent
c65f09d6ab
commit
80ccd4f924
@ -699,7 +699,6 @@ class AccountController extends BaseController
|
||||
'template' => $account->getDefaultEmailTemplate($type),
|
||||
];
|
||||
}
|
||||
$data['emailFooter'] = $account->getEmailFooter();
|
||||
$data['title'] = trans('texts.email_templates');
|
||||
|
||||
return View::make('accounts.templates_and_reminders', $data);
|
||||
|
@ -1317,150 +1317,6 @@ class Account extends Eloquent
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getDefaultEmailSubject($entityType)
|
||||
{
|
||||
if (strpos($entityType, 'reminder') !== false) {
|
||||
$entityType = 'reminder';
|
||||
}
|
||||
|
||||
return trans("texts.{$entityType}_subject", ['invoice' => '$invoice', 'account' => '$account']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEmailSubject($entityType)
|
||||
{
|
||||
if ($this->hasFeature(FEATURE_CUSTOM_EMAILS)) {
|
||||
$field = "email_subject_{$entityType}";
|
||||
$value = $this->$field;
|
||||
|
||||
if ($value) {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->getDefaultEmailSubject($entityType);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
* @param bool $message
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultEmailTemplate($entityType, $message = false)
|
||||
{
|
||||
if (strpos($entityType, 'reminder') !== false) {
|
||||
$entityType = ENTITY_INVOICE;
|
||||
}
|
||||
|
||||
$template = '<div>$client,</div><br>';
|
||||
|
||||
if ($this->hasFeature(FEATURE_CUSTOM_EMAILS) && $this->email_design_id != EMAIL_DESIGN_PLAIN) {
|
||||
$template .= '<div>' . trans("texts.{$entityType}_message_button", ['amount' => '$amount']) . '</div><br>' .
|
||||
'<div style="text-align: center;">$viewButton</div><br>';
|
||||
} else {
|
||||
$template .= '<div>' . trans("texts.{$entityType}_message", ['amount' => '$amount']) . '</div><br>' .
|
||||
'<div>$viewLink</div><br>';
|
||||
}
|
||||
|
||||
if ($message) {
|
||||
$template .= "$message<p/>\r\n\r\n";
|
||||
}
|
||||
|
||||
return $template . '$footer';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
* @param bool $message
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEmailTemplate($entityType, $message = false)
|
||||
{
|
||||
$template = false;
|
||||
|
||||
if ($this->hasFeature(FEATURE_CUSTOM_EMAILS)) {
|
||||
$field = "email_template_{$entityType}";
|
||||
$template = $this->$field;
|
||||
}
|
||||
|
||||
if (! $template) {
|
||||
$template = $this->getDefaultEmailTemplate($entityType, $message);
|
||||
}
|
||||
|
||||
// <br/> is causing page breaks with the email designs
|
||||
return str_replace('/>', ' />', $template);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $view
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getTemplateView($view = '')
|
||||
{
|
||||
return $this->getEmailDesignId() == EMAIL_DESIGN_PLAIN ? $view : 'design' . $this->getEmailDesignId();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function getEmailFooter()
|
||||
{
|
||||
if ($this->email_footer) {
|
||||
// Add line breaks if HTML isn't already being used
|
||||
return strip_tags($this->email_footer) == $this->email_footer ? nl2br($this->email_footer) : $this->email_footer;
|
||||
} else {
|
||||
return '<p><div>' . trans('texts.email_signature') . "\n<br>\$account</div></p>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $reminder
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getReminderDate($reminder)
|
||||
{
|
||||
if (! $this->{"enable_reminder{$reminder}"}) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$numDays = $this->{"num_days_reminder{$reminder}"};
|
||||
$plusMinus = $this->{"direction_reminder{$reminder}"} == REMINDER_DIRECTION_AFTER ? '-' : '+';
|
||||
|
||||
return date('Y-m-d', strtotime("$plusMinus $numDays days"));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Invoice $invoice
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function getInvoiceReminder(Invoice $invoice)
|
||||
{
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
if ($date = $this->getReminderDate($i)) {
|
||||
$field = $this->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE ? 'due_date' : 'invoice_date';
|
||||
if ($invoice->$field == $date) {
|
||||
return "reminder{$i}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null $storage_gateway
|
||||
*
|
||||
|
@ -10,6 +10,151 @@ use Utils;
|
||||
*/
|
||||
trait SendsEmails
|
||||
{
|
||||
/**
|
||||
* @param $entityType
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getDefaultEmailSubject($entityType)
|
||||
{
|
||||
if (strpos($entityType, 'reminder') !== false) {
|
||||
$entityType = 'reminder';
|
||||
}
|
||||
|
||||
return trans("texts.{$entityType}_subject", ['invoice' => '$invoice', 'account' => '$account']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEmailSubject($entityType)
|
||||
{
|
||||
if ($this->hasFeature(FEATURE_CUSTOM_EMAILS)) {
|
||||
$field = "email_subject_{$entityType}";
|
||||
$value = $this->$field;
|
||||
|
||||
if ($value) {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->getDefaultEmailSubject($entityType);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
* @param bool $message
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultEmailTemplate($entityType, $message = false)
|
||||
{
|
||||
if (strpos($entityType, 'reminder') !== false) {
|
||||
$entityType = ENTITY_INVOICE;
|
||||
}
|
||||
|
||||
$template = '<div>$client,</div><br>';
|
||||
|
||||
if ($this->hasFeature(FEATURE_CUSTOM_EMAILS) && $this->email_design_id != EMAIL_DESIGN_PLAIN) {
|
||||
$template .= '<div>' . trans("texts.{$entityType}_message_button", ['amount' => '$amount']) . '</div><br>' .
|
||||
'<div style="text-align: center;">$viewButton</div><br>';
|
||||
} else {
|
||||
$template .= '<div>' . trans("texts.{$entityType}_message", ['amount' => '$amount']) . '</div><br>' .
|
||||
'<div>$viewLink</div><br>';
|
||||
}
|
||||
|
||||
if ($message) {
|
||||
$template .= "$message<p/>\r\n\r\n";
|
||||
}
|
||||
|
||||
return $template . '$footer';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $entityType
|
||||
* @param bool $message
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getEmailTemplate($entityType, $message = false)
|
||||
{
|
||||
$template = false;
|
||||
|
||||
if ($this->hasFeature(FEATURE_CUSTOM_EMAILS)) {
|
||||
$field = "email_template_{$entityType}";
|
||||
$template = $this->$field;
|
||||
}
|
||||
|
||||
if (! $template) {
|
||||
$template = $this->getDefaultEmailTemplate($entityType, $message);
|
||||
}
|
||||
|
||||
// <br/> is causing page breaks with the email designs
|
||||
return str_replace('/>', ' />', $template);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $view
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getTemplateView($view = '')
|
||||
{
|
||||
return $this->getEmailDesignId() == EMAIL_DESIGN_PLAIN ? $view : 'design' . $this->getEmailDesignId();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function getEmailFooter()
|
||||
{
|
||||
if ($this->email_footer) {
|
||||
// Add line breaks if HTML isn't already being used
|
||||
return strip_tags($this->email_footer) == $this->email_footer ? nl2br($this->email_footer) : $this->email_footer;
|
||||
} else {
|
||||
return '<p><div>' . trans('texts.email_signature') . "\n<br>\$account</div></p>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $reminder
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getReminderDate($reminder)
|
||||
{
|
||||
if (! $this->{"enable_reminder{$reminder}"}) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$numDays = $this->{"num_days_reminder{$reminder}"};
|
||||
$plusMinus = $this->{"direction_reminder{$reminder}"} == REMINDER_DIRECTION_AFTER ? '-' : '+';
|
||||
|
||||
return date('Y-m-d', strtotime("$plusMinus $numDays days"));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Invoice $invoice
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function getInvoiceReminder(Invoice $invoice)
|
||||
{
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
if ($date = $this->getReminderDate($i)) {
|
||||
$field = $this->{"field_reminder{$i}"} == REMINDER_FIELD_DUE_DATE ? 'due_date' : 'invoice_date';
|
||||
if ($invoice->$field == $date) {
|
||||
return "reminder{$i}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public function getBccEmail()
|
||||
{
|
||||
return $this->isPro() ? $this->bcc_email : false;
|
||||
|
@ -14,31 +14,6 @@ use Utils;
|
||||
|
||||
class ContactMailer extends Mailer
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public static $variableFields = [
|
||||
'footer',
|
||||
'account',
|
||||
'dueDate',
|
||||
'invoiceDate',
|
||||
'client',
|
||||
'amount',
|
||||
'contact',
|
||||
'firstName',
|
||||
'invoice',
|
||||
'quote',
|
||||
'password',
|
||||
'documents',
|
||||
'viewLink',
|
||||
'viewButton',
|
||||
'paymentLink',
|
||||
'paymentButton',
|
||||
'autoBill',
|
||||
'portalLink',
|
||||
'portalButton',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var TemplateService
|
||||
*/
|
||||
|
@ -33,6 +33,7 @@
|
||||
) !!}
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
@ -135,9 +135,6 @@
|
||||
<div class="modal-body">
|
||||
<p>{{ trans('texts.template_help_1') }}</p>
|
||||
<ul>
|
||||
@foreach (\App\Ninja\Mailers\ContactMailer::$variableFields as $field)
|
||||
<li>${{ $field }}</li>
|
||||
@endforeach
|
||||
@if ($account->custom_client_label1)
|
||||
<li>$customClient1</li>
|
||||
@endif
|
||||
@ -200,7 +197,7 @@
|
||||
var idName = '#email_' + stringType + '_' + entityType;
|
||||
var value = $(idName).val();
|
||||
var previewName = '#' + entityType + '_' + stringType + '_preview';
|
||||
$(previewName).html(processVariables(value));
|
||||
$(previewName).html(renderEmailTemplate(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -258,73 +255,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
function processVariables(str) {
|
||||
if (!str) {
|
||||
return '';
|
||||
}
|
||||
|
||||
var keys = {!! json_encode(\App\Ninja\Mailers\ContactMailer::$variableFields) !!};
|
||||
var passwordHtml = "{!! $account->isPro() && $account->enable_portal_password && $account->send_portal_password?'<p>'.trans('texts.password').': 6h2NWNdw6<p>':'' !!}";
|
||||
|
||||
@if ($account->isPro())
|
||||
var documentsHtml = "{!! trans('texts.email_documents_header').'<ul><li><a>'.trans('texts.email_documents_example_1').'</a></li><li><a>'.trans('texts.email_documents_example_2').'</a></li></ul>' !!}";
|
||||
@else
|
||||
var documentsHtml = "";
|
||||
@endif
|
||||
|
||||
var vals = [
|
||||
{!! json_encode($emailFooter) !!},
|
||||
"{{ $account->getDisplayName() }}",
|
||||
"{{ $account->formatDate($account->getDateTime()) }}",
|
||||
"{{ $account->formatDate($account->getDateTime()) }}",
|
||||
"Client Name",
|
||||
formatMoneyAccount(100, account),
|
||||
"Contact Name",
|
||||
"First Name",
|
||||
"0001",
|
||||
"0001",
|
||||
passwordHtml,
|
||||
documentsHtml,
|
||||
"{{ URL::to('/view/...') }}$password",
|
||||
'{!! Form::flatButton('view_invoice', '#0b4d78') !!}$password',
|
||||
"{{ URL::to('/payment/...') }}$password",
|
||||
'{!! Form::flatButton('pay_now', '#36c157') !!}$password',
|
||||
'{{ trans('texts.auto_bill_notification_placeholder') }}',
|
||||
"{{ URL::to('/client/portal/...') }}",
|
||||
'{!! Form::flatButton('view_portal', '#36c157') !!}',
|
||||
];
|
||||
|
||||
// Add blanks for custom values
|
||||
keys.push('customClient1', 'customClient2', 'customInvoice1', 'customInvoice2');
|
||||
vals.push('custom value', 'custom value', 'custom value', 'custom value');
|
||||
|
||||
// Add any available payment method links
|
||||
@foreach (\App\Models\Gateway::$gatewayTypes as $type)
|
||||
@if ($type != GATEWAY_TYPE_TOKEN)
|
||||
{!! "keys.push('" . Utils::toCamelCase(\App\Models\GatewayType::getAliasFromId($type)).'Link' . "');" !!}
|
||||
{!! "vals.push('" . URL::to('/payment/...') . "');" !!}
|
||||
|
||||
{!! "keys.push('" . Utils::toCamelCase(\App\Models\GatewayType::getAliasFromId($type)).'Button' . "');" !!}
|
||||
{!! "vals.push('" . Form::flatButton('pay_now', '#36c157') . "');" !!}
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
var includesPasswordPlaceholder = str.indexOf('$password') != -1;
|
||||
|
||||
for (var i=0; i<keys.length; i++) {
|
||||
var regExp = new RegExp('\\$'+keys[i], 'g');
|
||||
str = str.replace(regExp, vals[i]);
|
||||
}
|
||||
|
||||
if(!includesPasswordPlaceholder){
|
||||
var lastSpot = str.lastIndexOf('$password')
|
||||
str = str.slice(0, lastSpot) + str.slice(lastSpot).replace('$password', passwordHtml);
|
||||
}
|
||||
str = str.replace(/\$password/g,'');
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
function resetText(section, field) {
|
||||
sweetConfirm(function() {
|
||||
var fieldName = 'email_' + section + '_' + field;
|
||||
@ -388,4 +318,6 @@
|
||||
|
||||
</script>
|
||||
|
||||
@include('partials.email_templates')
|
||||
|
||||
@stop
|
||||
|
@ -799,6 +799,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('partials.email_templates')
|
||||
@include('invoices.email')
|
||||
|
||||
{!! Former::close() !!}
|
||||
@ -1286,8 +1287,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
$('#recipients').html(getSendToEmails());
|
||||
$('#emailModal').modal('show');
|
||||
showEmailModal();
|
||||
}
|
||||
|
||||
function onConfirmEmailClick() {
|
||||
@ -1307,11 +1307,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
$(function() {
|
||||
onEmailClick();
|
||||
//onEmailClick();
|
||||
})
|
||||
*/
|
||||
|
||||
function onSaveDraftClick() {
|
||||
model.invoice().is_public(false);
|
||||
|
@ -14,8 +14,9 @@
|
||||
->value('') !!}
|
||||
|
||||
{!! Former::select('template')
|
||||
->onchange('refreshPreview()')
|
||||
->options([
|
||||
'initial' => trans('texts.initial_email'),
|
||||
$invoice->getEntityType() => trans('texts.initial_email'),
|
||||
'reminder1' => trans('texts.first_reminder'),
|
||||
'reminder2' => trans('texts.second_reminder'),
|
||||
'reminder3' => trans('texts.third_reminder'),
|
||||
@ -36,8 +37,10 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" id="preview">
|
||||
<div role="tabpanel" class="tab-pane well active" id="preview">
|
||||
<br/>
|
||||
<div id="emailSubject"></div>
|
||||
<br/>
|
||||
<div id="emailBody"></div>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="customize">
|
||||
@ -75,7 +78,6 @@
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -90,4 +92,34 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var emailSubjects = [];
|
||||
emailSubjects['{{ $invoice->getEntityType() }}'] = "{{ $account->getEmailSubject($invoice->getEntityType()) }}";
|
||||
emailSubjects['reminder1'] = "{{ $account->getEmailSubject('reminder1') }}";
|
||||
emailSubjects['reminder2'] = "{{ $account->getEmailSubject('reminder2') }}";
|
||||
emailSubjects['reminder3'] = "{{ $account->getEmailSubject('reminder3') }}";
|
||||
|
||||
var emailTemplates = [];
|
||||
emailTemplates['{{ $invoice->getEntityType() }}'] = "{{ $account->getEmailTemplate($invoice->getEntityType()) }}";
|
||||
emailTemplates['reminder1'] = "{{ $account->getEmailTemplate('reminder1') }}";
|
||||
emailTemplates['reminder2'] = "{{ $account->getEmailTemplate('reminder2') }}";
|
||||
emailTemplates['reminder3'] = "{{ $account->getEmailTemplate('reminder3') }}";
|
||||
|
||||
function showEmailModal() {
|
||||
refreshPreview();
|
||||
$('#recipients').html(getSendToEmails());
|
||||
$('#emailModal').modal('show');
|
||||
}
|
||||
|
||||
function refreshPreview() {
|
||||
var invoice = createInvoiceModel();
|
||||
var template = dencodeEntities(emailSubjects[$('#template').val()]);
|
||||
$('#emailSubject').html('<b>' + renderEmailTemplate(template, invoice) + '</b>');
|
||||
var template = dencodeEntities(emailTemplates[$('#template').val()]);
|
||||
$('#emailBody').html(renderEmailTemplate(template, invoice));
|
||||
}
|
||||
|
||||
function dencodeEntities(s){
|
||||
return $("<div/>").html(s).text();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
67
resources/views/partials/email_templates.blade.php
Normal file
67
resources/views/partials/email_templates.blade.php
Normal file
@ -0,0 +1,67 @@
|
||||
<script type="text/javascript">
|
||||
|
||||
function renderEmailTemplate(str, invoice) {
|
||||
if (!str) {
|
||||
return '';
|
||||
}
|
||||
|
||||
var passwordHtml = "{!! $account->isPro() && $account->enable_portal_password && $account->send_portal_password?'<p>'.trans('texts.password').': XXXXXXXXX<p>':'' !!}";
|
||||
|
||||
@if ($account->isPro())
|
||||
var documentsHtml = "{!! trans('texts.email_documents_header').'<ul><li><a>'.trans('texts.email_documents_example_1').'</a></li><li><a>'.trans('texts.email_documents_example_2').'</a></li></ul>' !!}";
|
||||
@else
|
||||
var documentsHtml = "";
|
||||
@endif
|
||||
|
||||
var keys = {
|
||||
'footer': {!! json_encode($account->getEmailFooter()) !!},
|
||||
'account': "{{ $account->getDisplayName() }}",
|
||||
'dueDate': "{{ $account->formatDate($account->getDateTime()) }}",
|
||||
'invoiceDate': "{{ $account->formatDate($account->getDateTime()) }}",
|
||||
'client': invoice ? getClientDisplayName(invoice.client) : 'Client Name',
|
||||
'amount': invoice ? formatMoneyInvoice(invoice.amount, invoice) : formatMoneyAccount(100, account),
|
||||
'contact': invoice ? getContactDisplayName(invoice.client.contacts[0]) : 'Contact Name',
|
||||
'firstName': invoice ? invoice.client.contacts[0].first_name : 'First Name',
|
||||
'invoice': invoice ? invoice.invoice_number : '0001',
|
||||
'quote': invoice ? invoice.invoice_number : '0001',
|
||||
'password': passwordHtml,
|
||||
'documents': documentsHtml,
|
||||
'viewLink': "{{ URL::to('/view/...') }}$password",
|
||||
'viewButton': '{!! Form::flatButton('view_invoice', '#0b4d78') !!}$password',
|
||||
'paymentLink': "{{ URL::to('/payment/...') }}$password",
|
||||
'paymentButton': '{!! Form::flatButton('pay_now', '#36c157') !!}$password',
|
||||
'autoBill': '{{ trans('texts.auto_bill_notification_placeholder') }}',
|
||||
'portalLink': "{{ URL::to('/client/portal/...') }}",
|
||||
'portalButton': '{!! Form::flatButton('view_portal', '#36c157') !!}',
|
||||
'customClient1': invoice ? invoice.client.custom_value1 : 'custom value',
|
||||
'customClient2': invoice ? invoice.client.custom_value2 : 'custom value',
|
||||
'customInvoice1': invoice ? invoice.custom_value1 : 'custom value',
|
||||
'customInvoice2': invoice ? invoice.custom_value2 : 'custom value',
|
||||
};
|
||||
|
||||
// Add any available payment method links
|
||||
@foreach (\App\Models\Gateway::$gatewayTypes as $type)
|
||||
@if ($type != GATEWAY_TYPE_TOKEN)
|
||||
{!! "keys['" . Utils::toCamelCase(\App\Models\GatewayType::getAliasFromId($type)) . "Link'] = '" . URL::to('/payment/...') . "';" !!}
|
||||
{!! "keys['" . Utils::toCamelCase(\App\Models\GatewayType::getAliasFromId($type)) . "Button'] = '" . Form::flatButton('pay_now', '#36c157') . "';" !!}
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
var includesPasswordPlaceholder = str.indexOf('$password') != -1;
|
||||
|
||||
for (var key in keys) {
|
||||
var val = keys[key];
|
||||
var regExp = new RegExp('\\$'+key, 'g');
|
||||
str = str.replace(regExp, val);
|
||||
}
|
||||
|
||||
if (!includesPasswordPlaceholder){
|
||||
var lastSpot = str.lastIndexOf('$password')
|
||||
str = str.slice(0, lastSpot) + str.slice(lastSpot).replace('$password', passwordHtml);
|
||||
}
|
||||
str = str.replace(/\$password/g,'');
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user