';
+ if (!empty($senderAddress)) {
+ $addressHtml .= '
' . htmlspecialchars($senderAddress) . '
';
+ }
+ $addressHtml .= '
';
$addressHtml .= '
' . htmlspecialchars($lookupResult->getName()) . '
';
if ($lookupResult instanceof CprLookupResult && $lookupResult->getCoName()) {
$addressHtml .= '
c/o ' . htmlspecialchars($lookupResult->getCoName()) . '
';
@@ -90,15 +103,18 @@ public static function getSubscribedEvents(): array {
/**
* Indicate Digital Post context in the current session.
*/
- public function setDigitalPostContext(WebformSubmissionInterface $submission, CompanyLookupResult|CprLookupResult $lookupResult): void {
+ public function setDigitalPostContext(WebformSubmissionInterface $submission, CompanyLookupResult|CprLookupResult $lookupResult, string $senderAddress = ''): void {
$key = $this->createSessionKeyFromSubmission($submission);
- $this->session->set($key, $lookupResult);
+ $this->session->set($key, [
+ 'lookupResult' => $lookupResult,
+ 'senderAddress' => $senderAddress,
+ ]);
}
/**
* Check for Digital Post context in the current session.
*/
- public function getDigitalPostContext(WebformSubmissionInterface $submission): CompanyLookupResult|CprLookupResult|null {
+ public function getDigitalPostContext(WebformSubmissionInterface $submission): ?array {
$key = $this->createSessionKeyFromSubmission($submission);
return $this->session->get($key);
diff --git a/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php b/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php
index 0746f20e..368ac1ac 100644
--- a/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php
+++ b/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php
@@ -61,7 +61,8 @@ protected function getMainDocument(WebformSubmissionInterface $submission, array
// @Drupal\entity_print\Renderer::generateHtml,
// To indicate digital post context and get the necessary information,
// we add a flag to the session.
- $this->digitalPostSubscriber->setDigitalPostContext($submission, $recipientData);
+ $senderAddress = $handlerSettings[WebformHandlerSF1601::MEMO_MESSAGE][WebformHandlerSF1601::SENDER_ADDRESS] ?? '';
+ $this->digitalPostSubscriber->setDigitalPostContext($submission, $recipientData, $senderAddress);
$content = $instance::getFileContent($element, $submission);
$this->digitalPostSubscriber->deleteDigitalPostContext($submission);
diff --git a/modules/os2forms_digital_post/src/Plugin/WebformHandler/WebformHandlerSF1601.php b/modules/os2forms_digital_post/src/Plugin/WebformHandler/WebformHandlerSF1601.php
index 0b1dc219..6f0e06a9 100644
--- a/modules/os2forms_digital_post/src/Plugin/WebformHandler/WebformHandlerSF1601.php
+++ b/modules/os2forms_digital_post/src/Plugin/WebformHandler/WebformHandlerSF1601.php
@@ -31,12 +31,18 @@ final class WebformHandlerSF1601 extends WebformHandlerBase {
public const MESSAGE_HEADER_LABEL = 'message_header_label';
public const RECIPIENT_ELEMENT = 'recipient_element';
public const ATTACHMENT_ELEMENT = 'attachment_element';
+ public const SENDER_ADDRESS = 'sender_address';
/**
* Maximum length of sender label.
*/
private const SENDER_LABEL_MAX_LENGTH = 64;
+ /**
+ * Maximum length of sender address.
+ */
+ private const SENDER_ADDRESS_MAX_LENGTH = 70;
+
/**
* Maximum length of header label.
*/
@@ -131,6 +137,15 @@ public function buildConfigurationForm(array $form, FormStateInterface $formStat
'#maxlength' => self::MESSAGE_HEADER_LABEL_MAX_LENGTH,
];
+ $form[self::MEMO_MESSAGE][self::SENDER_ADDRESS] = [
+ '#type' => 'textfield',
+ '#title' => $this->t('Sender address'),
+ '#description' => $this->t('Optional sender address shown on the printed document. Displayed as a single line above the recipient name. Maximum @max characters.', ['@max' => self::SENDER_ADDRESS_MAX_LENGTH]),
+ '#required' => FALSE,
+ '#default_value' => $this->configuration[self::MEMO_MESSAGE][self::SENDER_ADDRESS] ?? NULL,
+ '#maxlength' => self::SENDER_ADDRESS_MAX_LENGTH,
+ ];
+
$form[self::MEMO_ACTIONS] = [
'#type' => 'fieldset',
'#title' => $this->t('Actions'),