Admin user roster; per-locale subject; SiteUser as From
- Admin preferences page can now subscribe existing webtrees users per tree, not just external addresses. - Subject prefix is now configurable per locale (en/de), and the date in the subject is formatted via IntlDateFormatter in the recipient's locale. - "From:" header now uses SiteUser (SMTP_FROM_NAME/SMTP_DISP_NAME) to match webtrees' own system-mail convention; the tree contact becomes the Reply-To.
This commit is contained in:
@@ -8,11 +8,13 @@ use Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
|
||||
use Fisharebest\Webtrees\Http\RequestHandlers\ModulesAllPage;
|
||||
use Fisharebest\Webtrees\I18N;
|
||||
use Fisharebest\Webtrees\Tree;
|
||||
use Fisharebest\Webtrees\User;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
* @var Module $module
|
||||
* @var Collection<int,Tree> $all_trees
|
||||
* @var Collection<int,User> $all_users
|
||||
* @var string $cron_token
|
||||
* @var string $cron_url
|
||||
* @var string $title
|
||||
@@ -117,16 +119,43 @@ use Illuminate\Support\Collection;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label" for="subject-<?= $id ?>">
|
||||
<fieldset class="row mb-3">
|
||||
<legend class="col-sm-3 col-form-label">
|
||||
<?= I18N::translate('Subject prefix') ?>
|
||||
</label>
|
||||
</legend>
|
||||
<div class="col-sm-9">
|
||||
<input class="form-control" type="text"
|
||||
id="subject-<?= $id ?>" name="subject-<?= $id ?>"
|
||||
value="<?= e($subject) ?>">
|
||||
<small class="form-text text-muted d-block mb-2">
|
||||
<?= I18N::translate('Prepended to the email subject line. Leave a field blank to fall back to the generic prefix below.') ?>
|
||||
</small>
|
||||
<?php foreach (Configuration::supportedSubjectLocales() as $code => $label) : ?>
|
||||
<?php
|
||||
$field = 'subject-' . $id . '-' . $code;
|
||||
$val = $tree->getPreference(
|
||||
Configuration::PREF_SUBJECT_PREFIX_PREFIX . $code,
|
||||
'',
|
||||
);
|
||||
?>
|
||||
<div class="input-group input-group-sm mb-2">
|
||||
<span class="input-group-text" style="min-width: 7rem;">
|
||||
<?= e($label) ?>
|
||||
</span>
|
||||
<input class="form-control" type="text"
|
||||
id="<?= e($field) ?>" name="<?= e($field) ?>"
|
||||
value="<?= e($val) ?>"
|
||||
placeholder="<?= e('[' . $tree->title() . '] ') ?>">
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
|
||||
<div class="input-group input-group-sm">
|
||||
<span class="input-group-text" style="min-width: 7rem;">
|
||||
<?= I18N::translate('Generic') ?>
|
||||
</span>
|
||||
<input class="form-control" type="text"
|
||||
id="subject-<?= $id ?>" name="subject-<?= $id ?>"
|
||||
value="<?= e($subject) ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label" for="extras-<?= $id ?>">
|
||||
@@ -138,6 +167,44 @@ use Illuminate\Support\Collection;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-3 col-form-label">
|
||||
<?= I18N::translate('Subscribed users') ?>
|
||||
</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="hidden" name="users-submitted-<?= $id ?>" value="1">
|
||||
<?php if ($all_users->isEmpty()) : ?>
|
||||
<small class="form-text text-muted">
|
||||
<?= I18N::translate('No users with email addresses found.') ?>
|
||||
</small>
|
||||
<?php else : ?>
|
||||
<small class="form-text text-muted d-block mb-2">
|
||||
<?= I18N::translate('Tick a user to subscribe them to this tree’s newsletter. Users can still adjust their own subscription on their account page.') ?>
|
||||
</small>
|
||||
<div class="border rounded p-2"
|
||||
style="max-height: 18rem; overflow-y: auto;">
|
||||
<?php foreach ($all_users as $user) : ?>
|
||||
<?php
|
||||
$field = 'subscribe-' . $id . '-' . $user->id();
|
||||
$is_subbed = $tree->getUserPreference($user, Configuration::USER_PREF_SUBSCRIBED) === '1';
|
||||
?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox"
|
||||
id="<?= e($field) ?>" name="<?= e($field) ?>"
|
||||
value="1" <?= $is_subbed ? 'checked' : '' ?>>
|
||||
<label class="form-check-label" for="<?= e($field) ?>">
|
||||
<?= e($user->realName()) ?>
|
||||
<small class="text-muted">
|
||||
<<?= e($user->email()) ?>>
|
||||
</small>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if ($last_sent > 0) : ?>
|
||||
<div class="row mb-3">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
|
||||
Reference in New Issue
Block a user