# cat=config/config; type=options[yes,no]; label=Flag Production: Retrieve via '{{flagProduction:Y}}''. Default is 'yes'. Used to differentiate between development & production systems.
flagProduction = yes

# cat=config/config; type=options[single,both]; label=QFQ shows Form and Report at the same time or only one: a) 'single' (default) - only form or report (depending of if a form is given via SIP), b) 'both' at the same time.
render = single

# cat=config/config; type=string; label=Base URL of the current Typo3 installation:Use '{{baseUrl:Y}}' to reference own URL. Important for API calls (load, save, dirty, delete), downloads and PDF conversion. Example: https://your.base.url/including/sub/dir. Separate multiple URLs with comma. Final one will detected dynamically. Skip the scheme if the website needs to be accessible with http and https. Advanced example: first.base.url/sub1,second.example.url
baseUrl =

# cat=config/config; type=string; label=Date format:Default is 'dd.mm.yyyy'. Possible options: 'yyyy-mm-dd', 'dd.mm.yyyy'
dateFormat = dd.mm.yyyy

# cat=config/config; type=boolean; label=Show edit inline reports: In the frontend, for every QFQ Report record an edit symbol is shown. Click on it will open a window to edit the QFQ report.
editInlineReports = 1

# cat=config/config; type=boolean; label=Dark mode for edit inline report editor: Default is off=light mode.
editInlineReportDarkTheme = 0

# cat=config/config; type=string; label=Report as File Auto Export:Default is 'no'. If set to 'yes': When a QFQ tt-content record is rendered which does not contain the "file=" keyword, then its body is exported to a file in the qfq-project directory and the tt-content body is replaced by "file=<path_to_file>".
reportAsFileAutoExport = no

# cat=config/config; type=string; label=Websocket server port:Default is empty and no active websocket. If set: Websocket server is running and ready for chat implementation.
websocketPort =

# cat=config/config; type=string; label=Websocket server url:Default is empty and no active websocket.
websocketUrl =

# cat=config/config; type=string; label=QFQ chat websocket group:Default is qfq.
messengerGroup = qfq

# cat=config/config; type=string; label=QFQ chat authentication SQL ({{feUser}} {{channelName}}):Default is empty and no nchan authentification. E.g.: SELECT 1 AS access FROM Application AS a, Chat AS cTopic, Properties AS prop, Person AS p WHERE a.pId = p.id AND cTopic.type = 'topic' AND prop.xId = cTopic.id AND prop.pId = p.id AND p.account = '{{feUser}}' AND p.account != '' AND CONCAT('chat-', a.id, '-', cTopic.id) = '{{channelName}}' GROUP BY p.id LIMIT 1
messengerChannelAccessSql =

# cat=config/config; type=string; label=Renderer:Default is Bootstrap3Renderer. Determines the renderer that will be used by QFQ to render forms and other elements.
renderer = Bootstrap3Renderer


# cat=graphics/config; type=string; label=Command 'inkscape':Default is 'inkscape'. Convert SVG to images (png). An empty string disables `inkscape`. If it is not available, `convert` will be used instead.
cmdInkscape = inkscape

# cat=graphics/config; type=string; label=Command 'convert':Default is 'convert'. Convert images to thumbnails and to split PDF to JPEG.
cmdConvert = convert

# cat=graphics/config; type=string; label=Command 'pdf2svg':Default is 'pdf2svg'. Convert PDF to SVG.
cmdPdf2svg = pdf2svg

# cat=graphics/config; type=string; label=Command 'pdftocairo':Default is 'pdftocairo'. Repair broken PDFs to be splitted via convert.
cmdPdftocairo = pdftocairo

# cat=graphics/config; type=string; label=Command 'wkhtmltopdf':Default is '/opt/wkhtmltox/bin/wkhtmltopdf'. Convert a HTML page to a PDF.
cmdWkhtmltopdf = /opt/wkhtmltox/bin/wkhtmltopdf

# cat=graphics/config; type=string; label=Command 'qfqpdf':Default is '/opt/qfqpdf/qfqpdf'. Convert a HTML page to a PDF.
cmdQfqpdf = /opt/qfqpdf/qfqpdf

# cat=graphics/config; type=string; label=Command 'qpdf':Default is 'qpdf'. Convert PDF to PDF (try to repair) if merging of PDF fails.
cmdQpdf = qpdf

# cat=graphics/config; type=string; label=Command 'gs':Default is 'gs'. Decrypt and convert PDF to PDF (try to repair) if merging of PDF fails.
cmdGs = gs

# cat=graphics/config; type=string; label=Command 'pdfunite':Default is 'pdfunite'. Merge PDF.
cmdPdfunite = pdfunite

# cat=graphics/config; type=string; label=Command 'img2pdf':Default is 'img2pdf'. Convert images to PDF.
cmdImg2pdf = img2pdf

# cat=graphics/config; type=string; label=Command 'heif-convert':Default is 'heif-convert'. Convert images from HEIC/HEIF to PNG.
cmdHeifConvert = heif-convert

# cat=graphics/config; type=string; label=Command 'pdf2ps':Default is 'pdf2ps'. Convert images from PDF to PS.
cmdPdf2ps = pdf2ps

# cat=graphics/config; type=string; label=Command 'ps2pdf':Default is 'ps2pdf'. Convert images from PS to PDF.
cmdPs2pdf = ps2pdf

# cat=graphics/config; type=string; label=Command 'pdftotext':Default is 'pdftotext'. Extract PDF text, e.g. for detecting Acrobat-specific files.
cmdPdfToText = pdftotext

# cat=graphics/config; type=string; label=Command 'pdfinfo':Default is 'pdfinfo'. List meta information, like if a PDF is encrypted.
cmdPdfInfo = pdfinfo


# cat=debug/debug; type=options[auto,yes,no]; label=Throw exception General Error: Default is 'auto'. If a) 'yes' or b) 'auto' and 'flagProduction!=yes', throw an exception in case of a 'General Error'.
throwExceptionGeneralError = auto

# cat=debug/debug; type=options[all,none]; label=Form submit log mode:Default is 'all'. Form submit requests will be logged in the table FormSubmitLog. 'all' - every form save will be logged. 'none' - no logging. This setting can also be changed per form.
formSubmitLogMode = all

# cat=debug/mail; type=string; label=Redirect all mail to ...:Default is empty. If set, redirect all QFQ generated mails (Form, Report) to the specified email address.
redirectAllMailTo =

# cat=debug/sql; type=options[modify,all,error,none]; label=SQL log mode:Default is 'modify'. A logfile of QFQ fired SQL statements will be written. 'all' - every statement will be logged (this might a lot). 'modify' - log only statements who change data. 'error' - log only DB errors. 'none' - log never.
sqlLogMode = modify

# cat=debug/sql; type=options[modify,all,error,none]; label=SQL log mode for AutoCron:Default is 'error'. Modes see 'sqlLogMode'.
sqlLogModeAutoCron = error

# cat=debug/sql; type=string; label=SQL log file:By default fileadmin/protected/qfqProject/log/sql.log. A logfile of fired SQL statements. PathFile is absolute or relative to '<site path>'.
sqlLog =

# cat=debug/qfq; type=string; label=QFQ log file:By default fileadmin/protected/qfqProject/log/qfq.log directory. A logfile of fired SQL statements. PathFile is absolute or relative to '<site path>'.
qfqLog =

# cat=debug/mail; type=string; label=Mail log file:By default fileadmin/protected/qfqProject/log/mail.log. A logfile of sent mail. PathFile is absolute or relative to '<site path>'.
mailLog =

# cat=debug/imap; type=options[debug,verbose,error,none]; label=IMAP log mode for IMAP connections:Default is 'error'. Modes see 'imapLogMode'.
imapLogMode = error

# cat=debug/imap; type=string; label=IMAP log file:By default fileadmin/protected/qfqProject/log/imap.log. A logfile of IMAP connections. PathFile is absolute or relative to '<site path>'.
imapLog =

# cat=debug/merge; type=string; label=Merge log file:By default fileadmin/protected/qfqProject/log/merge.log. A logfile of all data merge actions. PathFile is absolute or relative to '<site path>'.
mergeLog =

# cat=debug/info; type=string; label=Show debug info:Default is 'auto'. Possible values: [yes|no|auto][,download]. For 'auto': If a BE User is logged in, a debug information will be shown on the FE.
showDebugInfo = auto

# cat=debug/reportMinPhpVersion; type=options[auto,yes,no]; label=Report too low PHP Version:Default is 'auto'. 'auto': If a BE User is logged in, qfq shows message and terminate.
reportMinPhpVersion = auto

# cat=database/db1; type=string; label=Init database:Default is 'set names utf8'. Optional. Might set specific settings.
init = SET names utf8; SET sql_mode = "NO_ENGINE_SUBSTITUTION";

# cat=database/db; type=options[auto,always,once,never]; label=Update QFQ database structures,functions & system forms:Default is 'auto'. After installing a new QFQ version it might be necessary to apply DB updates. 'auto' - apply DB updates only if there is a newer version. 'always' - apply DB updates every time QFQ is called - *not* recommended - slow! 'once' - on next QFQ start, do updates and switch back to 'auto'. 'never' - never apply DB updates.
update = auto

# cat=database/db; type=string; label=Database index for QFQ data:Default is '1'. Retrieve the current setting via {{indexData:Y}} or the database name via {{dbNameData:Y}}
indexData = 1

# cat=database/db; type=string; label=Database index for QFQ system:Default is '1'. Retrieve the current setting via {{indexQfq:Y}} or the database name via {{dbNameQfq:Y}}
indexQfq = 1

# cat=database/db; type=string; label=Database index for QFQ wiki:Default is '1'. Retrieve the current setting via {{indexWiki:Y}} or the database name via {{dbNameWiki:Y}}
indexWiki = 1



# cat=security/security; type=string; label=Session Timeout in seconds:Default is empty to take the php.ini system value (minimum of  'session.cookie_lifetime' and 'session.gc_maxlifetime').
sessionTimeoutSeconds =

# cat=security/security; type=string; label=Escape type default:Default is 'm'. QFQ Variables `{{...}}` without an 'escape type' get this as default.
escapeTypeDefault = m

# cat=security/security; type=string; label=List of honeypot input elements:Default is 'email,username,password'. If empty: no check. All named strings will rendered as hidden INPUT elements. If a form submit contains values for those inputs, the POST is treated as an attack.
securityVarsHoneypot = email,username,password

# cat=security/security; type=string; label=Attack delay in seconds:Default is '5'. After a detected attack, a) clear SIP Store b) wait number of seconds, c) quit PHP process (and therefore the browser request deliver nothing). '-1': Switch off attack detection.
securityAttackDelay = 5

# cat=security/security; type=boolean; label=Show an attack detected message:Default is 'off'. Show (return to browser) a message, that an attack has been detected. Should be 'off' for production sites.
securityShowMessage = 0

# cat=security/security; type=string; label='GET'-Parameter max length:Default is '50'. GET vars longer than 'x' character triggers an `attack-detected`. Minimum: 32.
securityGetMaxLength = 50

# cat=security/security; type=string; label=REST - Failed auth delay in seconds:Default is '3'.
securityFailedAuthDelay = 3

# cat=security/security; type=string; label=Default encryption method:Options: 'AES-128' (default) or 'AES-256'. If value is not valid then error will be shown on page.
encryptionMethod =

# cat=security/security; type=boolean; label=Check for protected folder access from outside
protectedFolderCheck = 1

# cat=security/security; type=string; label=Auth token for endpoint QFQ Version check:Default is empty and no qfq information can be fetched.
qfqVersionApiToken =


# cat=form-config/config; type=string; label=Dirty record lock timeout (seconds):Default is '900'. Time in seconds to lock a record, starting from the first modification. If lock expires, it is acquired again on the next modification.
recordLockTimeoutSeconds = 900

# cat=form-config/config; type=boolean; label=Enter as submit:Default is on. Pressing 'enter' on an input, means 'save form and close'  (exception: 'textarea' and 'editor' elements).
enterAsSubmit = 1


# cat=form-config/config; type=string; label=Form page alias:Default is 'form'. T3 Page slug to edit a form.
editFormPage = form

# cat=form-config/config; type=string; label=Datetimepicker type:Default is 'qfq'. Type of date-time-picker in form. Options: 'no', 'browser', 'qfq'.
dateTimePickerType = qfq

# cat=form-config/config; type=string; label=Form data pattern error message: default is 'Pattern mismatch' for all custom pattern. Customizable message used in validator.js. 'pattern' violation.
formDataPatternError =

# cat=form-config/config; type=string; label=Form data required error message:Default is 'Required'. Customizable error message used in validator.js. 'required' violation.
formDataRequiredError =

# cat=form-config/config; type=string; label=Form data match error message:Default is 'Fields do not match'. Customizable error message used in validator.js. 'match' violation. Typically used to ensure that two given emails or passwords are identically.
formDataMatchError =

# cat=form-config/config; type=string; label=Form data error message:Default is 'Error'. Customizable error message used in validator.js. generic violation.
formDataError =

# cat=form-config/config; type=boolean; label=Show record-id in form title:Default is off (0). If on (1), append the current record id on the title. New records get '(new)'.
showIdInFormTitle = 0

# cat=form-config/config; type=boolean; label=On form load, bring last used pill to front
rememberLastPill = 1

# cat=form-config/config; type=string; label=Do not log column:Default is 'password'. Comma separated more than one column possible.
doNotLogColumn = password

# cat=form-config/config; type=string; label=History in forms: Options -  "0" (off / Default), "1" (on), "SELECT ...". Example for sql query (empty result set means 0=off) - "SELECT IF(ISNULL(r.id), 0, 1) FROM Person AS p LEFT JOIN Role AS r ON r.pId = p.id AND r.name = 'admin' WHERE p.id='{{pIdUser:Y}}' LIMIT 1"
showHistory = 0

# cat=form-config/config; type=boolean; label=Validate F & FE.parameter:Default is 'on'. Checks if parameters known by qfq and are wrapped correctly where necessary. EXAMPLE => FE.parameter.sqlAfter have to be wrapped by {{ }}. Each parameter uses its own configuration.
validateFormElementParameter = 1

# cat=form-config/config; type=boolean; label=Recent Log:  Each 'form open' by a user will be logged in table Recent, incl. all SIP parameter. Default: on
recentLog = 1



# cat=form-layout/layout; type=string; label=CSS class QFQ container:Default is empty. Empty, if the page content is already wrapped in a Bootstrap container. Else 'container'.
cssClassQfqContainer =

# cat=form-layout/layout; type=string; label=CSS class QFQ form:Default is 'qfq-notify''. If given wrap around QFQ-Form. E.g. 'qfq-color-base'.
cssClassQfqForm =

# cat=form-layout/layout; type=string; label=CSS class of pills on the HTML form:Default is 'qfq-color-grey-1'. Wrap around title bar for pills: CSS Class, typically a background color.
cssClassQfqFormPill =qfq-color-grey-1

# cat=form-layout/layout; type=string; label=CSS class of the body of the HTML form:Default is 'qfq-color-grey-2'. Wrap around FormElements: CSS Class, typically a background color.
cssClassQfqFormBody = qfq-color-grey-2


# cat=form-layout/layout; type=string; label=Bootstrap CSS column class(es) to wrap the 'whole form':Default is 'col-md-12 col-lg-8'.
formBsColumns = col-md-12 col-lg-8

# cat=form-layout/layout; type=string; label=Bootstrap CSS column class(es) to wrap the 'label' column:Default is 'col-md-3 col-lg-3'.
formBsLabelColumns = col-md-3 col-lg-3

# cat=form-layout/layout; type=string; label=Bootstrap CSS column class(es)  to wrap the 'input' column:Default is 'col-md-6 col-lg-6'.
formBsInputColumns = col-md-6 col-lg-6

# cat=form-layout/layout; type=string; label=Bootstrap CSS column class(es)  to wrap the 'note' column:Default is 'col-md-3 col-lg-3'.
formBsNoteColumns = col-md-3 col-lg-3

# cat=form-layout/layout; type=string; label=Fieldset Class:Default is 'qfq-fieldset'. Alternative: 'qfq-fieldset-borderless'
fieldsetClass = qfq-fieldset



# cat=form-language/config; type=string; label=Language A id:Default is empty. ID (Typo3 parameter 'L') for language 'A'
formLanguageAId =

# cat=form-language/config; type=string; label=Language A label:Default is empty.  Label shown in *Form editor*, on the 'basic' tab.
formLanguageALabel =

# cat=form-language/config; type=string; label=Language B id:Default is empty. ID (Typo3 parameter 'L') for language 'A'
formLanguageBId =

# cat=form-language/config; type=string; label=Language B label:Default is empty.  Label shown in *Form editor*, on the 'basic' tab.
formLanguageBLabel =

# cat=form-language/config; type=string; label=Language C id:Default is empty. ID (Typo3 parameter 'L') for language 'A'
formLanguageCId =

# cat=form-language/config; type=string; label=Language C label:Default is empty.  Label shown in *Form editor*, on the 'basic' tab.
formLanguageCLabel =

# cat=form-language/config; type=string; label=Language D id:Default is empty. ID (Typo3 parameter 'L') for language 'A'
formLanguageDId =

# cat=form-language/config; type=string; label=Language D label:Default is empty.  Label shown in *Form editor*, on the 'basic' tab.
formLanguageDLabel =


# cat=form-button/layout; type=string; label=Button Top Wrap 'class':Default '<div class="row"><div class="col-md-12">' - Wraps the entire row above the form. It is used to group any elements you want to place on the top part of the form.
btnTopWrap =

# cat=form-button/layout; type=string; label=Button top Left Wrap 'class':Default '<div class="btn-toolbar pull-left" role="toolbar">' - wraps elements on the left side of the row above the form.
btnTopLeftWrap =

# cat=form-button/layout; type=string; label=Button top right Wrap 'class':Default '<div class="btn-toolbar pull-right" role="toolbar">' - wraps elements on the right side of the row above the form.
btnTopRightWrap =

# cat=form-button/layout; type=string; label=Button top left order :Default 'formView+formElementEdit+formEdit,save+close,delete+new' - Set the button sequence on the top left above your form. Use '+' to group buttons together and ',' to separate different button sets. Example new+close are in a button group.
btnTopLeftOrder =

# cat=form-button/layout; type=string; label=Button top right order :Default 'formView+formElementEdit+formEdit,save+close,delete+new' - Set the button sequence on the top right above your form. Use '+' to group buttons together and ',' to separate different button sets. Example new+close are in a button group.
btnTopRightOrder =

# cat=form-button/layout; type=string; label=Button footer wrap 'class':Default '<div class="row"><div class="col-md-12">' - Wraps the entire row above the form. It is used to group any elements you want to place on the footer part of the form.
btnFooterWrap =

# cat=form-button/layout; type=string; label=Button footer left wrap 'class':Default '<div class="btn-toolbar pull-left" role="toolbar">' - Wraps elements on the left side of row at footer the form.
btnFooterLeftWrap =

# cat=form-button/layout; type=string; label=Button footer right Wrap 'class':Default '<div class="btn-toolbar pull-right" role="toolbar">' - Wraps elements on the right side of row at footer the form.
btnFooterRightWrap =

# cat=form-button/layout; type=string; label=Button footer left order:Default 'formView+formElementEdit+formEdit,save+close,delete+new' - Set the button sequence on the footer left below your form. Use '+' to group buttons together and ',' to separate different button sets. Example new+close are in a button group.
btnFooterLeftOrder =

# cat=form-button/layout; type=string; label=Button footer right order:Default 'formView+formElementEdit+formEdit,save+close,delete+new' - Set the button sequence on the footer right below your form. Use '+' to group buttons together and ',' to separate different button sets. Example new+close are in a button group.
btnFooterRightOrder =

# cat=form-button/layout; type=string; label=Save button :Default p:save|:glyphicon-ok|b|c:navbar-btn - build save button using regular qfq notation.
saveButtonDefault =

# cat=form-button/layout; type=string; label=Delete button :Default p:delete|G:glyphicon-trash|b|c:navbar-btn - build delete button using regular qfq notation.
deleteButtonDefault =

# cat=form-button/layout; type=string; label=Close button :Default p:close|G:glyphicon-remove|b|c:navbar-btn - build close button using regular qfq notation.
closeButtonDefault =

# cat=form-button/layout; type=string; label=New button :Default p:new|G:glyphicon-plus|b|c:navbar-btn - build new button using regular qfq notation.
newButtonDefault =

# cat=form-button/layout; type=string; label=Formedit button :Default p:formEdit|G:glyphicon-wrench|b|c:navbar-btn - build formedit button using regular qfq notation.
formEditButtonDefault =

# cat=form-button/layout; type=string; label=Formview button :Default p:formView|G:glyphicon-eye-open|b|c:navbar-btn - build formview button using regular qfq notation.
formViewButtonDefault =

# cat=form-button/layout; type=string; label=Save button 'text':Default empty - Text for the save button (top of the form).
saveButtonText =

# cat=form-button/layout; type=string; label=Save button 'tooltip':Default 'Save'
saveButtonTooltip = Save

# cat=form-button/layout; type=string; label=Save button 'CSS Class':Default 'btn btn-default navbar-btn'
saveButtonClass = btn btn-default navbar-btn

# cat=form-button/layout; type=string; label=Save button 'CSS class on change':Default 'alert-info btn-info'. If the data in a form has been changed, the save button gets the given class.
saveButtonClassOnChange = alert-info btn-info

# cat=form-button/layout; type=string; label=Save button 'glyph icon':Default 'glyphicon-ok'. Glyph icon shown on the save button.
saveButtonGlyphIcon =

# cat=form-button/layout; type=string; label=Close button 'text':Default empty - Text for the close button (top of the form).
closeButtonText =

# cat=form-button/layout; type=string; label=Close button 'tooltip':Default 'Close'
closeButtonTooltip = Close

# cat=form-button/layout; type=string; label=Close button 'CSS Class':Default 'btn btn-default navbar-btn'
closeButtonClass = btn btn-default navbar-btn

# cat=form-button/layout; type=string; label=close button 'glyph icon':Default 'glyphicon-remove'. Glyph icon shown on the close button.
closeButtonGlyphIcon =


# cat=form-button/layout; type=string; label=Delete button 'text':Default empty - Text for the delete button (top of the form).
deleteButtonText =

# cat=form-button/layout; type=string; label=Delete button 'tooltip':Default 'Delete'
deleteButtonTooltip = Delete

# cat=form-button/layout; type=string; label=Delete button 'CSS Class':Default 'btn btn-default navbar-btn'
deleteButtonClass = btn btn-default navbar-btn

# cat=form-button/layout; type=string; label=Delete button 'glyph icon':Default 'glyphicon-trash'. Glyph icon shown on the delete button.
deleteButtonGlyphIcon =


# cat=form-button/layout; type=string; label=New button 'text':Default empty - Text for the new button (top of the form).
newButtonText =

# cat=form-button/layout; type=string; label=New button 'tooltip':Default 'New'
newButtonTooltip = New

# cat=form-button/layout; type=string; label=New button 'CSS Class':Default 'btn btn-default navbar-btn'
newButtonClass = btn btn-default navbar-btn

# cat=form-button/layout; type=string; label=New button 'glyph icon':Default 'glyphicon-plus'. Glyph icon shown on the new button.
newButtonGlyphIcon =


# cat=form-Element/formelement; type=options[qfq,browser,no]; label=Datetimepicker type:Default is 'qfq'. Type of date-time-picker in form.
dateTimePickerType = qfq

# cat=form-Element/formelement; type=options[hide,mute,show]; label=Subrecord design in case no record exists: Default is 'show'.
emptySubrecord = show

# cat=form-Element/formelement; type=options[dnd,button]; label=Upload type:Default is 'dnd'. 'dnd' - file chooser or drag'n'drop of files. 'button' - the regular file chooser button.
uploadType = dnd

# cat=form-Element/formelement; type=string; label=Form data pattern error message: default is 'Pattern mismatch' for all custom pattern. Customizable message used in validator.js. 'pattern' violation.
formDataPatternError =

# cat=form-Element/formelement; type=string; label=Form data required error message:Default is 'Required'. Customizable error message used in validator.js. 'required' violation.
formDataRequiredError =

# cat=form-Element/formelement; type=string; label=Form data match error message:Default is 'Fields do not match'. Customizable error message used in validator.js. 'match' violation. Typically used to ensure that two given emails or passwords are identically.
formDataMatchError =

# cat=form-Element/formelement; type=string; label=Form data error message:Default is 'Error'. Customizable error message used in validator.js. generic violation.
formDataError =

# cat=form-Element/formelement; type=string; label=Wrap the subrecord column 'id|ID|Id' with the given class: E.g. 'text-muted' is rendered as ...<span class="text-muted">value</span>.
cssClassColumnId = text-muted

# cat=form-Element/formelement; type=boolean; label=Show small 'x' to clear input on all input elements
clearMe = 0

# cat=form-Element/formelement; type=options[left,center,right]; label=FormElement label align:Default is 'left'.
labelAlign = left

# cat=form-Element/formelement; type=string; label=ExtraButtonInfo symbol 'inline':Default is '<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>'. The image appears inside of the formElement. If an `<img src="...">` tag is given, the PathFilename is relative to the Typo3 installation.
extraButtonInfoInline = <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>

# cat=form-Element/formelement; type=string; label=ExtraButtonInfo symbol 'below':Default is '<span class="glyphicon glyphicon-info-sign text-info" aria-hidden="true"></span>'. The Image appears below the formElement. If an `<img src="...">` tag is given, the PathFilename is relative to the Typo3 installation.
extraButtonInfoBelow = <span class="glyphicon glyphicon-info-sign text-info" aria-hidden="true"></span>

# cat=form-Element/formelement; type=options[auto,below]; label=ExtraButtonInfo position:Default is 'auto'. 'auto' - the image appears inline in formElement types  `text`, `date`, `time` or `datetime` and below for all other. 'below' - the image appears always below the formelement.
extraButtonInfoPosition = auto

# cat=form-Element/formelement; type=string; label=ExtraButtonInfoClass:Default is empty. Applies only to FormElements with final 'extraButtonInfoPosition=below'. Typically used to right align the icon. E.g. 'pull-right'
extraButtonInfoClass =

# cat=custom/layout; type=user[IMATHUZH\Qfq\Core\Typo3\TextFieldRenderer->renderLarge]; label=Custom variables:An INI document with additional variables for the system store: "CONTACT_EMAIL = 'john@doe.com'" can be retrieved via '{{CONTACT_EMAIL:Y}}'. Sections are ignored, but comments can be used. Empty by default.
custom =

# cat=custom/layout; type=string; label=Custom variable 01:Default empty. Can be used the centrally define variables. E.g. "CONTACT_EMAIL = 'john@doe.com'". Retrieve them via '{{CONTACT_EMAIL:Y}}'.
custom1 =

# cat=custom/layout; type=string; label=Custom variable 02
custom2 =

# cat=custom/layout; type=string; label=Custom variable 03
custom3 =

# cat=custom/layout; type=string; label=Custom variable 04
custom4 =

# cat=custom/layout; type=string; label=Custom variable 05
custom5 =

# cat=custom/layout; type=string; label=Custom variable 06
custom6 =

# cat=custom/layout; type=string; label=Custom variable 07
custom7 =

# cat=custom/layout; type=string; label=Custom variable 08
custom8 =

# cat=custom/layout; type=string; label=Custom variable 09
custom9 =

# cat=custom/layout; type=string; label=Custom variable 10
custom10 =

# cat=custom/layout; type=string; label=Custom variable 11
custom11 =

# cat=custom/layout; type=string; label=Custom variable 12
custom12 =

# cat=custom/layout; type=string; label=Custom variable 13
custom13 =

# cat=custom/layout; type=string; label=Custom variable 14
custom14 =

# cat=custom/layout; type=string; label=Custom variable 15
custom15 =

# cat=custom/layout; type=string; label=Custom variable 16
custom16 =

# cat=custom/layout; type=string; label=Custom variable 17
custom17 =

# cat=custom/layout; type=string; label=Custom variable 18
custom18 =

# cat=custom/layout; type=string; label=Custom variable 19
custom19 =

# cat=custom/layout; type=string; label=Custom variable 20
custom20 =

# cat=custom/layout; type=string; label=Custom variable 21
custom21 =

# cat=custom/layout; type=string; label=Custom variable 22
custom22 =

# cat=custom/layout; type=string; label=Custom variable 23
custom23 =

# cat=custom/layout; type=string; label=Custom variable 24
custom24 =

# cat=custom/layout; type=string; label=Custom variable 25
custom25 =

# cat=custom/layout; type=string; label=Custom variable 26
custom26 =

# cat=custom/layout; type=string; label=Custom variable 27
custom27 =

# cat=custom/layout; type=string; label=Custom variable 28
custom28 =

# cat=custom/layout; type=string; label=Custom variable 29
custom29 =

# cat=custom/layout; type=string; label=Custom variable 30
custom30 =


# cat=dynamic/config; type=user[IMATHUZH\Qfq\Core\Typo3\TextFieldRenderer->renderSmall]; label=Fill store 'SYSTEM' by SQL Row:Default is empty. SQL query fired during QFQ load. Every row with columns name and value are copied to store 'SYSTEM'. Already defined values are unchanged. Retrieve values via '{{name:Y}}'. Example 'SELECT gr.reference AS name, gr.id AS value FROM Ggroup AS gr WHERE gr.storeSystem="yes"'
fillStoreSystemBySqlRow =

# cat=dynamic/config; type=string; label=Error message for SQL Row:Default is empty. Error message in case the SQL does not return at least one row. Important: if a message is given, QFQ will stop and return the message. Without a message: QFQ run's as there would be no 'fillStoreSystemStoreBySqlRow'.
fillStoreSystemBySqlRowErrorMsg =

# cat=dynamic/config; type=user[IMATHUZH\Qfq\Core\Typo3\TextFieldRenderer->renderSmall]; label=Fill store 'SYSTEM' by SQL Row (Include variable):Default is empty. THE FOLLOWING NEEDS TO BE CLARIFIED - but it is necessary to define 'pIdUser' to replace {{feUser}}. The SQL query executed during QFQ load will also parse the variable. Every row with columns name and value, as well as defined keywords, are copied to the 'SYSTEM' store. Already defined values are unchanged.Retrieve values via '{{name:Y}}'. Example "SELECT 'pIdUser' AS name , p.id AS value FROM Person AS p WHERE p.account = '{{feUser:T}}'" in this case '{{pIdUser:Y}}' is the variable name.
fillStoreSystemBySqlRowVariable =

# cat=dynamic/config; type=string; label=Error message for SQL Row (Include variable):Default is empty. Error message in case the SQL does not return at least one row. Important: if a message is given, QFQ will stop and return the message. Without a message: QFQ run's as there would be no 'fillStoreSystemBySqlRowVariable'.
fillStoreSystemBySqlRowVariableErrorMsg =

# cat=dynamic/config; type=user[IMATHUZH\Qfq\Core\Typo3\TextFieldRenderer->renderSmall]; label=Fill store 'SYSTEM' by SQL 1:Default is empty. SQL query fired during QFQ load. The result have to be exactly one row. That row will be merged to store 'SYSTEM'. Retrieve values via '{{column:Y}}'. Example 'SELECT id AS periodId FROM Period WHERE start<=NOW() ORDER BY start DESC LIMIT 1'
fillStoreSystemBySql1 =

# cat=dynamic/config; type=string; label=Error message for SQL 1:Default is empty. Error message in case the SQL does not return exact one row. Important: if a message is given, QFQ will stop and return the message. Without a message: QFQ run's as there would be no 'fillStoreSystemStoreBySql1'.
fillStoreSystemBySqlErrorMsg1 =

# cat=dynamic/config; type=user[IMATHUZH\Qfq\Core\Typo3\TextFieldRenderer->renderSmall]; label=Fill store 'SYSTEM' by SQL 2:Default is empty. SQL query fired during QFQ load. The result have to be exactly one row. That row will be merged to store 'SYSTEM'. Retrieve values via '{{column:Y}}'. Example 'SELECT id AS periodId FROM Period WHERE start<=NOW() ORDER BY start DESC LIMIT 1'
fillStoreSystemBySql2 =

# cat=dynamic/config; type=string; label=Error message for SQL 2:Default is empty. Error message in case the SQL does not return exact one row. Important: if a message is given, QFQ will stop and return the message. Without a message: QFQ run's as there would be no 'fillStoreSystemStoreBySql2'.
fillStoreSystemBySqlErrorMsg2 =

# cat=dynamic/config; type=user[IMATHUZH\Qfq\Core\Typo3\TextFieldRenderer->renderSmall]; label=Fill store 'SYSTEM' by SQL 3:Default is empty. SQL query fired during QFQ load. The result have to be exactly one row. That row will be merged to store 'SYSTEM'. Retrieve values via '{{column:Y}}'. Example 'SELECT id AS periodId FROM Period WHERE start<=NOW() ORDER BY start DESC LIMIT 1'
fillStoreSystemBySql3 =

# cat=dynamic/config; type=string; label=Error message for SQL 3:Default is empty. Error message in case the SQL does not return exact one row. Important: if a message is given, QFQ will stop and return the message. Without a message: QFQ run's as there would be no 'fillStoreSystemStoreBySql3'.
fillStoreSystemBySqlErrorMsg3 =

# cat=file/file; type=string; label=Upload Action : 'unProtect' => Try to unprotect the file (if it fails, keep original untouched), 'denyProtect' => deny upload of protected files, 'denyAcrobatOnly' => deny upload of 'Adobe Acrobat'-only files, 'none' => no upload actions (no comination with other actions). Default: 'unProtect,denyProtect', Option: Default: 'unProtect:60,denyProtect'
uploadAction = unProtect,denyProtect

# cat=file/file; type=options[auto,error,dummy]; label=Missing file: 'auto' (default) with 'flagProduction = no' return a dummy file, else report an error. 'error': stop and report missing files. 'dummy': return a dummy file. Dummy: typo3conf/ext/qfq/Resources/Public/dummyFiles/dummy.[pdf|xlsx].
missingFile = auto

# cat=file/file; type=boolean; label=Upload File: Force filename of uploaded files to lower case. Default 'on'.
fileNameToLower = 1

# cat=file/file; type=string; label=Cache directory 'secure':Default is 'fileadmin/protected/cache'. Directory to optionally save on-the-fly rendered PDF, Excel, ZIP files. Important: secure the directory against direct access.
cacheDirSecure = fileadmin/protected/cache

# cat=file/file; type=string; label=Purge cached files:Default is 365. Purge files in named cache directory older than x days. '0' disables purge.
cachePurgeFilesOlderDays = 365

# cat=file/file; type=string; label=Max file size for file uploads:If empty, take minimum of 'post_max_size' and 'upload_max_filesize' (PHP.INI).
maxFileSize =

# cat=file/file; type=string; label=Max allowed image size in pixels for uploads. (Width)x(Height). Default: 5000x5000.
maxImageDimension = 5000x5000


# cat=file/file; type=string; label=ImageUpload directory:Default is 'fileadmin/imageUploadDir'. Will be used for TinyMCE Image Upload.
imageUploadDir =

# cat=file/file; type=string; label=Thumbnail directory 'secure':Default is 'fileadmin/protected/qfqThumbnail'. Important: secure the directory against direct access. Will be used by a special columnname '_thumbnail'.
thumbnailDirSecure = fileadmin/protected/qfqThumbnail

# cat=file/file; type=string; label=Thumbnail directory 'public':Default is 'typo3temp/qfqThumbnail'. Will be used by a special columnname '_thumbnail'.
thumbnailDirPublic = typo3temp/qfqThumbnail

# cat=file/file; type=string; label=Query in direct download mode [download]: Access via download.php. No default. SELECT CONCAT('d:output.pdf|F:', n.pathFileName) FROM notiz AS n WHERE n.id=? AND NOW()<n.expire
sqlDirectdownloadphp =

# cat=file/file; type=string; label=Error Message [download]: Message shown to the user if record isn't found.
sqlDirectdownloadphperror =

# cat=file/file; type=string; label=Query in direct download mode [dl]: Access via dl.php. No default. SELECT CONCAT('d:output.pdf|F:', n.pathFileName) FROM notiz AS n WHERE n.id=? AND NOW()<n.expire
sqlDirectdlphp =

# cat=file/file; type=string; label=Error Message [dl]: Message shown to the user if record isn't found.
sqlDirectdlphperror =

# cat=file/file; type=string; label=Query in direct download mode [dl2]: Access via dl2.php. No default. SELECT CONCAT('d:output.pdf|F:', n.pathFileName) FROM notiz AS n WHERE n.id=? AND NOW()<n.expire
sqlDirectdl2php =

# cat=file/file; type=string; label=Error Message [dl2]: Message shown to the user if record isn't found.
sqlDirectdl2phperror =

# cat=file/file; type=string; label=Query in direct download mode [dl3]: Access via dl3.php. No default. SELECT CONCAT('d:output.pdf|F:', n.pathFileName) FROM notiz AS n WHERE n.id=? AND NOW()<n.expire
sqlDirectdl3php =

# cat=file/file; type=string; label=Error Message [dl3]: Message shown to the user if record isn't found.
sqlDirectdl3phperror =


# cat=tools/tools; type=string; label=Force fixed sender email address:Default is empty. Set this ONLY if your SMTP needs one fix sender address. QFQ will then set Reply-To to the initial sender. Realname is optional. E.g.: 'realname <mail@example.com>'
forceSmtpSender =

# cat=tools/tools; type=string; label=Options for SendEMail:Default is empty. General options. Check: http://caspian.dotconf.net/menu/Software/SendEmail. E.g.: 'sendEMail=-o tls=yes'
sendEMailOptions =

# cat=tools/tools; type=string; label=Command 'wget':Default is 'wget >/dev/null 2>&1'. Will be used for trying to get content from protected server.
cmdWget = wget >/dev/null 2>&1


# cat=authentication/service/11; type=boolean; label=Enable authentication: If selected, then QFQ can authenticate a Typo3 user
authEnable = 0

# cat=authentication/service/12; type=int+; label=Service priority: This defines the order of the QFQ authentication service in relation to other authentication services. Higher number wins.
authPriority = 82

# cat=authentication/service/13; type=int+; label=Service quality: This value is used by TYPO3 if two authentication services have the same priority. Higher number wins.
authQuality = 80

# cat=authentication/service/14; type=string; label=User storage: The UID of the page where local users are located. The first UID is used to store new users.
authUserStorage =

# cat=authentication/service/15; type=string; label=User groups: The comma-separated list of UIDs of user groups to be assigned to new users.
authUserGroups =

# cat=authentication/enable/21; type=boolean; label=Create accounts: If selected, then a local account is created if non exists when a user is authenticated by QFQ
authCreateAccount = 0

# cat=authentication/enable/22; type=boolean; label=Unlock accounts: If selected, then a disabled local account is unlocked when a user is authenticated by QFQ
authUnlockAccount = 0

# cat=authentication/enable/23; type=boolean; label=Activate accounts: If selected, then an inactive or expired account is activated when a user is authenticated by QFQ
authActivateAccount = 0

# cat=authentication/enable/24; type=int+; label=Account extension time: The number of days after which an account activated during authentication will expire
authExtendByDays = 7

# cat=authentication/enable/25; type=boolean; label=Update accounts: If selected, then accounts are updated when a user is authenticated by QFQ with provided user data
authUpdateAccount = 0

