From e4bf9960348bcdb7173719b4b4ab7eeddc8fc2c5 Mon Sep 17 00:00:00 2001 From: Carsten Rose <carsten.rose@math.uzh.ch> Date: Sat, 17 Jun 2017 23:14:56 +0200 Subject: [PATCH] formEditor.sql: Implemented Links in the FormEditor to reference directly the online documentation. Manual.rst: Extend documentation with various anker for FormEditor links. Also added some missing explanations: Required Parameter, Forward. --- extension/Documentation/Manual.rst | 185 ++++++++++++++++++----------- extension/qfq/sql/formEditor.sql | 68 +++++------ 2 files changed, 149 insertions(+), 104 deletions(-) diff --git a/extension/Documentation/Manual.rst b/extension/Documentation/Manual.rst index 7e099440a..9d994a5eb 100644 --- a/extension/Documentation/Manual.rst +++ b/extension/Documentation/Manual.rst @@ -282,7 +282,8 @@ config.qfq.ini +-----------------------------+-------------------------------------------------+ crendentials is supported. | | LDAP_1_PASSWORD | LDAP_1_PASSWORD=mySecurePassword | | +-----------------------------+-------------------------------------------------+----------------------------------------------------------------------------+ -| ESCAPE_TYPE_DEFAULT | ESCAPE_TYPE_DEFAULT=s | All variables `{{...}}` get this escape class by default | +| ESCAPE_TYPE_DEFAULT | ESCAPE_TYPE_DEFAULT=s | All variables `{{...}}` get this escape class by default. | +| | | See `variable-escape`_. | +-----------------------------+-------------------------------------------------+----------------------------------------------------------------------------+ | SECURITY_VARS_HONEYPOT | SECURITY_VARS_HONEYPOT = email,username,password| If empty: no check. All named variables will rendered as INPUT elements | +-----------------------------+-------------------------------------------------+----------------------------------------------------------------------------+ @@ -663,6 +664,8 @@ URL Parameter * If a value violates a parameter sanitize class, the value becomes an empty string. +.. _`variable-escape`: + Escape ^^^^^^ @@ -682,9 +685,9 @@ To protect the web application the following `escape` types are available: * Escaping is typically necessary for SQL or LDAP queries. * Be careful when escaping nested variables. Best is to escape **only** the most outer variable. * In `config.qfq.ini`_ a global `ESCAPE_TYPE_DEFAULT` can be defined. The configured escape type applies to all substituted - variables, who do not contain a *specific* escape type. + variables, who *do not* contain a *specific* escape type. * Additionally a `defaultEscapeType` can be defined per `Form` (separate field in the Form Editor). This overwrites the - global definition of `config.qfq.ini`. By default, every `Form.defaultEscapeType` = 'c' (=config), which means the settin + global definition of `config.qfq.ini`. By default, every `Form.defaultEscapeType` = 'c' (=config), which means the setting in `config.qfq.ini`_. * To suppress a default escape type, define the `escape type` = '-' on the specific variable. E.g.: `{{name:FE:alnumx:-}}`. @@ -1342,6 +1345,9 @@ After filling the store, access the content via `{{<attributename>:allbut:L:s}}` Form ==== +General +------- + * Forms will be created by using the *QFQ Form Editor* on the Typo3 frontend (HTML form). * The Formeditor itself consist of two predefined QFQ forms: *form* and *formElement* - these forms are often updated during the installation of new QFQ versions. @@ -1391,60 +1397,68 @@ Form * With the `Dynamic` option, it's easily possible to use one Typo3 page and display different forms on that specific page. This is nice to configure few Typo 3 pages. The disadvantage is that the user might loose the navigation. + +.. _comment-space-character: + +Comment- and space-character +---------------------------- + +* Lines will be trimmed - leading and trailing spaces will be removed. +* If a leading and/or trailing space is needed, escape it: '\ hello world \' > ' hello world '. + +* Lines starting with a '#' are treated as a comment and will not be parsed. Suche lines are treated as 'empty lines'. +* The comment sign can be escaped with '\'. + + + .. _form-main: Definition ---------- -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Name | Type | Description | -+=========================+==========================================================+=========================================================================================+ -|id | int, autoincrement | created by by MySQL | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|name | string | unique and speaking name of the form. Form will be identified by this name | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|title | string | Title, shown on/above the form. | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|noteInternal | textarea | Internal notes: special functionality, used variables, ... | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|tableName | string | Primay table of the form | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|permitNew | enum('sip', 'logged_in', 'logged_out', 'always', 'never')| Default: sip | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|permitEdit | enum('sip', 'logged_in', 'logged_out', 'always', 'never')| Default: sip | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|render | enum('plain','table', 'bootstrap') | Default bootstrap | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|requiredParameter | string | Name of required SIP parameter, seperated by comma. '#' as comment delimiter | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|showButton | set('new', 'delete', 'close', 'save') | Default 'new,delete,close,save'. Shown buttons in the upper right corner of the form. | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|multiMode | enum('none','horizontal','vertical') | Default 'none' | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|multiSql | text | Optional. SQL Query which selects all records to edit. | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|multiDetailForm | string | Optional. Form to open, if a record is selected to edit (double click on record line) | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|multiDetailFormParameter | string | Optional. Translated Parameter submitted to detailform (like subrecord parameter) | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|forwardMode | string: 'client | no | url | url-skip-history' | After pressing 'save': | -+-------------------------+----------------------------------------------------------+ 'url' / 'url-skip-history': redirects browser to 'forwardPage'. | -|forwardPage | string | 'client': the browser decides to stay on the page or to force a redirection | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|bsLabelColumns | string | The bootstrap grid system is based on 12 columns. The sum of *bsLabelColumns*, | -+-------------------------+----------------------------------------------------------+ *bsInputColumns* and *bsNoteColumns* should be 12. These values here are the base values| -|bsInputColumns | string | for all *FormElements*. Exceptions per *FormElement* can be specified per *FormElement*.| -+-------------------------+----------------------------------------------------------+ Default: label=3, input=6, note=3. See :ref:`form-layout`. | -|bsNoteColumns | string | | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|parameter | text | Misc additional parameters. See :ref:`form-parameter`. | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|deleted | string | 'yes'|'no'. | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|modified | timestamp | updated automatically through stored procedure | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ -|created | datetime | set once through QFQ | -+-------------------------+----------------------------------------------------------+-----------------------------------------------------------------------------------------+ ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| Name | Description | ++=========================+====================================================================================================================================================+ +|Name | Unique and speaking name of the *Form*. Form will be identified by this name. Use only '[a-zA-Z0-9._+-]'. _`form-name` | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Title | Title, shown on/above the form. _`form-title` | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Note | Personal editor notes. _`form-note` | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Table | Primary table of the form. _`form-tablename` | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Required Parameter | Name of required SIP parameter, seperated by comma. '#' as comment delimiter. See `form-requiredParameter`_ | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Permit New | 'sip, logged_in, logged_out, always, never' (Default: sip): See `form-permitNewEdit`_ | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Permit Edit | 'sip, logged_in, logged_out, always, never' (Default: sip): See `form-permitNewEdit`_ | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Escape Type Default | See `variable-escape`_. | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Show button | 'new, delete, close, save' (Default: 'new,delete,close,save'): Shown named buttons in the upper right corner of the form. See `form-showButton`_ | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Forward | 'client | no | url | url-skip-history' (Default: client): See `form-forward`_. | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Forward Page | URL or Typo3 page id/alias. See `form-forward`_. | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|Parameter | Misc additional parameters. See `form-parameter`_. | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|BS Label Columns | The bootstrap grid system is based on 12 columns. The sum of *bsLabelColumns*, | ++-------------------------+ *bsInputColumns* and *bsNoteColumns* should be 12. These values here are the base values | +|BS Input Columns | for all *FormElements*. Exceptions per *FormElement* can be specified per *FormElement*. | ++-------------------------+ Default: label=3, input=6, note=3. See `form-layout`_. | +|BS Note Columns | | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|multiMode | NOT IMPLEMENTED - 'none, horizontal, vertical' (Default 'none') | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|multiSql | NOT IMPLEMENTED - Optional. SQL Query which selects all records to edit. | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|multiDetailForm | NOT IMPLEMENTED - Optional. Form to open, if a record is selected to edit (double click on record line) | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +|multiDetailFormParameter | NOT IMPLEMENTED - Optional. Translated Parameter submitted to detailform (like subrecord parameter) | ++-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _`form-permitNewEdit`: permitNew & permitEdit ^^^^^^^^^^^^^^^^^^^^^^ @@ -1475,7 +1489,7 @@ Depending on `r`, the following access permission will be taken: 'access granted'. The grant will be revoked when the QFQ session is destroyed - this happens when a user loggs out or the webbrowser is closed. -* `logged_id` / `logged_out`: for forms which might be displayed without a SIP, but maybe on a protected or even unprotected +* `logged_in` / `logged_out`: for forms which might be displayed without a SIP, but maybe on a protected or even unprotected page. *The option is probably not often used.* * `always`: such a form is always allowed to be loaded. @@ -1494,6 +1508,17 @@ Depending on `r`, the following access permission will be taken: * `permitEdit=none`: Public accessible forms. It's not possible to update records. +.. _`form-requiredParameter`: + +Required Parameter +^^^^^^^^^^^^^^^^^^ + +Comma separated list of variable names. The form will show an error message, if it was called without the named +parameters. Especially subforms often requires additional parameters - if such parameters are missing, the record cannot +saved correctly. The parameters must be given by SIP. + +.. _`form-showButton`: + showButton ^^^^^^^^^^ @@ -1506,6 +1531,40 @@ Display or hide the button `new`, `delete`, `close`, `save`. * Default: show all buttons. +.. _`form-forward`: + +Forward: Save / Close +^^^^^^^^^^^^^^^^^^^^^ + +Forward +''''''' + +After the user presses *Save*, *Close*, *Delete* or *New*, different actions are possible where the browser redirects to. + +* `client` (default) - the QFQ Javascript logic, inside the browser, decides to stay on the page or to force a redirection + to a previous page. + + * *Close* closes the current page and goes back to the previous page. + * *Save* stays on the current page. + +* `no` - no change, the browser remains on the current side. Close does not close the page. It just triggers a save if + there are modified data. +* `url` - the browser redirects to the named URL or T3 page. Independent if the user presses `save` or `close`. +* `url-skip-history` - same as `url`, but the current location won't saved in the browser history. + +Only with `Forward` == `url` | `url-skip-history`, the definition of `Forward URL / Page` becomes active. + +Forward URL / Page +'''''''''''''''''' + +Possible values: + +* `http://john-doe.com` - fix URL. +* `?thanks` - fix URL, inside current Typo3 installation. +* `{{SELECT ... }}` - dynamically calculated, after all processing is done. This is very usefull, to redirect to different + targets, depending on user input or whatever. + + .. _form-parameter: parameter @@ -1608,18 +1667,6 @@ parameter * class = container-fluid * classBody = qfq-form-right -.. _comment-space-character: - -Comment- and space-character -'''''''''''''''''''''''''''' - -* Lines will be trimmed - leading and trailing spaces will be removed. -* If a leading and/or trailing space is needed, escape it: '\ hello world \' > ' hello world '. - -* Lines starting with a '#' are treated as a comment and will not be parsed. Suche lines are treated as 'empty lines' -* The comment sign can be escaped with '\' - - submitButtonText '''''''''''''''' @@ -1709,9 +1756,9 @@ FormElements * Each *form* contains one or more *FormElement*. * The *FormElements* are divided in three categories: - * :ref:`class-container` - * :ref:`class-native` - * :ref:`class-action` + * `class-container`_ + * `class-native`_ + * `class-action`_ * Ordering and grouping: Native *FormElements* and Container-Elements (both with feIdContainer=0) will be ordered by 'ord'. * Inside of a container, all nested elements will be displayed. @@ -1719,7 +1766,7 @@ FormElements * Additional options to a *FormElement* will be configured via the *FormElement.parameter* field (analog to *Form.parameter* for *Forms* ). - * See also: :ref:`comment-space-character` + * See also: `comment-space-character`_ .. _class-container: diff --git a/extension/qfq/sql/formEditor.sql b/extension/qfq/sql/formEditor.sql index af3b42603..b51824691 100644 --- a/extension/qfq/sql/formEditor.sql +++ b/extension/qfq/sql/formEditor.sql @@ -155,49 +155,47 @@ VALUES # FormEditor: FormElements for 'form' INSERT INTO FormElement (formId, name, label, mode, type, checkType, class, ord, size, maxLength, note, clientJs, value, - sql1, parameter, feIdContainer, subrecordOption, modeSql, placeholder, encode, dynamicUpdate) + sql1, parameter, feIdContainer, subrecordOption, modeSql, placeholder, encode, dynamicUpdate, checkPattern) VALUES # Make the form a 'delete form' for records Form/FormElement. (1, 'Delete FE', '', 'show', 'beforeDelete', 'all', 'action', 100, 0, 0, '', '', '', '', - 'sqlAfter={{DELETE FROM FormElement WHERE formId={{id:R}} }}', 0, '', '', '', 'none', 'no'), - - (1, 'name', 'Name', 'required', 'text', 'alnumx', 'native', 120, 0, 0, '', '', '', '', 'autofocus', 1, '', '', '', - 'specialchar', 'no'), - (1, 'title', 'Title', 'show', 'text', 'all', 'native', 130, 0, 0, '', '', '', '', '', 1, '', '', '', 'none', 'no'), - (1, 'noteInternal', 'Note', 'show', 'text', 'all', 'native', 140, '40,3', 0, '', '', '', '', '', 1, '', '', '', 'specialchar', 'no'), - (1, 'tableName', 'Table', 'required', 'select', 'all', 'native', 150, 0, 0, '', '', '', '{{!SHOW tables}}', - 'emptyItemAtStart', 1, '', '', '', 'specialchar', 'no'), - (1, 'requiredParameter', 'Required Parameter', 'show', 'text', 'all', 'native', 200, 0, 0, '', '', '', '', '', 2, '', '', '', 'specialchar', 'no'), - (1, 'permitNew', 'Permit New', 'show', 'radio', 'all', 'native', 210, 0, 10, '', '', '', '', 'buttonClass=btn-default', 2, '', '', '', 'specialchar', 'no'), - (1, 'permitEdit', 'Permit Edit', 'show', 'radio', 'all', 'native', 220, 0, 10, '', '', '', '', 'buttonClass=btn-default', 2, '', '', '', 'specialchar', 'no'), - (1, 'escapeTypeDefault', 'Escape type default', 'show', 'radio', 'all', 'native', 230, 0, 10, '', '', '', '', - 'itemList=c:config,s:single,d:double,l:ldap search,L:ldap value,m:mysql realEscapeString,-:none\nbuttonClass=btn-default', 2, '', '', '', 'specialchar', 'no'), - (1, 'render', 'Render', 'show', 'radio', 'all', 'native', 240, 0, 3, '', '', '', '', 'buttonClass=btn-default', 2, '', '', '', 'specialchar', 'no'), - (1, 'showButton', 'Show button', 'show', 'checkbox', 'all', 'native', 250, 0, 5, '', '', '', '', 'checkBoxMode = multi\norientation=vertical', 2, '', '', '', 'specialchar', 'no'), - - (1, 'forwardMode', 'Forward', 'show', 'radio', 'all', 'native', 300, 0, 0, '', '', '', '', 'buttonClass=btn-default', 3, '', '', '', 'specialchar', 'yes'), - (1, 'forwardPage', 'Forward Page', 'show', 'text', 'all', 'native', 310, 0, 0, '', '', '', '', '', 3, '', - '{{SELECT IF( "{{forwardMode:FE:alnumx}}" LIKE "url%", "show", "hidden")}}', '', 'none', 'yes'), - (1, 'parameter', 'Parameter', 'show', 'text', 'all', 'native', 320, '40,8', 0, '', '', '', '', '', 3, '', '', '', 'none', 'no'), - (1, 'bsLabelColumns', 'BS Label Columns', 'show', 'text', 'all', 'native', 330, 0, 0, '', '', '', '', '', 3, '', '', '{{bsLabelColumns:Y}}', 'specialchar', 'no'), - (1, 'bsInputColumns', 'BS Input Columns', 'show', 'text', 'all', 'native', 340, 0, 0, '', '', '', '', '', 3, '', '', '{{bsInputColumns:Y}}', 'specialchar', 'no'), - (1, 'bsNoteColumns', 'BS Note Columns', 'show', 'text', 'all', 'native', 350, 0, 0, '', '', '', '', '', 3, '', '', '{{bsNoteColumns:Y}}', 'specialchar', 'no'), - (1, 'deleted', 'Deleted', 'show', 'checkbox', 'all', 'native', 360, 0, 0, '', '', '', '', '', 3, '', '', '', 'specialchar', 'no'), - (1, 'modified', 'Modified', 'readonly', 'text', 'all', 'native', 370, 0, 20, '', '', '', '', '', 3, '', '', '', 'specialchar', 'no'), - (1, 'created', 'Created', 'readonly', 'text', 'all', 'native', 380, 0, 20, '', '', '', '', '', 3, '', '', '', 'specialchar', 'no'), - - (1, 'multi', 'Multi', 'show', 'fieldset', 'all', 'native', 400, 0, 0, '', '', '', '', '', 4, '', '', '', 'specialchar', 'no'), - (1, 'multiMode', 'Multi Mode', 'show', 'radio', 'all', 'native', 410, 0, 0, '', '', '', '', '', 4, '', '', '', 'specialchar', 'no'), + 'sqlAfter={{DELETE FROM FormElement WHERE formId={{id:R}} }}', 0, '', '', '', 'none', 'no', ''), + + (1, 'name', 'Name', 'required', 'text', 'pattern', 'native', 120, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-name">Info</a>', '', '', '', 'autofocus', 1, '', '', '', + 'specialchar', 'no', '[a-zA-Z0-9._+-]+'), + (1, 'title', 'Title', 'show', 'text', 'all', 'native', 130, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-title">Info</a>', '', '', '', '', 1, '', '', '', 'none', 'no', ''), + (1, 'noteInternal', 'Note', 'show', 'text', 'all', 'native', 140, '40,3', 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-note">Info</a>', '', '', '', '', 1, '', '', '', 'specialchar', 'no', ''), + (1, 'tableName', 'Table', 'required', 'select', 'all', 'native', 150, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-tablename">Info</a>', '', '', '{{!SHOW tables}}', + 'emptyItemAtStart', 1, '', '', '', 'specialchar', 'no', ''), + (1, 'requiredParameter', 'Required Parameter', 'show', 'text', 'all', 'native', 200, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-requiredParameter">Info</a>', '', '', '', '', 2, '', '', '', 'specialchar', 'no', ''), + (1, 'permitNew', 'Permit New', 'show', 'radio', 'all', 'native', 210, 0, 10, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-permitNewEdit">Info</a>', '', '', '', 'buttonClass=btn-default', 2, '', '', '', 'specialchar', 'no', ''), + (1, 'permitEdit', 'Permit Edit', 'show', 'radio', 'all', 'native', 220, 0, 10, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-permitNewEdit">Info</a>', '', '', '', 'buttonClass=btn-default', 2, '', '', '', 'specialchar', 'no', ''), + (1, 'escapeTypeDefault', 'Escape type default', 'show', 'radio', 'all', 'native', 230, 0, 10, '<a href="{{DOCUMENTATION_QFQ:Y}}#variable-escape">Info</a>', '', '', '', + 'itemList=c:config,s:single,d:double,l:ldap search,L:ldap value,m:mysql realEscapeString,-:none\nbuttonClass=btn-default', 2, '', '', '', 'specialchar', 'no', ''), + (1, 'showButton', 'Show button', 'show', 'checkbox', 'all', 'native', 250, 0, 5, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-showButton">Info</a>', '', '', '', 'checkBoxMode = multi\norientation=vertical', 2, '', '', '', 'specialchar', 'no', ''), + (1, 'forwardMode', 'Forward', 'show', 'radio', 'all', 'native', 300, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-forward">Info</a>', '', '', '', 'buttonClass=btn-default', 3, '', '', '', 'specialchar', 'yes', ''), + (1, 'forwardPage', 'Forward URL / Page', 'show', 'text', 'all', 'native', 310, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-forward">Info</a>', '', '', '', '', 3, '', + '{{SELECT IF( "{{forwardMode:FE:alnumx}}" LIKE "url%", "show", "hidden")}}', '', 'none', 'yes', ''), + (1, 'parameter', 'Parameter', 'show', 'text', 'all', 'native', 320, '40,8', 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-parameter">Info</a>', '', '', '', '', 3, '', '', '', 'none', 'no', ''), + (1, 'bsLabelColumns', 'BS Label Columns', 'show', 'text', 'all', 'native', 330, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#form-layout">Info</a>', '', '', '', '', 3, '', '', '{{bsLabelColumns:Y}}', 'specialchar', 'no', ''), + (1, 'bsInputColumns', 'BS Input Columns', 'show', 'text', 'all', 'native', 340, 0, 0, '', '', '', '', '', 3, '', '', '{{bsInputColumns:Y}}', 'specialchar', 'no', ''), + (1, 'bsNoteColumns', 'BS Note Columns', 'show', 'text', 'all', 'native', 350, 0, 0, '', '', '', '', '', 3, '', '', '{{bsNoteColumns:Y}}', 'specialchar', 'no', ''), + (1, 'deleted', 'Deleted', 'show', 'checkbox', 'all', 'native', 360, 0, 0, '', '', '', '', '', 3, '', '', '', 'specialchar', 'no', ''), + (1, 'modified', 'Modified', 'readonly', 'text', 'all', 'native', 370, 0, 20, '', '', '', '', '', 3, '', '', '', 'specialchar', 'no', ''), + (1, 'created', 'Created', 'readonly', 'text', 'all', 'native', 380, 0, 20, '', '', '', '', '', 3, '', '', '', 'specialchar', 'no', ''), + + (1, 'multi', 'Multi', 'show', 'fieldset', 'all', 'native', 400, 0, 0, '', '', '', '', '', 4, '', '', '', 'specialchar', 'no', ''), + (1, 'multiMode', 'Multi Mode', 'show', 'radio', 'all', 'native', 410, 0, 0, '', '', '', '', '', 4, '', '', '', 'specialchar', 'no', ''), (1, 'multiSql', 'Multi SQL', 'show', 'text', 'all', 'native', 420, '40,3', 0, '', '', '', '', '', 4, '', '', '', - 'none', 'no'), + 'none', 'no', ''), (1, 'multiDetailForm', 'Multi Detail Form', 'show', 'text', 'all', 'native', 430, 0, 0, '', '', '', '', '', 4, - '', '', '', 'specialchar', 'no'), + '', '', '', 'specialchar', 'no', ''), (1, 'multiDetailFormParameter', 'Multi Detail Form Parameter', 'show', 'text', 'all', 'native', 440, 0, 0, '', '', - '', '', '', 4, '', '', '', 'none', 'no'), + '', '', '', 4, '', '', '', 'none', 'no', ''), (1, '', 'FormElements', 'show', 'subrecord', 'all', 'native', 500, 0, 0, '', '', '', '{{!SELECT IF( fe.enabled="yes", IF( fe.enabled="yes" AND fe.feIdContainer=0 AND !ISNULL(feCX.id) AND fe.class="native", "danger", IF( fe.class="container", "text-info", IF( fe.class="action", "text-success", ""))), "text-muted") AS _rowClass, IF( fe.enabled="yes", IF(fe.feIdContainer=0 AND !ISNULL(feCX.id) AND fe.class="native", "Please choose a container for this formelement", fe.class), "Disabled") AS _rowTitle, fe.id, CONCAT( IFNULL( CONCAT( feC.name, " (", fe.feIdContainer, ")"),"")) AS Container, fe.name AS "Name|50", fe.label, fe.mode, fe.class, fe.type, fe.ord, IF(fe.dynamicUpdate="yes", \'<span class="glyphicon glyphicon-random"></span>\',"") AS "dyn|||nostrip", fe.parameter FROM FormElement AS fe LEFT JOIN FormElement AS feC ON feC.id=fe.feIdContainer AND feC.formId=fe.formId LEFT JOIN FormElement AS feCX ON feCX.class="container" AND feCX.enabled="yes" AND feCX.formId=fe.formId WHERE fe.formId={{id:R0}} GROUP BY fe.id ORDER BY fe.class DESC, feC.ord, fe.ord, fe.id}}', - 'form=formElement\ndetail=id:formId', 5, 'new,edit,delete', '', '', 'none', 'no'); + 'form=formElement\ndetail=id:formId', 5, 'new,edit,delete', '', '', 'none', 'no', ''); # # FormEditor: FormElement @@ -242,7 +240,7 @@ VALUES (2, 'class', 'Class', 'show', 'select', 'all', 'native', 180, 0, 0, '<a href="{{DOCUMENTATION_QFQ:Y}}#class-container">Info</a>', '', '{{class:FSRD0:alnumx}}', '', '', 100, '', 'yes', '', '', '', '', '', 'none'), (2, 'type', 'Type', 'show', 'select', 'all', 'native', 190, 0, 0, - '{{SELECT IF( "{{class:FRD0:alnumx}}"="native","<a href=\'{{DOCUMENTATION_QFQ:Y}}#class-native\'>Info</a>", IF("{{class:FRD0:alnumx}}"="action","<a href=\'{{DOCUMENTATION_QFQ:Y}}#class-action\'>Info</a>", "<a href=\'{{DOCUMENTATION_QFQ:Y}}#class-container\'>Info</a>") ) }}', + '<a href="{{DOCUMENTATION_QFQ:Y}}#class-native">native</a>, <a href="{{DOCUMENTATION_QFQ:Y}}#class-action">Action</a>, <a href="{{DOCUMENTATION_QFQ:Y}}#class-container">Container</a>', '', '', '', 'itemList={{SELECT IF( "{{class:FRD0:alnumx}}"="native","checkbox,date,time,datetime,dateJQW,datetimeJQW,extra,gridJQW,text,editor,note,password,radio,select,subrecord,upload", IF("{{class:FRD0:alnumx}}"="action","beforeLoad,beforeSave,beforeInsert,beforeUpdate,beforeDelete,afterLoad,afterSave,afterInsert,afterUpdate,afterDelete,sendMail,paste", "fieldset,pill,templateGroup") ) }}', 100, '', 'yes', '', '', '', '', '', 'specialchar'), -- GitLab