CoolCMS API

ModalWindow extends BaseComponent
in package

Shared admin modal window. Mounted once in the admin `@layout.latte` (`{control modalWindow}`), so it is available from any presenter or component without drawing a `modal fade` wrapper in Latte.

Title, content and options are set from PHP through the fluent API and opened with open().

Usage:

$this->getModalWindow()->setTitle('Title')->setSize('modal-lg')->setContent($html)->open();

Stateless: nothing is stored in the session or a registry; title and content live only for the current request. On an AJAX open only the inside ({snippet modalBody}) is redrawn and modalId goes to payload->modalShow, which the admin modals.js uses to show the modal. Several windows at once are not supported (one shared shell).

Table of Contents

Constants

MODAL_ID  : mixed = 'admin-modal-window'
Fixed DOM id of the shared shell (target for Bootstrap show/hide).

Properties

$container  : Container
$routerDispatcher  : RouterDispatcher
$translator  : ITranslator
$appContext  : AppContext
$componentParameters  : array<string, mixed>
$currencyContext  : CurrencyContext|null
$deviceDetector  : DeviceDetector|null
$languageContext  : LanguageContext|null
$localizationContext  : LocalizationContext|null
$settingContext  : SettingContext
$themeContext  : ThemeContext|null
$translatorDomain  : string|null
$content  : string
$modalTitle  : string
$options  : array<string, mixed>

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
close()  : void
Closes the modal (AJAX); `modals.js` handles it through `payload->modalClose`.
createComponent()  : IComponent|null
getAppContext()  : AppContext
getComponentParameter()  : mixed
Returns a component parameter, or null when it is not set.
getContainer()  : Container
getCurrencyContext()  : CurrencyContext|null
getLanguageContext()  : LanguageContext|null
getLocalizationContext()  : LocalizationContext|null
getRouterDispatcher()  : RouterDispatcher
getSettingContext()  : SettingContext
getSettings()  : array<int, array<string, mixed>>
getThemeContext()  : ThemeContext|null
hasServiceByType()  : bool
Returns whether the container has a service of the given type.
initializeAllContexts()  : void
injectDeviceDetector()  : void
onCreate()  : void
open()  : self
Opens the modal: on an AJAX request redraws the inside and tells `modals.js` through `payload->modalShow` to show the shell. Idempotent: calling `open()` again (e.g. after a form re-render) is ignored by Bootstrap `show()` on an already open modal.
render()  : void
setAppContext()  : $this
setComponentParameter()  : void
Sets a component parameter.
setContent()  : self
setCurrencyContext()  : $this
setLanguageContext()  : $this
setLocalizationContext()  : $this
setOptions()  : self
Sets several options at once (size, centered, scrollable, backdrop, keyboard).
setSettingContext()  : $this
setSize()  : self
Dialog size as a Bootstrap class (`modal-sm` / `modal-lg` / `modal-xl`).
setThemeContext()  : $this
setTitle()  : self
setup()  : void
setupAppContext()  : void
typedComponent()  : T
Returns a subcomponent with a verified type.
frontPresenter()  : BasePresenter|null
Returns the front presenter the component is attached to (null outside the front end or when detached).
getTranslator()  : ITranslator
setTemplateFile()  : void
setTranslator()  : self
createMultiplierComponent()  : Multiplier<string|int, IComponent>
Creates a multiplier for the component.
createNewComponentInstance()  : IComponent|null
Creates a new component instance without adding it to the presenter; used by the multiplier.
createStandardComponent()  : IComponent|null
Creates a standard component (not a multiplier).

Constants

MODAL_ID

Fixed DOM id of the shared shell (target for Bootstrap show/hide).

public mixed MODAL_ID = 'admin-modal-window'

Properties

$componentParameters

protected array<string, mixed> $componentParameters = []

component parameters set by setComponentParameter()

$translatorDomain

protected string|null $translatorDomain = 'admin.system.components.modalWindow'

Methods

__call()

Dispatches `renderXyz()` to `render('Xyz', ...$args)`.

public __call(string $name, array<string|int, mixed> $args) : mixed

Called only when the component has no renderXyz() method of its own.

Parameters
$name : string
$args : array<string|int, mixed>

close()

Closes the modal (AJAX); `modals.js` handles it through `payload->modalClose`.

public close() : void

createComponent()

public createComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

getComponentParameter()

Returns a component parameter, or null when it is not set.

public getComponentParameter(string $name) : mixed
Parameters
$name : string

getContainer()

public getContainer() : Container
Return values
Container

getSettings()

public getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>

hasServiceByType()

Returns whether the container has a service of the given type.

public hasServiceByType(string $className) : bool

The name is composed dynamically (module plus component), so class_exists() runs first, and a true result guarantees a valid type.

Parameters
$className : string
Tags
phpstan-assert-if-true

class-string $className

Return values
bool

open()

Opens the modal: on an AJAX request redraws the inside and tells `modals.js` through `payload->modalShow` to show the shell. Idempotent: calling `open()` again (e.g. after a form re-render) is ignored by Bootstrap `show()` on an already open modal.

public open() : self
Return values
self

setComponentParameter()

Sets a component parameter.

public setComponentParameter(string $name, mixed $value) : void
Parameters
$name : string
$value : mixed

setContent()

public setContent(string $content) : self
Parameters
$content : string
Return values
self

setOptions()

Sets several options at once (size, centered, scrollable, backdrop, keyboard).

public setOptions(array<string, mixed> $options) : self
Parameters
$options : array<string, mixed>
Return values
self

setSize()

Dialog size as a Bootstrap class (`modal-sm` / `modal-lg` / `modal-xl`).

public setSize(string $size) : self
Parameters
$size : string
Return values
self

setTitle()

public setTitle(string $title) : self
Parameters
$title : string
Return values
self

typedComponent()

Returns a subcomponent with a verified type.

public typedComponent(string $name, T> $type) : T

Use it instead of an inline @var above $this['x'] (which does not narrow the type) and instead of the generic IComponent that $this['x'] returns. See Form::typedComponent().

Parameters
$name : string
$type : T>
Tags
template
Return values
T

frontPresenter()

Returns the front presenter the component is attached to (null outside the front end or when detached).

protected frontPresenter() : BasePresenter|null
Return values
BasePresenter|null

getTranslator()

protected getTranslator() : ITranslator
Return values
ITranslator

setTemplateFile()

protected setTemplateFile(string $dir, string $filename) : void
Parameters
$dir : string
$filename : string

setTranslator()

protected setTranslator(ITranslator $translator) : self
Parameters
$translator : ITranslator
Return values
self

createMultiplierComponent()

Creates a multiplier for the component.

private createMultiplierComponent(string $name) : Multiplier<string|int, IComponent>
Parameters
$name : string
Return values
Multiplier<string|int, IComponent>

createNewComponentInstance()

Creates a new component instance without adding it to the presenter; used by the multiplier.

private createNewComponentInstance(string $baseName[, int|string|null $uniqueKey = null ]) : IComponent|null
Parameters
$baseName : string
$uniqueKey : int|string|null = null
Return values
IComponent|null

createStandardComponent()

Creates a standard component (not a multiplier).

private createStandardComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null
On this page

Search results