mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-04 02:04:35 -04:00
Fixes for email designs and cross client compatibility
This commit is contained in:
parent
eefd2eb5d4
commit
b76e78e9ed
@ -147,9 +147,9 @@ class EmailController extends BaseController
|
|||||||
if (! $invitation->contact->trashed() && $invitation->contact->email) {
|
if (! $invitation->contact->trashed() && $invitation->contact->email) {
|
||||||
$entity_obj->service()->markSent()->save();
|
$entity_obj->service()->markSent()->save();
|
||||||
|
|
||||||
// EmailEntity::dispatch($invitation->fresh(), $invitation->company, $template, $data);
|
EmailEntity::dispatch($invitation->fresh(), $invitation->company, $template, $data);
|
||||||
|
|
||||||
MailEntity::dispatch($invitation, $invitation->company->db, $mo);
|
// MailEntity::dispatch($invitation, $invitation->company->db, $mo);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -244,12 +244,12 @@ class PaymentEmailEngine extends BaseEmailEngine
|
|||||||
$data['$company3'] = ['value' => $this->helpers->formatCustomFieldValue($this->company->custom_fields, 'company3', $this->settings->custom_value3, $this->client) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'company3')];
|
$data['$company3'] = ['value' => $this->helpers->formatCustomFieldValue($this->company->custom_fields, 'company3', $this->settings->custom_value3, $this->client) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'company3')];
|
||||||
$data['$company4'] = ['value' => $this->helpers->formatCustomFieldValue($this->company->custom_fields, 'company4', $this->settings->custom_value4, $this->client) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'company4')];
|
$data['$company4'] = ['value' => $this->helpers->formatCustomFieldValue($this->company->custom_fields, 'company4', $this->settings->custom_value4, $this->client) ?: ' ', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'company4')];
|
||||||
|
|
||||||
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->payment->getLink().'">'.ctrans('texts.view_payment').'</a>', 'label' => ctrans('texts.view_payment')];
|
$data['$view_link'] = ['value' => $this->buildViewButton($this->payment->getLink(), ctrans('texts.view_payment')), 'label' => ctrans('texts.view_payment')];
|
||||||
$data['$view_button'] = &$data['$view_link'];
|
$data['$view_button'] = &$data['$view_link'];
|
||||||
$data['$viewButton'] = &$data['$view_link'];
|
$data['$viewButton'] = &$data['$view_link'];
|
||||||
$data['$viewLink'] = &$data['$view_link'];
|
$data['$viewLink'] = &$data['$view_link'];
|
||||||
$data['$paymentLink'] = &$data['$view_link'];
|
$data['$paymentLink'] = &$data['$view_link'];
|
||||||
$data['$portalButton'] = ['value' => "<a href='{$this->payment->getPortalLink()}'>".ctrans('texts.login').'</a>', 'label' =>''];
|
$data['$portalButton'] = ['value' => $this->buildViewButton($this->payment->getPortalLink(), ctrans('texts.login')), 'label' =>''];
|
||||||
$data['$portal_url'] = &$data['$portalButton'];
|
$data['$portal_url'] = &$data['$portalButton'];
|
||||||
|
|
||||||
$data['$view_url'] = ['value' => $this->payment->getLink(), 'label' => ctrans('texts.view_payment')];
|
$data['$view_url'] = ['value' => $this->payment->getLink(), 'label' => ctrans('texts.view_payment')];
|
||||||
@ -367,7 +367,12 @@ class PaymentEmailEngine extends BaseEmailEngine
|
|||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* generateLabelsAndValues
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function generateLabelsAndValues()
|
public function generateLabelsAndValues()
|
||||||
{
|
{
|
||||||
$data = [];
|
$data = [];
|
||||||
@ -381,4 +386,25 @@ class PaymentEmailEngine extends BaseEmailEngine
|
|||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* buildViewButton
|
||||||
|
*
|
||||||
|
* @param string $link
|
||||||
|
* @param string $text
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function buildViewButton(string $link, string $text): string
|
||||||
|
{
|
||||||
|
return '
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0" align="center">
|
||||||
|
<tr style="border: 0 !important; ">
|
||||||
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
<a href="'. $link .'" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;">'. $text .'</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ class VendorHtmlEngine
|
|||||||
$data['$number_short'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.purchase_order_number_short')];
|
$data['$number_short'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.purchase_order_number_short')];
|
||||||
$data['$entity.terms'] = ['value' => Helpers::processReservedKeywords(\nl2br($this->entity->terms), $this->company) ?: '', 'label' => ctrans('texts.invoice_terms')];
|
$data['$entity.terms'] = ['value' => Helpers::processReservedKeywords(\nl2br($this->entity->terms), $this->company) ?: '', 'label' => ctrans('texts.invoice_terms')];
|
||||||
$data['$terms'] = &$data['$entity.terms'];
|
$data['$terms'] = &$data['$entity.terms'];
|
||||||
$data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_purchase_order').'</a>', 'label' => ctrans('texts.view_purchase_order')];
|
$data['$view_link'] = ['value' => $this->buildViewButton($this->invitation->getLink(), ctrans('texts.view_purchase_order')), 'label' => ctrans('texts.view_purchase_order')];
|
||||||
$data['$viewLink'] = &$data['$view_link'];
|
$data['$viewLink'] = &$data['$view_link'];
|
||||||
$data['$viewButton'] = &$data['$view_link'];
|
$data['$viewButton'] = &$data['$view_link'];
|
||||||
$data['$view_button'] = &$data['$view_link'];
|
$data['$view_button'] = &$data['$view_link'];
|
||||||
@ -813,4 +813,25 @@ html {
|
|||||||
|
|
||||||
return $dom->saveHTML();
|
return $dom->saveHTML();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* buildViewButton
|
||||||
|
*
|
||||||
|
* @param string $link
|
||||||
|
* @param string $text
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function buildViewButton(string $link, string $text): string
|
||||||
|
{
|
||||||
|
return '
|
||||||
|
<table border="0" cellspacing="0" cellpadding="0" align="center">
|
||||||
|
<tr style="border: 0 !important; ">
|
||||||
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
<a href="'. $link .'" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;">'. $text .'</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,12 +7,11 @@
|
|||||||
{{ ctrans('texts.download') }}
|
{{ ctrans('texts.download') }}
|
||||||
</a> -->
|
</a> -->
|
||||||
|
|
||||||
|
|
||||||
<table border="0" cellspacing="0" cellpadding="0" align="center">
|
<table border="0" cellspacing="0" cellpadding="0" align="center">
|
||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;"> {{ ctrans('texts.download') }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; "> {{ ctrans('texts.download') }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;"> {{ ctrans('texts.download') }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; "> {{ ctrans('texts.download') }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;">{{ ctrans('texts.download') }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; ">{{ ctrans('texts.download') }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;"> {{ ctrans('texts.download') }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; "> {{ ctrans('texts.download') }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;"> {{ ctrans('texts.download') }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; "> {{ ctrans('texts.download') }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;"> {{ ctrans('texts.download') }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; "> {{ ctrans('texts.download') }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
|
|
||||||
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;"> {{ ctrans($button) }}</a>
|
<a href="{{ $url }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; ">{{ ctrans($button) }}</a>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<table border="0" cellspacing="0" cellpadding="0" align="center">
|
<table border="0" cellspacing="0" cellpadding="0" align="center">
|
||||||
<tr style="border: 0 !important; ">
|
<tr style="border: 0 !important; ">
|
||||||
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
<td class="new_button" style="padding: 12px 18px 12px 18px; border-radius:5px;" align="center">
|
||||||
<a href="{{ $view_link }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block;">{{ $view_text }}</a>
|
<a href="{{ $view_link }}" target="_blank" style="border: 0 !important;font-size: 18px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; display: inline-block; ">{{ $view_text }}</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -149,10 +149,13 @@
|
|||||||
position: fixed;
|
position: fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.new_button {
|
.new_button, a {
|
||||||
background-color: {{ $primary_color }};
|
background-color: {{ $primary_color }};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color:#ffffff !important;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
@ -119,6 +119,16 @@
|
|||||||
|
|
||||||
.new_button {
|
.new_button {
|
||||||
background-color: {{ $primary_color }};
|
background-color: {{ $primary_color }};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.new_button, {
|
||||||
|
background-color: {{ $primary_color }};
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color:#ffffff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user