FormSlugAjaxController extends AbstractFormEngineAjaxController

Handle FormEngine AJAX calls for Slug validation and sanitization

Internal

This class is a specific Backend controller implementation and is not considered part of the Public TYPO3 API.

Table of Contents

Methods

__construct()  : mixed
suggestAction()  : ResponseInterface
Validates a given slug against the site and give a suggestion when it's already in use
addRegisteredRequireJsModulesToJavaScriptItems()  : void
checkRequest()  : bool
createExecutableStringRepresentationOfRegisteredRequireJsModules()  : array<string|int, mixed>
Gets result array from FormEngine and returns string with js modules that need to be loaded and evaluated by JavaScript.
getLabelsFromLocalizationFile()  : array<string|int, mixed>
Parse a language file and get a label/value array from it.
getLanguageService()  : LanguageService|null
getRelativePathToStylesheetFile()  : string
Resolve a CSS file position, possibly prefixed with 'EXT:'
serializeJavaScriptModuleInstructionItems()  : array<string|int, mixed>

Methods

suggestAction()

Validates a given slug against the site and give a suggestion when it's already in use

public suggestAction(ServerRequestInterface $request) : ResponseInterface

For new records this will look like this:

  • If "slug" field is empty, take the other fields, and generate the slug based on the sent fields.
    • JS: adapt the "placeholder" value only, as on save the field will be filled with the value via DataHandler
  • If "slug" field is not empty (= "unlocked" and manually typed in)
  • sanitize the slug
    • If 'uniqueInSite' is set check if it's unique for the site
      • If not unique propose another slug and return this with the flag hasConflicts = true
    • If 'uniqueInPid' is set check if it's unique for the pid
      • If not unique propose another slug and return this with the flag hasConflicts = true

For existing records:

  • sanitize the slug
    • If 'uniqueInSite' is set check if it's unique for the site
      • If not unique propose another slug and return this with the flag hasConflicts = true
    • If 'uniqueInPid' is set check if it's unique for the pid
      • If not unique propose another slug and return this with the flag hasConflicts = true
    • If the slug has changed from the existing database record (@todo)
      • Show a message that the old URL will stop working (possibly add a redirect via checkbox)
      • If the page has subpages, show a warning that the subpages WILL NOT BE MODIFIED and keep the OLD url
Parameters
$request : ServerRequestInterface
Tags
throws
RuntimeException
Return values
ResponseInterface

addRegisteredRequireJsModulesToJavaScriptItems()

protected addRegisteredRequireJsModulesToJavaScriptItems(array<string|int, mixed> $result, JavaScriptItems $items) : void
Parameters
$result : array<string|int, mixed>
$items : JavaScriptItems

checkRequest()

protected checkRequest(ServerRequestInterface $request) : bool
Parameters
$request : ServerRequestInterface
Tags
throws
InvalidArgumentException
Return values
bool

createExecutableStringRepresentationOfRegisteredRequireJsModules()

Gets result array from FormEngine and returns string with js modules that need to be loaded and evaluated by JavaScript.

protected createExecutableStringRepresentationOfRegisteredRequireJsModules(array<string|int, mixed> $result[, bool $skipInstructions = false ]) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
$skipInstructions : bool = false

whether to skip JavaScriptModuleInstruction

Return values
array<string|int, mixed>

getLabelsFromLocalizationFile()

Parse a language file and get a label/value array from it.

protected getLabelsFromLocalizationFile(string $file) : array<string|int, mixed>
Parameters
$file : string

EXT:path/to/file

Return values
array<string|int, mixed>

Label/value array

getRelativePathToStylesheetFile()

Resolve a CSS file position, possibly prefixed with 'EXT:'

protected getRelativePathToStylesheetFile(string $stylesheetFile) : string
Parameters
$stylesheetFile : string

Given file, possibly prefixed with EXT:

Return values
string

Web root relative position to file

serializeJavaScriptModuleInstructionItems()

protected serializeJavaScriptModuleInstructionItems(JavaScriptModuleInstruction $instruction) : array<string|int, mixed>
Parameters
$instruction : JavaScriptModuleInstruction
Tags
todo

This is a temporary "solution" and shall be handled in JavaScript directly

Return values
array<string|int, mixed>

        
On this page

Search results