CoolCMS API

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):

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

addNewsletterAddressMultiplier()

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

extractAddressIds()

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>

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
string

saveNewsletterForm()

private saveNewsletterForm(ArrayHash<string|int, mixed> $values, Form $form) : bool
Parameters
$values : ArrayHash<string|int, mixed>
$form : Form
Return values
bool
On this page

Search results