Merge pull request #4307 from nextcloud/sharing-emails
New emails for sharebymail
This commit is contained in:
commit
b3b24172e4
|
@ -260,44 +260,37 @@ class ShareByMailProvider implements IShareProvider {
|
|||
}
|
||||
|
||||
$message = $this->mailer->createMessage();
|
||||
$htmlBody = $this->createMailBody('mail', $filename, $link, $ownerDisplayName, $initiatorDisplayName);
|
||||
$textBody = $this->createMailBody('altmail', $filename, $link, $ownerDisplayName, $initiatorDisplayName);
|
||||
|
||||
$emailTemplate = $this->mailer->createEMailTemplate();
|
||||
|
||||
$emailTemplate->addHeader();
|
||||
$emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$ownerDisplayName, $filename]), false);
|
||||
|
||||
if ($owner === $initiator) {
|
||||
$text = $this->l->t('%s shared »%s« with you.', [$ownerDisplayName, $filename]);
|
||||
} else {
|
||||
$text= $this->l->t('%s shared »%s« with you on behalf of %s.', [$ownerDisplayName, $filename, $initiator]);
|
||||
}
|
||||
|
||||
$emailTemplate->addBodyText(
|
||||
$text . ' ' . $this->l->t('Click the button below to open it.'),
|
||||
$text
|
||||
);
|
||||
|
||||
$emailTemplate->addBodyButton(
|
||||
$this->l->t('Open »%s«', [$filename]),
|
||||
$link
|
||||
);
|
||||
$emailTemplate->addFooter();
|
||||
|
||||
$message->setTo([$shareWith]);
|
||||
$message->setSubject($subject);
|
||||
$message->setBody($textBody, 'text/plain');
|
||||
$message->setHtmlBody($htmlBody);
|
||||
$message->setBody($emailTemplate->renderText(), 'text/plain');
|
||||
$message->setHtmlBody($emailTemplate->renderHTML());
|
||||
$this->mailer->send($message);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* create mail body
|
||||
*
|
||||
* @param $filename
|
||||
* @param $link
|
||||
* @param $owner
|
||||
* @param $initiator
|
||||
* @return string plain text mail
|
||||
* @throws HintException
|
||||
*/
|
||||
protected function createMailBody($template, $filename, $link, $owner, $initiator) {
|
||||
|
||||
$mailBodyTemplate = new Template('sharebymail', $template, '');
|
||||
$mailBodyTemplate->assign ('filename', \OCP\Util::sanitizeHTML($filename));
|
||||
$mailBodyTemplate->assign ('link', $link);
|
||||
$mailBodyTemplate->assign ('owner', \OCP\Util::sanitizeHTML($owner));
|
||||
$mailBodyTemplate->assign ('initiator', \OCP\Util::sanitizeHTML($initiator));
|
||||
$mailBodyTemplate->assign ('onBehalfOf', $initiator !== $owner);
|
||||
$mailBody = $mailBodyTemplate->fetchPage();
|
||||
|
||||
if (is_string($mailBody)) {
|
||||
return $mailBody;
|
||||
}
|
||||
|
||||
throw new HintException('Failed to create the E-mail',
|
||||
$this->l->t('Failed to create the E-mail'));
|
||||
}
|
||||
|
||||
/**
|
||||
* send password to recipient of a mail share
|
||||
*
|
||||
|
@ -316,41 +309,28 @@ class ShareByMailProvider implements IShareProvider {
|
|||
$subject = (string)$this->l->t('Password to access »%s« shared to you by %s', [$filename, $initiatorDisplayName]);
|
||||
|
||||
$message = $this->mailer->createMessage();
|
||||
$htmlBody = $this->createMailBodyToSendPassword('mailpassword', $filename, $initiatorDisplayName, $password);
|
||||
$textBody = $this->createMailBodyToSendPassword('altmailpassword', $filename,$initiatorDisplayName, $password);
|
||||
|
||||
$emailTemplate = $this->mailer->createEMailTemplate();
|
||||
|
||||
$emailTemplate->addHeader();
|
||||
$emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename]));
|
||||
|
||||
$emailTemplate->addBodyText($this->l->t(
|
||||
'%s shared »%s« with you. You should have already received a separate mail with a link to access it.',
|
||||
[$initiatorDisplayName, $filename]
|
||||
));
|
||||
$emailTemplate->addBodyText($this->l->t('It is protected with the following password: %s', [$password]));
|
||||
|
||||
$emailTemplate->addFooter();
|
||||
|
||||
$message->setTo([$shareWith]);
|
||||
$message->setSubject($subject);
|
||||
$message->setBody($textBody, 'text/plain');
|
||||
$message->setHtmlBody($htmlBody);
|
||||
$message->setBody($emailTemplate->renderText(), 'text/plain');
|
||||
$message->setHtmlBody($emailTemplate->renderHTML());
|
||||
$this->mailer->send($message);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* create mail body to send password to recipient
|
||||
*
|
||||
* @param string $filename
|
||||
* @param string $initiator
|
||||
* @param string $password
|
||||
* @return string plain text mail
|
||||
* @throws HintException
|
||||
*/
|
||||
protected function createMailBodyToSendPassword($template, $filename, $initiator, $password) {
|
||||
|
||||
$mailBodyTemplate = new Template('sharebymail', $template, '');
|
||||
$mailBodyTemplate->assign ('filename', \OCP\Util::sanitizeHTML($filename));
|
||||
$mailBodyTemplate->assign ('password', \OCP\Util::sanitizeHTML($password));
|
||||
$mailBodyTemplate->assign ('initiator', \OCP\Util::sanitizeHTML($initiator));
|
||||
$mailBody = $mailBodyTemplate->fetchPage();
|
||||
|
||||
if (is_string($mailBody)) {
|
||||
return $mailBody;
|
||||
}
|
||||
|
||||
throw new HintException('Failed to create the E-mail',
|
||||
$this->l->t('Failed to create the E-mail'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* generate share token
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @var OC_Theme $theme */
|
||||
/** @var array $_ */
|
||||
if ($_['onBehalfOf']) {
|
||||
print_unescaped($l->t("Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n", [$_['owner'], $_['filename'], $_['initiator'], $_['link']]));
|
||||
} else {
|
||||
print_unescaped($l->t("Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n", [$_['owner'], $_['filename'], $_['link']]));
|
||||
}
|
||||
// TRANSLATORS term at the end of a mail
|
||||
p($l->t("Cheers!"));
|
||||
print_unescaped("\n");
|
||||
?>
|
||||
|
||||
--
|
||||
<?php p($theme->getName() . ' - ' . $theme->getSlogan()); ?>
|
||||
<?php print_unescaped("\n".$theme->getBaseUrl());
|
|
@ -1,32 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @var OC_Theme $theme */
|
||||
/** @var array $_ */
|
||||
print_unescaped($l->t("Hey there,\n\n%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n\nIt is protected with the following password: %s\n\n", [$_['initiator'], $_['filename'], $_['password']]));
|
||||
// TRANSLATORS term at the end of a mail
|
||||
p($l->t("Cheers!"));
|
||||
print_unescaped("\n");
|
||||
?>
|
||||
|
||||
--
|
||||
<?php p($theme->getName() . ' - ' . $theme->getSlogan()); ?>
|
||||
<?php print_unescaped("\n".$theme->getBaseUrl());
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @var OC_Theme $theme */
|
||||
/** @var array $_ */
|
||||
?>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr><td>
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="600px">
|
||||
<tr>
|
||||
<td colspan="2" bgcolor="<?php p($theme->getColorPrimary());?>">
|
||||
<img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.png'))); ?>" alt="<?php p($theme->getName()); ?>"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"> </td></tr>
|
||||
<tr>
|
||||
<td width="20px"> </td>
|
||||
<td style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">
|
||||
<?php
|
||||
if ($_['onBehalfOf']) {
|
||||
print_unescaped($l->t('Hey there,<br><br>%s shared <a href="%s">%s</a> with you on behalf of %s.<br><br>', [$_['owner'], $_['link'], $_['filename'], $_['initiator']]));
|
||||
} else {
|
||||
print_unescaped($l->t('Hey there,<br><br>%s shared <a href="%s">%s</a> with you.<br><br>', [$_['owner'], $_['link'], $_['filename']]));
|
||||
}
|
||||
// TRANSLATORS term at the end of a mail
|
||||
p($l->t('Cheers!'));
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"> </td></tr>
|
||||
<tr>
|
||||
<td width="20px"> </td>
|
||||
<td style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">--<br>
|
||||
<?php p($theme->getName()); ?> -
|
||||
<?php p($theme->getSlogan()); ?>
|
||||
<br><a href="<?php p($theme->getBaseUrl()); ?>"><?php p($theme->getBaseUrl());?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
|
@ -1,59 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @var OCA\Theming\ThemingDefaults $theme */
|
||||
/** @var array $_ */
|
||||
?>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr><td>
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="600px">
|
||||
<tr>
|
||||
<td colspan="2" bgcolor="<?php p($theme->getColorPrimary());?>">
|
||||
<img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.png'))); ?>" alt="<?php p($theme->getName()); ?>"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"> </td></tr>
|
||||
<tr>
|
||||
<td width="20px"> </td>
|
||||
<td style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">
|
||||
<?php
|
||||
print_unescaped($l->t('Hey there,<br><br>%s shared <i>%s</i> with you.<br>You should have already received a separate mail with a link to access it.<br><br>It is protected with the following password: %s<br><br>', [$_['initiator'], $_['filename'], $_['password']]));
|
||||
// TRANSLATORS term at the end of a mail
|
||||
p($l->t('Cheers!'));
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"> </td></tr>
|
||||
<tr>
|
||||
<td width="20px"> </td>
|
||||
<td style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">--<br>
|
||||
<?php p($theme->getName()); ?> -
|
||||
<?php p($theme->getSlogan()); ?>
|
||||
<br><a href="<?php p($theme->getBaseUrl()); ?>"><?php p($theme->getBaseUrl());?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
|
@ -98,7 +98,7 @@ EOF;
|
|||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<center data-parsed="" style="min-width:580px;width:100%%">
|
||||
<img class="logo float-center" src="%s" alt="logo" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
<img class="logo float-center" src="%s" alt="%s" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
</center>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -225,6 +225,46 @@ EOF;
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
EOF;
|
||||
|
||||
protected $button = <<<EOF
|
||||
<table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="50px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:50px;font-weight:400;hyphens:auto;line-height:50px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table align="center" class="row btn-group" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
|
||||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
|
||||
<center data-parsed="" style="min-width:490px;width:100%%">
|
||||
<table class="button btn default primary float-center" style="Margin:0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0;max-height:40px;padding:0;text-align:center;vertical-align:top;width:auto">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;background:%s;border:0 solid %s;border-collapse:collapse!important;color:#fefefe;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<a href="%s" style="Margin:0;border:0 solid %s;border-radius:2px;color:#fefefe;display:inline-block;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;padding:10px 25px 10px 25px;text-align:left;text-decoration:none">%s</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</th>
|
||||
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
|
||||
</tr>
|
||||
</table>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
EOF;
|
||||
|
||||
protected $bodyEnd = <<<EOF
|
||||
|
@ -288,14 +328,15 @@ EOF;
|
|||
$this->headerAdded = true;
|
||||
|
||||
$logoUrl = $this->urlGenerator->getAbsoluteURL($this->themingDefaults->getLogo());
|
||||
$this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl]);
|
||||
$this->htmlBody .= vsprintf($this->header, [$this->themingDefaults->getColorPrimary(), $logoUrl, $this->themingDefaults->getName()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a heading to the email
|
||||
*
|
||||
* @param string $title
|
||||
* @param string $plainTitle Title that is used in the plain text email - if empty the $title is used
|
||||
* @param string $plainTitle|bool Title that is used in the plain text email
|
||||
* if empty the $title is used, if false none will be used
|
||||
*/
|
||||
public function addHeading($title, $plainTitle = '') {
|
||||
if ($this->footerAdded) {
|
||||
|
@ -305,15 +346,18 @@ EOF;
|
|||
$plainTitle = $title;
|
||||
}
|
||||
|
||||
$this->htmlBody .= vsprintf($this->heading, [$title]);
|
||||
$this->htmlBody .= vsprintf($this->heading, [htmlspecialchars($title)]);
|
||||
if ($plainTitle !== false) {
|
||||
$this->plainBody .= $plainTitle . PHP_EOL . PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a paragraph to the body of the email
|
||||
*
|
||||
* @param string $text
|
||||
* @param string $plainText Text that is used in the plain text email - if empty the $text is used
|
||||
* @param string|bool $plainText Text that is used in the plain text email
|
||||
* if empty the $text is used, if false none will be used
|
||||
*/
|
||||
public function addBodyText($text, $plainText = '') {
|
||||
if ($this->footerAdded) {
|
||||
|
@ -328,9 +372,11 @@ EOF;
|
|||
$this->bodyOpened = true;
|
||||
}
|
||||
|
||||
$this->htmlBody .= vsprintf($this->bodyText, [$text]);
|
||||
$this->htmlBody .= vsprintf($this->bodyText, [htmlspecialchars($text)]);
|
||||
if ($plainText !== false) {
|
||||
$this->plainBody .= $plainText . PHP_EOL . PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a button group of two buttons to the body of the email
|
||||
|
@ -342,7 +388,12 @@ EOF;
|
|||
* @param string $plainTextLeft Text of left button that is used in the plain text version - if unset the $textLeft is used
|
||||
* @param string $plainTextRight Text of right button that is used in the plain text version - if unset the $textRight is used
|
||||
*/
|
||||
public function addBodyButtonGroup($textLeft, $urlLeft, $textRight, $urlRight, $plainTextLeft = '', $plainTextRight = '') {
|
||||
public function addBodyButtonGroup($textLeft,
|
||||
$urlLeft,
|
||||
$textRight,
|
||||
$urlRight,
|
||||
$plainTextLeft = '',
|
||||
$plainTextRight = '') {
|
||||
if ($this->footerAdded) {
|
||||
return;
|
||||
}
|
||||
|
@ -360,16 +411,41 @@ EOF;
|
|||
}
|
||||
|
||||
$color = $this->themingDefaults->getColorPrimary();
|
||||
$this->htmlBody .= vsprintf($this->buttonGroup, [$color, $color, $urlLeft, $color, $textLeft, $urlRight, $textRight]);
|
||||
|
||||
$this->htmlBody .= vsprintf($this->buttonGroup, [$color, $color, $urlLeft, $color, htmlspecialchars($textLeft), $urlRight, htmlspecialchars($textRight)]);
|
||||
$this->plainBody .= $plainTextLeft . ': ' . $urlLeft . PHP_EOL;
|
||||
$this->plainBody .= $plainTextRight . ': ' . $urlRight . PHP_EOL . PHP_EOL;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a button to the body of the email
|
||||
*
|
||||
* @param string $text Text of button
|
||||
* @param string $url URL of button
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
public function addBodyButton($text, $url) {
|
||||
if ($this->footerAdded) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->bodyOpened) {
|
||||
$this->htmlBody .= $this->bodyBegin;
|
||||
$this->bodyOpened = true;
|
||||
}
|
||||
|
||||
$color = $this->themingDefaults->getColorPrimary();
|
||||
$this->htmlBody .= vsprintf($this->button, [$color, $color, $url, $color, htmlspecialchars($text)]);
|
||||
$this->plainBody .= $text . ': ' . $url . PHP_EOL;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a logo and a text to the footer. <br> in the text will be replaced by new lines in the plain text email
|
||||
*
|
||||
* @param string $text
|
||||
* @param string $text If the text is empty the default "Name - Slogan<br>This is an automatically generated email" will be used
|
||||
*/
|
||||
public function addFooter($text = '') {
|
||||
if($text === '') {
|
||||
|
@ -388,7 +464,7 @@ EOF;
|
|||
|
||||
$this->htmlBody .= vsprintf($this->footer, [$text]);
|
||||
$this->htmlBody .= $this->tail;
|
||||
$this->plainBody .= '--' . PHP_EOL;
|
||||
$this->plainBody .= PHP_EOL . '-- ' . PHP_EOL;
|
||||
$this->plainBody .= str_replace('<br>', PHP_EOL, $text);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,8 @@ interface IEMailTemplate {
|
|||
* Adds a heading to the email
|
||||
*
|
||||
* @param string $title
|
||||
* @param string $plainTitle Title that is used in the plain text email - if empty the $title is used
|
||||
* @param string $plainTitle|bool Title that is used in the plain text email
|
||||
* if empty the $title is used, if false none will be used
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
|
@ -72,7 +73,8 @@ interface IEMailTemplate {
|
|||
* Adds a paragraph to the body of the email
|
||||
*
|
||||
* @param string $text
|
||||
* @param string $plainText Text that is used in the plain text email - if empty the $text is used
|
||||
* @param string|bool $plainText Text that is used in the plain text email
|
||||
* if empty the $text is used, if false none will be used
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
|
@ -92,10 +94,20 @@ interface IEMailTemplate {
|
|||
*/
|
||||
public function addBodyButtonGroup($textLeft, $urlLeft, $textRight, $urlRight, $plainTextLeft = '', $plainTextRight = '');
|
||||
|
||||
/**
|
||||
* Adds a button to the body of the email
|
||||
*
|
||||
* @param string $text Text of button
|
||||
* @param string $url URL of button
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
public function addBodyButton($text, $url);
|
||||
|
||||
/**
|
||||
* Adds a logo and a text to the footer. <br> in the text will be replaced by new lines in the plain text email
|
||||
*
|
||||
* @param string $text
|
||||
* @param string $text If the text is empty the default "Name - Slogan<br>This is an automatically generated email" will be used
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
|
|
|
@ -144,7 +144,7 @@ class NewUserMailHelperTest extends TestCase {
|
|||
->method('getUID')
|
||||
->willReturn('john');
|
||||
$this->defaults
|
||||
->expects($this->at(0))
|
||||
->expects($this->any())
|
||||
->method('getName')
|
||||
->willReturn('TestCloud');
|
||||
|
||||
|
@ -174,7 +174,7 @@ class NewUserMailHelperTest extends TestCase {
|
|||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<center data-parsed="" style="min-width:580px;width:100%">
|
||||
<img class="logo float-center" src="" alt="logo" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
<img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
</center>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -227,7 +227,7 @@ class NewUserMailHelperTest extends TestCase {
|
|||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
|
||||
<p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:left">You have now an account, you can add, protect, and share your data.</p>
|
||||
<p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:left">You have now an TestCloud account, you can add, protect, and share your data.</p>
|
||||
</th>
|
||||
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
|
||||
</tr>
|
||||
|
@ -324,7 +324,7 @@ class NewUserMailHelperTest extends TestCase {
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="text-center float-center" align="center" style="Margin:0;Margin-bottom:10px;color:#C8C8C8;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:12px;font-weight:400;line-height:16px;margin:0;margin-bottom:10px;padding:0;text-align:center"> - <br>This is an automatically generated email, please do not reply.</p>
|
||||
<p class="text-center float-center" align="center" style="Margin:0;Margin-bottom:10px;color:#C8C8C8;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:12px;font-weight:400;line-height:16px;margin:0;margin-bottom:10px;padding:0;text-align:center">TestCloud - <br>This is an automatically generated email, please do not reply.</p>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -340,15 +340,16 @@ EOF;
|
|||
$expectedTextBody = <<<EOF
|
||||
Welcome aboard
|
||||
|
||||
You have now an account, you can add, protect, and share your data.
|
||||
You have now an TestCloud account, you can add, protect, and share your data.
|
||||
|
||||
Your username is: john
|
||||
|
||||
Set your password: https://example.com/resetPassword/MySuperLongSecureRandomToken
|
||||
Install Client: https://nextcloud.com/install/#install-clients
|
||||
|
||||
|
||||
--
|
||||
-
|
||||
TestCloud -
|
||||
This is an automatically generated email, please do not reply.
|
||||
EOF;
|
||||
|
||||
|
@ -406,7 +407,7 @@ EOF;
|
|||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<center data-parsed="" style="min-width:580px;width:100%">
|
||||
<img class="logo float-center" src="" alt="logo" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
<img class="logo float-center" src="" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
</center>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
@ -579,6 +580,7 @@ Your username is: john
|
|||
Go to TestCloud: https://example.com/
|
||||
Install Client: https://nextcloud.com/install/#install-clients
|
||||
|
||||
|
||||
--
|
||||
TestCloud -
|
||||
This is an automatically generated email, please do not reply.
|
||||
|
|
|
@ -7,5 +7,6 @@ Your username is: abc
|
|||
Set your password - text: https://example.org/resetPassword/123
|
||||
Install Client - text: https://nextcloud.com/install/#install-clients
|
||||
|
||||
|
||||
--
|
||||
TestCloud - A safe home for your data
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<center data-parsed="" style="min-width:580px;width:100%">
|
||||
<img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="logo" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
<img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
</center>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -7,5 +7,6 @@ Your username is: abc
|
|||
Set your password: https://example.org/resetPassword/123
|
||||
Install Client: https://nextcloud.com/install/#install-clients
|
||||
|
||||
|
||||
--
|
||||
TestCloud - A safe home for your data
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" style="-webkit-font-smoothing:antialiased;background:#f3f3f3!important">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title></title>
|
||||
<style type="text/css">@media only screen{html{min-height:100%;background:#F5F5F5}}@media only screen and (max-width:610px){table.body img{width:auto;height:auto}table.body center{min-width:0!important}table.body .container{width:95%!important}table.body .columns{height:auto!important;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:30px!important;padding-right:30px!important}th.small-12{display:inline-block!important;width:100%!important}table.menu{width:100%!important}table.menu td,table.menu th{width:auto!important;display:inline-block!important}table.menu.vertical td,table.menu.vertical th{display:block!important}table.menu[align=center]{width:auto!important}}</style>
|
||||
</head>
|
||||
<body style="-moz-box-sizing:border-box;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;Margin:0;background:#f3f3f3!important;box-sizing:border-box;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;min-width:100%;padding:0;text-align:left;width:100%!important">
|
||||
<span class="preheader" style="color:#F5F5F5;display:none!important;font-size:1px;line-height:1px;max-height:0;max-width:0;mso-hide:all!important;opacity:0;overflow:hidden;visibility:hidden">
|
||||
</span>
|
||||
<table class="body" style="-webkit-font-smoothing:antialiased;Margin:0;background:#f3f3f3!important;border-collapse:collapse;border-spacing:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;height:100%;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td class="center" align="center" valign="top" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<center data-parsed="" style="min-width:580px;width:100%"><table align="center" class="wrapper header float-center" style="Margin:0 auto;background:#8a8a8a;background-color:#0082c9;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:20px;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<table align="center" class="container" style="Margin:0 auto;background:0 0;border-collapse:collapse;border-spacing:0;margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:580px">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<table class="row collapse" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<center data-parsed="" style="min-width:580px;width:100%">
|
||||
<img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
</center>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="80px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:80px;font-weight:400;hyphens:auto;line-height:80px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table align="center" class="container main-heading float-center" style="Margin:0 auto;background:0 0!important;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:580px">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<h1 class="text-center" style="Margin:0;Margin-bottom:10px;color:inherit;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:24px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:center;word-wrap:normal">Welcome aboard</h1>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="40px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:40px;font-weight:400;hyphens:auto;line-height:40px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table align="center" class="wrapper content float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<table align="center" class="container has-shadow" style="Margin:0 auto;background:#fefefe;border-collapse:collapse;border-spacing:0;box-shadow:0 1px 2px 0 rgba(0,0,0,.2),0 1px 3px 0 rgba(0,0,0,.1);margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:580px">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="60px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:60px;font-weight:400;hyphens:auto;line-height:60px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="row description" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
|
||||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
|
||||
<p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:left">You have now an Nextcloud account, you can add, protect, and share your data.</p>
|
||||
</th>
|
||||
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
|
||||
</tr>
|
||||
</table>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="row description" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
|
||||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
|
||||
<p class="text-left" style="Margin:0;Margin-bottom:10px;color:#777;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;text-align:left">Your username is: abc</p>
|
||||
</th>
|
||||
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
|
||||
</tr>
|
||||
</table>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="spacer" style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="50px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:50px;font-weight:400;hyphens:auto;line-height:50px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table align="center" class="row btn-group" style="border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th class="small-12 large-12 columns first last" style="Margin:0 auto;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:30px;padding-left:30px;padding-right:30px;text-align:left;width:550px">
|
||||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<th style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left">
|
||||
<center data-parsed="" style="min-width:490px;width:100%">
|
||||
<table class="button btn default primary float-center" style="Margin:0;border-collapse:collapse;border-spacing:0;display:inline-block;float:none;margin:0;max-height:40px;padding:0;text-align:center;vertical-align:top;width:auto">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<table style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;background:#0082c9;border:0 solid #0082c9;border-collapse:collapse!important;color:#fefefe;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<a href="https://example.org/resetPassword/123" style="Margin:0;border:0 solid #0082c9;border-radius:2px;color:#fefefe;display:inline-block;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:regular;line-height:1.3;margin:0;padding:10px 25px 10px 25px;text-align:left;text-decoration:none">Set your password</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</th>
|
||||
<th class="expander" style="Margin:0;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0!important;text-align:left;visibility:hidden;width:0"></th>
|
||||
</tr>
|
||||
</table>
|
||||
</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table><table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="60px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:60px;font-weight:400;hyphens:auto;line-height:60px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table align="center" class="wrapper footer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td class="wrapper-inner" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:16px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word">
|
||||
<center data-parsed="" style="min-width:580px;width:100%">
|
||||
<table class="spacer float-center" style="Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%">
|
||||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<td height="15px" style="-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:15px;font-weight:400;hyphens:auto;line-height:15px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="text-center float-center" align="center" style="Margin:0;Margin-bottom:10px;color:#C8C8C8;font-family:Lucida Grande,Geneva,Verdana,sans-serif;font-size:12px;font-weight:400;line-height:16px;margin:0;margin-bottom:10px;padding:0;text-align:center">TestCloud - A safe home for your data<br></p>
|
||||
</center>
|
||||
</td>
|
||||
</tr>
|
||||
</table> </center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- prevent Gmail on iOS font size manipulation -->
|
||||
<div style="display:none;white-space:nowrap;font:15px courier;line-height:0"> </div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,10 @@
|
|||
Welcome aboard
|
||||
|
||||
You have now an Nextcloud account, you can add, protect, and share your data.
|
||||
|
||||
Your username is: abc
|
||||
|
||||
Set your password: https://example.org/resetPassword/123
|
||||
|
||||
--
|
||||
TestCloud - A safe home for your data
|
|
@ -23,7 +23,7 @@
|
|||
<tbody>
|
||||
<tr style="padding:0;text-align:left;vertical-align:top">
|
||||
<center data-parsed="" style="min-width:580px;width:100%">
|
||||
<img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="logo" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
<img class="logo float-center" src="https://example.org/img/logo-mail-header.png" alt="TestCloud" align="center" style="-ms-interpolation-mode:bicubic;Margin:0 auto;clear:both;display:block;float:none;margin:0 auto;max-height:100%;max-width:100px;outline:0;text-align:center;text-decoration:none;width:auto">
|
||||
</center>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -7,6 +7,7 @@ Your username is: abc
|
|||
Set your password: https://example.org/resetPassword/123
|
||||
Install Client: https://nextcloud.com/install/#install-clients
|
||||
|
||||
|
||||
--
|
||||
TestCloud - A safe home for your data
|
||||
This is an automatically generated email, please do not reply.
|
|
@ -62,6 +62,10 @@ class EMailTemplateTest extends TestCase {
|
|||
->expects($this->any())
|
||||
->method('getLogo')
|
||||
->willReturn('/img/logo-mail-header.png');
|
||||
$this->defaults
|
||||
->expects($this->any())
|
||||
->method('getName')
|
||||
->willReturn('TestCloud');
|
||||
$this->urlGenerator
|
||||
->expects($this->once())
|
||||
->method('getAbsoluteURL')
|
||||
|
@ -125,6 +129,44 @@ class EMailTemplateTest extends TestCase {
|
|||
$this->assertSame($expectedTXT, $this->emailTemplate->renderText());
|
||||
}
|
||||
|
||||
public function testEMailTemplateSingleButton() {
|
||||
$this->defaults
|
||||
->expects($this->any())
|
||||
->method('getColorPrimary')
|
||||
->willReturn('#0082c9');
|
||||
$this->defaults
|
||||
->expects($this->any())
|
||||
->method('getName')
|
||||
->willReturn('TestCloud');
|
||||
$this->defaults
|
||||
->expects($this->any())
|
||||
->method('getSlogan')
|
||||
->willReturn('A safe home for your data');
|
||||
$this->defaults
|
||||
->expects($this->any())
|
||||
->method('getLogo')
|
||||
->willReturn('/img/logo-mail-header.png');
|
||||
$this->urlGenerator
|
||||
->expects($this->once())
|
||||
->method('getAbsoluteURL')
|
||||
->with('/img/logo-mail-header.png')
|
||||
->willReturn('https://example.org/img/logo-mail-header.png');
|
||||
|
||||
$this->emailTemplate->addHeader();
|
||||
$this->emailTemplate->addHeading('Welcome aboard');
|
||||
$this->emailTemplate->addBodyText('You have now an Nextcloud account, you can add, protect, and share your data.');
|
||||
$this->emailTemplate->addBodyText('Your username is: abc');
|
||||
$this->emailTemplate->addBodyButton(
|
||||
'Set your password', 'https://example.org/resetPassword/123'
|
||||
);
|
||||
$this->emailTemplate->addFooter();
|
||||
|
||||
$expectedHTML = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-single-button.html');
|
||||
$this->assertSame($expectedHTML, $this->emailTemplate->renderHTML());
|
||||
$expectedTXT = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-single-button.txt');
|
||||
$this->assertSame($expectedTXT, $this->emailTemplate->renderText());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function testEMailTemplateAlternativePlainTexts() {
|
||||
|
|
Loading…
Reference in New Issue