CoolCMS API

AbstractRuleEditor extends BaseComponent
in package
uses PrivilegeGuardTrait

AbstractYes

Editor of a single option rule (`SHOW_SELECT_OPTIONS`, action = 1), rendered live as `{control ruleEditor-<id>}` into a modal outside `editForm`.

Instantiated per rule by AbstractParameterPresenter::createComponentRuleEditor() (Nette Multiplier; key = ruleId, 0 = new). Shared parent of the Bazaar, Comcat and Eshop editors: module entities appear only as object (see AbstractParameterRuleManager). The leaf supplies $translatorDomain, operatorsDomain() and parameterTargetPresenter(); the module RuleEditorFactory injects the managers.

It is a component rather than a presenter form because $control in its template is always this component, so an AJAX snippet redraw cannot diverge $control (that broke a presenter-inline modal). The Picker is hosted by this component, so the Picker::resolveForm() walk-up finds editorForm on it, and the <form> is clean (outside editForm), so closest('form') in picker.js submits.

It saves immediately through AbstractParameterRuleManager::saveRuleConditions() (the whole condition set) plus granular targets, then closes the modal and redraws the rule list in AbstractOptionRules.

Table of Contents

Constants

DEFAULT_MODAL_ID  : mixed = 'rule-editor-modal'
Default DOM id of the shell (Options / option reveal).

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
$conditionOptionDefaults  : array<int, array<int, int>>
GET prefill of checked condition options for onAnchor, keyed by the condition row index.
$modalId  : string
DOM id of the modal shell; differs for Options and display rules (two shells, one active).
$parameterManager  : Manager
$parameterRuleManager  : AbstractParameterRuleManager
$pickerFactory  : PickerFactory
$ruleId  : int
Edited rule (0 = new); the Multiplier key.
$selectId  : int
SELECT (>0) is the "reveal options" mode (Options); 0 is the "conditions only" mode (display rules).

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
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
onEditorSuccess()  : void
render()  : void
setAppContext()  : $this
setComponentParameter()  : void
Sets a component parameter.
setCurrencyContext()  : $this
setLanguageContext()  : $this
setLocalizationContext()  : $this
setSettingContext()  : $this
setThemeContext()  : $this
setup()  : void
setupAppContext()  : void
typedComponent()  : T
Returns a subcomponent with a verified type.
createComponentEditorForm()  : Form
createComponentPicker()  : Multiplier<string|int, Picker>
frontPresenter()  : BasePresenter|null
Returns the front presenter the component is attached to (null outside the front end or when detached).
getTranslator()  : ITranslator
isTargetAllowed()  : bool
Returns whether the logged-in user may open the given admin target. For visibility (tiles, autocomplete, buttons); it does not throw.
operatorsDomain()  : string
Domain of operator texts (`admin.bazaar.operators` / `admin.comcat.operators`).
parameterTargetPresenter()  : string
Presenter targeted by the condition source picker (`:Admin:Bazaar:Parameter` / `:Admin:Comcat:Parameter`).
requirePrivilege()  : void
Throws 403 when the logged-in user lacks the given admin privilege.
resolvePageTarget()  : string|null
Returns the RBAC key of the target page: `<presenter>:<action>`, e.g. `:Admin:System:User:show`.
setTemplateFile()  : void
setTranslator()  : self
addConditionRow()  : void
Condition row: source (picker hidden), label, operator, and source options or a text value.
applyDefaults()  : void
GET prefill from the stored rule: conditions (through the manager, works for floating rules too) and reveal targets.
childOptionItems()  : array<int, NotTranslate>
Returns child parameters (options) of parameter `$parentId` as checkbox list items (id to name).
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).
displayName()  : string
Parameter name in the current language (falls back to the first non-empty one).
parsePickerName()  : array{0: string, 1: list}
pickers()  : array<string, PickerConfig>
Condition source picker: the field `conditions[<i>].parameterId` on `editorForm`.
refreshConditionOptions()  : void
onAnchor: renders the source child options into the `options` checkbox list of each condition.
resolveParameterLabel()  : string|null
suggestParameters()  : array<int, array{id: int, label: string}>
tr()  : string
Translates a key in the component domain to a final string.
validatorOptions()  : array<string, NotTranslate>
Returns operators (Nette validators) as a select option list; skips codes longer than the DB column (varchar 15).

Constants

DEFAULT_MODAL_ID

Default DOM id of the shell (Options / option reveal).

public mixed DEFAULT_MODAL_ID = 'rule-editor-modal'

Properties

$componentParameters

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

component parameters set by setComponentParameter()

$conditionOptionDefaults

GET prefill of checked condition options for onAnchor, keyed by the condition row index.

private array<int, array<int, int>> $conditionOptionDefaults = []

$modalId read-only

DOM id of the modal shell; differs for Options and display rules (two shells, one active).

private string $modalId = self::DEFAULT_MODAL_ID

$ruleId read-only

Edited rule (0 = new); the Multiplier key.

private int $ruleId

$selectId read-only

SELECT (>0) is the "reveal options" mode (Options); 0 is the "conditions only" mode (display rules).

private int $selectId

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>

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

setComponentParameter()

Sets a component parameter.

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

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

isTargetAllowed()

Returns whether the logged-in user may open the given admin target. For visibility (tiles, autocomplete, buttons); it does not throw.

protected isTargetAllowed(string|null $key) : bool

IMPORTANT: fail-closed like requirePrivilege(): an empty key and a presenter without isAllowed() both mean no. A component that skips this question lists the target to everyone.

Parameters
$key : string|null
Return values
bool

operatorsDomain()

Domain of operator texts (`admin.bazaar.operators` / `admin.comcat.operators`).

protected abstract operatorsDomain() : string
Return values
string

parameterTargetPresenter()

Presenter targeted by the condition source picker (`:Admin:Bazaar:Parameter` / `:Admin:Comcat:Parameter`).

protected abstract parameterTargetPresenter() : string
Return values
string

requirePrivilege()

Throws 403 when the logged-in user lacks the given admin privilege.

protected requirePrivilege(string $key) : void

Call it as the first statement of a mutating signal, before loading data, so the check cannot be bypassed by something being written first.

Parameters
$key : string

resolvePageTarget()

Returns the RBAC key of the target page: `<presenter>:<action>`, e.g. `:Admin:System:User:show`.

protected static resolvePageTarget(object|null $page) : string|null

Same interpretation as Menu::filterByPrivileges(), BasePresenter::authorizeListing() and PrivilegeCheckTrait::checkCurrentPrivilege(). The key is derived from the page target only, never from a file or class name.

Returns null when the page is missing or has no presenter, so there is nothing to allow.

Parameters
$page : object|null

AdminPage entity (hydrated, hence just object)

Return values
string|null

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

addConditionRow()

Condition row: source (picker hidden), label, operator, and source options or a text value.

private addConditionRow(Container $row) : void
Parameters
$row : Container

applyDefaults()

GET prefill from the stored rule: conditions (through the manager, works for floating rules too) and reveal targets.

private applyDefaults(Form $form) : void
Parameters
$form : Form

childOptionItems()

Returns child parameters (options) of parameter `$parentId` as checkbox list items (id to name).

private childOptionItems(int $parentId) : array<int, NotTranslate>
Parameters
$parentId : int
Return values
array<int, NotTranslate>

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

parsePickerName()

private parsePickerName(string $name) : array{0: string, 1: list}
Parameters
$name : string
Return values
array{0: string, 1: list}

pickers()

Condition source picker: the field `conditions[<i>].parameterId` on `editorForm`.

private pickers() : array<string, PickerConfig>

The resolveForm walk-up finds editorForm on this component. After a pick the hidden editorRefresh is clicked and onAnchor renders the options.

Return values
array<string, PickerConfig>

refreshConditionOptions()

onAnchor: renders the source child options into the `options` checkbox list of each condition.

private refreshConditionOptions(Form $form) : void
Parameters
$form : Form

resolveParameterLabel()

private resolveParameterLabel(int $id) : string|null
Parameters
$id : int
Return values
string|null

suggestParameters()

private suggestParameters(string $query) : array<int, array{id: int, label: string}>
Parameters
$query : string
Return values
array<int, array{id: int, label: string}>

tr()

Translates a key in the component domain to a final string.

private tr(string $key) : string
Parameters
$key : string
Return values
string

validatorOptions()

Returns operators (Nette validators) as a select option list; skips codes longer than the DB column (varchar 15).

private validatorOptions() : array<string, NotTranslate>
Return values
array<string, NotTranslate>
On this page

Search results