NewsletterFormTrait
Add/edit form of a newsletter.
Multilingual fields (subject + body + active) in language tabs, the planned send time, a "send to all" switch / selection of concrete subscribers. The state is not edited here: the dispatch is started and paused by the buttons of the edit (NewsletterPresenter).
Subscribers are selected through Multiplier (contributte/forms-multiplier): every row is
a container with picker fields (hidden addressId + text addressEmail) created by
NewsletterAddressPickerTrait::addNewsletterAddressControls().
The picker itself (suggest, modal, writing into the hidden input) is rendered and served by the
Picker component — in Latte
{control "picker-address_<index>"}, suggest through its suggest! signal. Adding / removing a
row is served by the multiplier's create/remove submit button (.ajax class, so naja redraws the snippet).
Presenter dependencies (must exist as properties / methods):
$this->newsletterManagerNewsletterManager$this->newsletterAddressManagerNewsletterAddressManager$this->adminLanguageManagerLanguageManager$this->editedNewsletter?Newsletter (null when adding, entity when editing)$this->translatorDomainstring (from BasePresenter)
Table of Contents
Constants
- NEWSLETTER_DT_FORMAT : mixed = 'Y-m-d\TH:i'
- Value format of `<input type=datetime-local>`.
Methods
- createComponentEditForm() : Form
- addNewsletterAddressMultiplier() : void
- Multiplier of subscribers. Every row carries a hidden `addressId` (saved) and a text `addressEmail` (Picker label / search field — kept in `httpData` across the AJAX re-render).
- addNewsletterSendingFields() : void
- Sending fields — planned send time, "to all" switch, address multiplier (row = Picker).
- addNewsletterTranslationFields() : void
- Multilingual fields — subject + body + active translation switch.
- buildNewsletterEntity() : Newsletter
- extractAddressIds() : array<int, int>
- Extracts positive address ids from the `addresses` multiplier values. Empty rows (the user added a row but did not pick an address) are skipped.
- findNewsletterTranslation() : NewsletterText|null
- getNewsletterFormLanguages() : array<int, Language>
- newsletterAddressAddedAt() : array<int, DateTime>
- Returns `update_time` of the current address relations of the newsletter by address id.
- nStr() : string
- saveNewsletterForm() : bool
- setNewsletterFormDefaults() : void
Constants
NEWSLETTER_DT_FORMAT
Value format of `<input type=datetime-local>`.
private
mixed
NEWSLETTER_DT_FORMAT
= 'Y-m-d\TH:i'
Methods
createComponentEditForm()
protected
createComponentEditForm() : Form
Return values
FormaddNewsletterAddressMultiplier()
Multiplier of subscribers. Every row carries a hidden `addressId` (saved) and a text `addressEmail` (Picker label / search field — kept in `httpData` across the AJAX re-render).
private
addNewsletterAddressMultiplier(Form $form) : void
Create/remove buttons have the ajax class, so naja redraws the addresses snippet instead of
a full reload.
Parameters
- $form : Form
addNewsletterSendingFields()
Sending fields — planned send time, "to all" switch, address multiplier (row = Picker).
private
addNewsletterSendingFields(Form $form) : void
Parameters
- $form : Form
addNewsletterTranslationFields()
Multilingual fields — subject + body + active translation switch.
private
addNewsletterTranslationFields(Form $form) : void
Parameters
- $form : Form
buildNewsletterEntity()
private
buildNewsletterEntity(ArrayHash<string|int, mixed> $values) : Newsletter
Parameters
- $values : ArrayHash<string|int, mixed>
Return values
NewsletterextractAddressIds()
Extracts positive address ids from the `addresses` multiplier values. Empty rows (the user added a row but did not pick an address) are skipped.
private
extractAddressIds(ArrayHash<string|int, mixed> $values) : array<int, int>
Parameters
- $values : ArrayHash<string|int, mixed>
Return values
array<int, int>findNewsletterTranslation()
private
findNewsletterTranslation(Newsletter $newsletter, int $langId) : NewsletterText|null
Parameters
- $newsletter : Newsletter
- $langId : int
Return values
NewsletterText|nullgetNewsletterFormLanguages()
private
getNewsletterFormLanguages() : array<int, Language>
Return values
array<int, Language>newsletterAddressAddedAt()
Returns `update_time` of the current address relations of the newsletter by address id.
private
newsletterAddressAddedAt(Newsletter $newsletter) : array<int, DateTime>
Parameters
- $newsletter : Newsletter
Return values
array<int, DateTime>nStr()
private
nStr(mixed $value) : string
Parameters
- $value : mixed
Return values
stringsaveNewsletterForm()
private
saveNewsletterForm(ArrayHash<string|int, mixed> $values, Form $form) : bool
Parameters
- $values : ArrayHash<string|int, mixed>
- $form : Form
Return values
boolsetNewsletterFormDefaults()
private
setNewsletterFormDefaults(Form $form) : void
Parameters
- $form : Form