1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-26 23:40:57 +01:00

Allow administrators to provide custom welcome text when welcoming users on the profile workflow

Summary:
See PHI1027. Currently, we allow you to customize invite email, but not most other types of email (approve, welcome). As a step forward, also allow welcome email to be customized with a message.

I considered separating the custom text from the main text with something heavyhanded ("alice added this custom message:") or a beautiful ASCII art divider like one of these:

https://www.asciiart.eu/art-and-design/dividers

...but nothing truly sung to me.

This only works on the profile flow for now. I'm planning to let you set a default message. I may or may not let you customize from "Create New User", seems like the default message probably covers most of that. Probably won't touch `scripts/user/add_user.php` since that's not really exactly super supported.

Test Plan:
Sent mail with and without custom messages, reviewed it with `bin/mail show-outbound`.

{F6137410}

Reviewers: amckinley

Reviewed By: amckinley

Differential Revision: https://secure.phabricator.com/D19991
This commit is contained in:
epriestley 2019-01-17 10:16:05 -08:00
parent 7f950f520b
commit ab7aceaabf
3 changed files with 63 additions and 18 deletions

View file

@ -155,6 +155,18 @@ final class PhabricatorPeopleProfileManageController
$disable_name = pht('Disable User');
}
$curtain->addAction(
id(new PhabricatorActionView())
->setIcon('fa-envelope')
->setName(pht('Send Welcome Email'))
->setWorkflow(true)
->setDisabled(!$can_welcome)
->setHref($this->getApplicationURI('welcome/'.$user->getID().'/')));
$curtain->addAction(
id(new PhabricatorActionView())
->setType(PhabricatorActionView::TYPE_DIVIDER));
$curtain->addAction(
id(new PhabricatorActionView())
->setIcon($disable_icon)
@ -173,11 +185,7 @@ final class PhabricatorPeopleProfileManageController
$curtain->addAction(
id(new PhabricatorActionView())
->setIcon('fa-envelope')
->setName(pht('Send Welcome Email'))
->setWorkflow(true)
->setDisabled(!$can_welcome)
->setHref($this->getApplicationURI('welcome/'.$user->getID().'/')));
->setType(PhabricatorActionView::TYPE_DIVIDER));
return $curtain;
}

View file

@ -37,24 +37,45 @@ final class PhabricatorPeopleWelcomeController
->addCancelButton($profile_uri, pht('Done'));
}
$v_message = $request->getStr('message');
if ($request->isFormPost()) {
if (strlen($v_message)) {
$welcome_engine->setWelcomeMessage($v_message);
}
$welcome_engine->sendMail();
return id(new AphrontRedirectResponse())->setURI($profile_uri);
}
$form = id(new AphrontFormView())
->setViewer($admin)
->appendInstructions(
pht(
'This workflow will send this user ("%s") a copy of the "Welcome to '.
'Phabricator" email that users normally receive when their '.
'accounts are created by an administrator.',
$user->getUsername()))
->appendInstructions(
pht(
'The email will contain a link that the user may use to log in '.
'to their account. This link bypasses authentication requirements '.
'and allows them to log in without credentials. Sending a copy of '.
'this email can be useful if the original was lost or never sent.'))
->appendInstructions(
pht(
'The email will identify you as the sender. You may optionally '.
'include additional text in the mail body by specifying it below.'))
->appendControl(
id(new AphrontFormTextAreaControl())
->setName('message')
->setLabel(pht('Custom Message'))
->setValue($v_message));
return $this->newDialog()
->setTitle(pht('Send Welcome Email'))
->appendParagraph(
pht(
'This will send the user another copy of the "Welcome to '.
'Phabricator" email that users normally receive when their '.
'accounts are created.'))
->appendParagraph(
pht(
'The email contains a link to log in to their account. Sending '.
'another copy of the email can be useful if the original was lost '.
'or never sent.'))
->appendParagraph(pht('The email will identify you as the sender.'))
->setWidth(AphrontDialogView::WIDTH_FORM)
->appendForm($form)
->addSubmitButton(pht('Send Email'))
->addCancelButton($profile_uri);
}

View file

@ -3,6 +3,17 @@
final class PhabricatorPeopleWelcomeMailEngine
extends PhabricatorPeopleMailEngine {
private $welcomeMessage;
public function setWelcomeMessage($welcome_message) {
$this->welcomeMessage = $welcome_message;
return $this;
}
public function getWelcomeMessage() {
return $this->welcomeMessage;
}
public function validateMail() {
$sender = $this->getSender();
$recipient = $this->getRecipient();
@ -88,8 +99,13 @@ final class PhabricatorPeopleWelcomeMailEngine
$message[] = pht(' %s', $base_uri);
}
if (!$is_serious) {
$message[] = pht("Love,\nPhabricator");
$custom_body = $this->getWelcomeMessage();
if (strlen($custom_body)) {
$message[] = $custom_body;
} else {
if (!$is_serious) {
$message[] = pht("Love,\nPhabricator");
}
}
$message = implode("\n\n", $message);