Skip to content
Snippets Groups Projects
Commit 7c4d4e91 authored by Carsten  Rose's avatar Carsten Rose
Browse files

Merge branch 'develop' into 'master'

New version 20.4.1

See merge request !266
parents 71d74e36 cafb3a60
No related branches found
No related tags found
1 merge request!266New version 20.4.1
Pipeline #3469 passed
...@@ -36,6 +36,23 @@ Features ...@@ -36,6 +36,23 @@ Features
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
Version 20.4.1
--------------
Date: 30.04.2020
Notes
^^^^^
* Developer: update local npm/font awesome packages via `make bootstrap`.
Features
^^^^^^^^
* #10433 / Update to Font Awesome 5.0
* #10379 / Stored Procedure: SLUGIFY()
* Manual.rst: Example Report 'render'. Update several places to fit latest ReST layout rules.
Version 20.4.0 Version 20.4.0
-------------- --------------
...@@ -44,32 +61,31 @@ Date: 05.04.2020 ...@@ -44,32 +61,31 @@ Date: 05.04.2020
Notes Notes
^^^^^ ^^^^^
* New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>` - extend regular input with multiple values via typeAhead. _ * New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>`_ - extend regular input with multiple values via typeAhead. _
* MySQL StoredProcedure: * MySQL StoredProcedure:
* strip_tags() - Simple strip html tags. * strip_tags() - Simple strip html tags.
* QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'. * QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'.
Features Features
^^^^^^^^ ^^^^^^^^
* #9686 / Download: sanitize output filename. * #9686 / Download: sanitize output filename.
* #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite. * #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite.
* #9517, #10145, #10177, #10117 / typeAheadTag. * #9517, #10145, #10177, #10117 / typeAheadTag.
* #10152 / QCC() - Stored Procedure to escape colon / coma. * #10152 / QCC() - Stored Procedure to escape colon / coma.
* #10115 / TypeAhead: static list. * FabricJS: replaced glyphicons with font awesome.
* FabricJS: replaced glyphicons with font awesome. * Rename config.qfq.example.php config-example.qfq.php.
* Rename config.qfq.example.php config-example.qfq.php.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #6798 / Close didn't worked with r=0. * #6798 / Close didn't worked with r=0.
* #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'. * #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'.
* #10173 / Dynamic Update: Readonly element can't be activated via dynamic update. * #10173 / Dynamic Update: Readonly element can't be activated via dynamic update.
* Fix broken default value for Form.forwardMode. * Fix broken default value for Form.forwardMode.
* Fix problem with reporting broken TG-FormElements. * Fix problem with reporting broken TG-FormElements.
* Add error message if primary table does not exist. * Add error message if primary table does not exist.
Version 20.2.0 Version 20.2.0
-------------- --------------
...@@ -199,7 +215,7 @@ Bug Fixes ...@@ -199,7 +215,7 @@ Bug Fixes
* #9691 / Checkbox: dynamic update > readonly. HTML ID for checkbox elements. Dynamic update switch 'readonly' for 'checkbox plain multi' and 'radio plain multi'. * #9691 / Checkbox: dynamic update > readonly. HTML ID for checkbox elements. Dynamic update switch 'readonly' for 'checkbox plain multi' and 'radio plain multi'.
* #9692 / Keyboard Select Checkbox. * #9692 / Keyboard Select Checkbox.
* #9720 / Checkbox: Various setups with dynamic update. * #9720 / Checkbox: Various setups with dynamic update.
* #9733 / Identiy different tabs. Record lock for same tab will always be granted. * #9733 / Identify different tabs. Record lock for same tab will always be granted.
* #9734 / Fix 'dirty lock release' - leaving a dirty form without closing, leaves a stale lock record. Added a releaselock() before window.unload. Dirty remove on goBack. * #9734 / Fix 'dirty lock release' - leaving a dirty form without closing, leaves a stale lock record. Added a releaselock() before window.unload. Dirty remove on goBack.
* #9735 / File Delete: no dirty trigger. * #9735 / File Delete: no dirty trigger.
...@@ -221,12 +237,12 @@ Features ...@@ -221,12 +237,12 @@ Features
* #9655 / Checkboxes and radios now defined with a min-width in horizontal plain mode. * #9655 / Checkboxes and radios now defined with a min-width in horizontal plain mode.
* #9617 / formModeGlobal: * #9617 / formModeGlobal:
* Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'. * Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'.
* 'requiredOffButMark': * 'requiredOffButMark':
* Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'. * Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'.
* Keep required marks after save. * Keep required marks after save.
* Stop hiding helpblocks per default, set with class qfq-only-active-error. * Stop hiding helpblocks per default, set with class qfq-only-active-error.
* Radio: new class 'qfq-disabled' if readonly is set. Softer blue. Mark disabled - changed hover. Text in darker orange. * Radio: new class 'qfq-disabled' if readonly is set. Softer blue. Mark disabled - changed hover. Text in darker orange.
Simple-error renamed to qfq-notify - removed box around error. Simple-error renamed to qfq-notify - removed box around error.
...@@ -241,11 +257,11 @@ Bug Fixes ...@@ -241,11 +257,11 @@ Bug Fixes
* #3995 / Implemented partly: CheckBox and Radio can now be locked. * #3995 / Implemented partly: CheckBox and Radio can now be locked.
* #8091 / Checkbox required: * #8091 / Checkbox required:
* If radio or checkbox is required and empty on submit, form save brings the element to front. * If radio or checkbox is required and empty on submit, form save brings the element to front.
* Fix radio plain vertical. * Fix radio plain vertical.
* Fix label2 not to be bold. * Fix label2 not to be bold.
* Checkbox Plain Vertical: forces 'font-weight: 400;'. * Checkbox Plain Vertical: forces 'font-weight: 400;'.
* Updated colors for checkboxes/radios. * Updated colors for checkboxes/radios.
* #9638 / Textarea Sizing: Now also listens for paste. * #9638 / Textarea Sizing: Now also listens for paste.
* #7891 / Added missing 'type="button"' to button element. * #7891 / Added missing 'type="button"' to button element.
...@@ -282,12 +298,12 @@ Bug Fixes ...@@ -282,12 +298,12 @@ Bug Fixes
* #7639 / subrecord drag n drop: * #7639 / subrecord drag n drop:
* `orderInterval` has not been respected. * `orderInterval` has not been respected.
* Update Manual.rst. * Update Manual.rst.
* Fake STORE_SIP so it can be used during processing sql1. * Fake STORE_SIP so it can be used during processing sql1.
* The record, currently loaded into form, is available via STORE_RECORD. * The record, currently loaded into form, is available via STORE_RECORD.
* Check for id/_id and ord/_ord. * Check for id/_id and ord/_ord.
* Throw meaningful exception if missing 'id' or 'ord'. * Throw meaningful exception if missing 'id' or 'ord'.
* Fixes bug that no mime_type_content is called if there is on file. * Fixes bug that no mime_type_content is called if there is on file.
* Fix broken regex101 url. * Fix broken regex101 url.
...@@ -300,7 +316,7 @@ Date: 11.11.2019 ...@@ -300,7 +316,7 @@ Date: 11.11.2019
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #9532 / 'Advanced Upload' broken - slaveId/sqlUpdate/... have been processed two times, after multiform code changes. * #9532 / 'Advanced Upload' broken - slaveId/sqlUpdate/... have been processed two times, after multiform code changes.
Version 19.11.0 Version 19.11.0
--------------- ---------------
...@@ -456,11 +472,11 @@ Features ...@@ -456,11 +472,11 @@ Features
* Manual.rst: * Manual.rst:
* Update tablesorter `class="sorter-false"`. * Update tablesorter `class="sorter-false"`.
* Add note to include font-awesome. * Add note to include font-awesome.
* QFQ_LOG documentation. * QFQ_LOG documentation.
* Enhance wkhtml debug info. * Enhance wkhtml debug info.
* Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/ * Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/
* Increase Length of column Form.forwardPage limit from 255 to 511. * Increase Length of column Form.forwardPage limit from 255 to 511.
* Index.rst: Add Rafi, Elias, Nicola as further contributors. * Index.rst: Add Rafi, Elias, Nicola as further contributors.
...@@ -498,9 +514,9 @@ Features ...@@ -498,9 +514,9 @@ Features
* TWIG: * TWIG:
* Add Twig Extension to parse QFQ Links * Add Twig Extension to parse QFQ Links
* Pass assoc-array of query result as context * Pass assoc-array of query result as context
* allow to pass template as string * allow to pass template as string
* Database.php: extend function sql error message * Database.php: extend function sql error message
* #8179 / extraButtonLock and extraButtonPassword might be specified without a value or with 0 or with 1. * #8179 / extraButtonLock and extraButtonPassword might be specified without a value or with 0 or with 1.
...@@ -743,8 +759,8 @@ Date: 15.03.2019 ...@@ -743,8 +759,8 @@ Date: 15.03.2019
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm(). * 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm().
* 8048 / A retype FE should not be checked for 'required' during save. * 8048 / A retype FE should not be checked for 'required' during save.
Version 19.3.0 Version 19.3.0
...@@ -1239,13 +1255,13 @@ Notes ...@@ -1239,13 +1255,13 @@ Notes
'jquery.tablesorter.pager.min.js', 'widget-columnSelector.min.js' in your Typo3 template record. 'jquery.tablesorter.pager.min.js', 'widget-columnSelector.min.js' in your Typo3 template record.
See https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#setup-css-js See https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#setup-css-js
* *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors * *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors
seen on the console) your installation, if it isn't included! seen on the console) your installation, if it isn't included!
* If you use the extension 'UZH Corporate Design Template': * If you use the extension 'UZH Corporate Design Template':
* Update to the latest version 18.9.0. * Update to the latest version 18.9.0.
* Add constants in the Typo3 template record 'ext: main': :: * Add constants in the Typo3 template record 'ext: main': ::
cd.extra.css.file5 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css cd.extra.css.file5 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css
...@@ -1452,8 +1468,8 @@ Notes ...@@ -1452,8 +1468,8 @@ Notes
* NEW: Drag and drop to sort elements! Check the Manual. * NEW: Drag and drop to sort elements! Check the Manual.
* `URL forwardMode` * `URL forwardMode`
* `client` renamed to `auto`. * `client` renamed to `auto`.
* `close` added. * `close` added.
Features Features
^^^^^^^^ ^^^^^^^^
...@@ -2583,47 +2599,47 @@ Version 0.15 ...@@ -2583,47 +2599,47 @@ Version 0.15
Changes Changes
^^^^^^^ ^^^^^^^
* Play formEditor.sql. * Play formEditor.sql.
* Form 'FormElement' failed to display the formtitle of the current form in case of a new FE. * Form 'FormElement' failed to display the formtitle of the current form in case of a new FE.
* Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql. * Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql.
* #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.:: * #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf') UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
* Size 'placeholder' increased:: * Size 'placeholder' increased::
ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
Features Features
^^^^^^^^ ^^^^^^^^
* Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form * Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form
will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient. will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient.
* Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed. * Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed.
* #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername * #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername
'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname 'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
is not necessary anoymore. is not necessary anoymore.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly. * #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
Detection of missing LIMIT implemented. Detection of missing LIMIT implemented.
* #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces * #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces' Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
Support.php: new funtion handleEscapeSpaceComment(). Support.php: new funtion handleEscapeSpaceComment().
* Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'. * Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'.
* Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any * Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any
extension like recordId. Unessary and broken decoding removed. extension like recordId. Unessary and broken decoding removed.
* #3426 / Dynamic Update: Inputs loose the new content and shows the old value. * #3426 / Dynamic Update: Inputs loose the new content and shows the old value.
* Through fix #2064 the FE.checkType has not been used anymore. This is fixed now. * Through fix #2064 the FE.checkType has not been used anymore. This is fixed now.
* #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty * #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty
fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values
will be expanded with the empty fake templateGroup FormElements and such empty values will be saved. will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
Version 0.14 Version 0.14
...@@ -2632,47 +2648,47 @@ Version 0.14 ...@@ -2632,47 +2648,47 @@ Version 0.14
Changes Changes
^^^^^^^ ^^^^^^^
* Play formEditor.sql. * Play formEditor.sql.
* All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value. * All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
* Drop-down list of container assignment: * Drop-down list of container assignment:
* Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container'). * Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
* Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which * Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which
is nowhere else used than in that drop-down. is nowhere else used than in that drop-down.
* FormElement.placeholder colum width extended to 512: * FormElement.placeholder colum width extended to 512:
ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
* New class Ldap.php. * New class Ldap.php.
Features Features
^^^^^^^^ ^^^^^^^^
* Typeahead for SQL and LDAP Datasources implemented. * Typeahead for SQL and LDAP Datasources implemented.
* formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'. * formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
* Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'. * Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
* Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible. * Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
* Manual.rst: add some example for TypeAhead and for saving LDAP value. * Manual.rst: add some example for TypeAhead and for saving LDAP value.
* Load foreign values in templatGroups - saving is not implemented yet. * Load foreign values in templatGroups - saving is not implemented yet.
* Manual: Added howto prevent <p>-wrap in TinyMCE. * Manual: Added howto prevent <p>-wrap in TinyMCE.
* TemplateGroup: Add button now disabled if max. number of copies reached. * TemplateGroup: Add button now disabled if max. number of copies reached.
* #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form. * #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine. * Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
* qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed * qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed
Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background. Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background.
* AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute. * AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
* BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values. * BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
* typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the * typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
moment this is the only way to transmit any error messages. moment this is the only way to transmit any error messages.
* formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms. * formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
* Save button becomes active if a templateGroup copy is removed. * Save button becomes active if a templateGroup copy is removed.
* #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered. * #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
Version 0.13 Version 0.13
...@@ -2681,55 +2697,55 @@ Version 0.13 ...@@ -2681,55 +2697,55 @@ Version 0.13
Changes Changes
^^^^^^^ ^^^^^^^
* Play formEditor.sql. * Play formEditor.sql.
* formEditor.sql: * formEditor.sql:
* Checktype of `Form.name` restricted to `alnumx` (prior `all`). * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
* Changed `access` for Form `form` & '`ormElement` from `always` to `sip`. * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
* Table `FormElement`: * Table `FormElement`:
* Modified column: `checkType` - new value `numerical`. * Modified column: `checkType` - new value `numerical`.
ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date', ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date',
'pattern','allbut','all') NOT NULL DEFAULT 'alnumx' 'pattern','allbut','all') NOT NULL DEFAULT 'alnumx'
* Example Report for `forms` extended by a delete button per row. * Example Report for `forms` extended by a delete button per row.
Features Features
^^^^^^^^ ^^^^^^^^
* print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent). * print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
* Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/). * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
* In config.qfq.ini setup: * In config.qfq.ini setup:
BASE_URL_PRINT=http://www.../ BASE_URL_PRINT=http://www.../
WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf
* Check and error report if 'php_intl' is missing. * Check and error report if 'php_intl' is missing.
* New Checktype 'allow numerical'. * New Checktype 'allow numerical'.
* Documentation: example for 'radio' with no pre selection. * Documentation: example for 'radio' with no pre selection.
* #3063 / Radios and checkboxes optional rendered in Bootstrap layout. * #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
* Added 'help-box with-errors'-DIV after radios and checkboxes. * Added 'help-box with-errors'-DIV after radios and checkboxes.
* Respect attribute `data-class-on-change` on save buttons. * Respect attribute `data-class-on-change` on save buttons.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #2138 / digit sanitize: new class 'numerical' implemented. * #2138 / digit sanitize: new class 'numerical' implemented.
* Fixed recursive thrown exception. * Fixed recursive thrown exception.
* #2064 / search of a default value for a non existing tablecolumn returns 'false'. * #2064 / search of a default value for a non existing tablecolumn returns 'false'.
* Fixed setting of STORE_SYSTEM / showDebugInfo during API call. * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
* #2081, #3180 / Form: Label & note - update via `DynamicUpdate`. * #2081, #3180 / Form: Label & note - update via `DynamicUpdate`.
* #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS. * #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS.
* qfq-bs.css: * qfq-bs.css:
* Alignment of checkboxes and radios optimized. * Alignment of checkboxes and radios optimized.
* CSS class 'qfq-note' for 'notes' (third column in a form). * CSS class 'qfq-note' for 'notes' (third column in a form).
Version 0.12 Version 0.12
...@@ -2738,101 +2754,103 @@ Version 0.12 ...@@ -2738,101 +2754,103 @@ Version 0.12
Changes Changes
^^^^^^^ ^^^^^^^
* Table 'FormElement' * Table 'FormElement'
* New column: rowLabelInputNote: * New column: rowLabelInputNote:
ALTER TABLE `FormElement` ADD `rowLabelInputNote` set('row','label','/label','input','/input','note','/note','/row') ALTER TABLE `FormElement` ADD `rowLabelInputNote` set('row','label','/label','input','/input','note','/note','/row')
NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row' AFTER `bsNoteColumns` ; NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row' AFTER `bsNoteColumns` ;
* Modified column: 'type' - new value 'templateGroup': * Modified column: 'type' - new value 'templateGroup':
ALTER TABLE `FormElement` CHANGE `type` `type` ENUM( 'checkbox', 'date', 'datetime', 'dateJQW', 'datetimeJQW', 'extra', ALTER TABLE `FormElement` CHANGE `type` `type` ENUM( 'checkbox', 'date', 'datetime', 'dateJQW', 'datetimeJQW', 'extra',
'gridJQW', 'text', 'editor', 'time', 'note', 'password', 'radio', 'select', 'subrecord', 'upload', 'fieldset', 'pill', 'gridJQW', 'text', 'editor', 'time', 'note', 'password', 'radio', 'select', 'subrecord', 'upload', 'fieldset', 'pill',
'templateGroup', 'beforeLoad', 'beforeSave', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterLoad', 'afterSave', 'templateGroup', 'beforeLoad', 'beforeSave', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterLoad', 'afterSave',
'afterInsert', 'afterUpdate', 'afterDelete', 'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'text' 'afterInsert', 'afterUpdate', 'afterDelete', 'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'text'
* formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns. * formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
* PLAY 'formEditor.sql'. * PLAY 'formEditor.sql'.
* User Input will be UTF8 normalized. * User Input will be UTF8 normalized.
* INSTALL 'php5-intl' or 'php7.0-intl' on Webserver. * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
* Add globalize.js to be included. Needed by jqx-all.js. * Add globalize.js to be included. Needed by jqx-all.js.
* UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation. * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
* Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'. * Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
* UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename") * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
Features Features
^^^^^^^^ ^^^^^^^^
* User input will be UTF8 normalized. * User input will be UTF8 normalized.
* config.qfq-ini: * config.qfq-ini:
* New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS. * New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS.
* Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY * Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY
(=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default). (=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default).
* FileUpload: * FileUpload:
* Implemented new Formelement.parameter: fileReplace=always - will replace existing files. * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
* Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete. * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
* FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements. * FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
* STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified. * STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified.
* STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement. * STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
* Default store priority list changed. Old: 'FSRD', New: 'FSRVD'. * Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
* CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering). * CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
* User manual: * User manual:
* Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn. * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
* Update 'file-upload' doc. * Update 'file-upload' doc.
* Described 3 examples for upload forms. * Described 3 examples for upload forms.
* Administrator manual: * Administrator manual:
* Add description page.meta... * Add description page.meta...
* New FormElement (type= 'container') added: 'templateGroup'. * New FormElement (type= 'container') added: 'templateGroup'.
* FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass. * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
* FormElement.maxSize: max number of duplicates. * FormElement.maxSize: max number of duplicates.
* #3230 / templateGroup: margin between copies. 'tgClass' implemented. * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
* Native FormElements: * Native FormElements:
* FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping). * FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping).
* #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter. * #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter.
* FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted. * FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted.
* FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item. * FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item.
* FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items. * FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
* #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=... * #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=...
* Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed. * Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* User manual: * User manual:
* Fixed double include of validator.js in T3 Typoscript template example.
* Fixed wrong store name SYSTEM: S > Y. * Fixed double include of validator.js in T3 Typoscript template example.
* Fixed wrong STORE_FORM variable names. * Fixed wrong store name SYSTEM: S > Y.
* Reformat FormElement.parameter description. * Fixed wrong STORE_FORM variable names.
* Styling errors fixed. * Reformat FormElement.parameter description.
* Use of 'decryptCurlyBraces()' to get better error messages. * Styling errors fixed.
* Skip unwanted parameter expansion during save.
* Fixed bug with uninitialized FE_SLAVE_ID. * Use of 'decryptCurlyBraces()' to get better error messages.
* formEditor.sql: * Skip unwanted parameter expansion during save.
* The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted. * Fixed bug with uninitialized FE_SLAVE_ID.
* Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms. * formEditor.sql:
* #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error). * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
* Labels are skipped, if FormElement.bsLabelColumns=0. * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
* Respect attribute `data-class-on-change` on save buttons. * #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error).
* Labels are skipped, if FormElement.bsLabelColumns=0.
* Respect attribute `data-class-on-change` on save buttons.
Version 0.11 Version 0.11
------------ ------------
...@@ -2840,21 +2858,21 @@ Version 0.11 ...@@ -2840,21 +2858,21 @@ Version 0.11
Features Features
^^^^^^^^ ^^^^^^^^
* Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action. * Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action.
* Added 'best practice' for defining and using of 'Central configure values' in UserManual. * Added 'best practice' for defining and using of 'Central configure values' in UserManual.
* Added accent characters to sanatize class 'alnumx', #3183. * Added accent characters to sanatize class 'alnumx', #3183.
* Set default all QFQ send mails to 'auto-submit'. * Set default all QFQ send mails to 'auto-submit'.
* Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error', * Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error',
'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement. 'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement.
* *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1. * *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1.
* Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized. * Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized.
* Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles. * Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* Fixed missing docutmentation for FormElement 'note'. * Fixed missing docutmentation for FormElement 'note'.
* Failed SQL queries will now always be logged, even if they do not modify some data. * Failed SQL queries will now always be logged, even if they do not modify some data.
Version 0.10 Version 0.10
------------ ------------
...@@ -2862,14 +2880,14 @@ Version 0.10 ...@@ -2862,14 +2880,14 @@ Version 0.10
Features Features
^^^^^^^^ ^^^^^^^^
* Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc. * Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied. * Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied.
* In case of broken SQL queries, print them in ajax error message. * In case of broken SQL queries, print them in ajax error message.
* Remove parameter 'table' from Delete SIP URLs. ToolTip updated. * Remove parameter 'table' from Delete SIP URLs. ToolTip updated.
Version 0.9 Version 0.9
----------- -----------
...@@ -2877,43 +2895,43 @@ Version 0.9 ...@@ -2877,43 +2895,43 @@ Version 0.9
Features Features
^^^^^^^^ ^^^^^^^^
* FormEditor: * FormEditor:
* design update - new default background color: grey. * design update - new default background color: grey.
* per form configureable background colors. * per form configureable background colors.
* Optional right align of all form element labels. * Optional right align of all form element labels.
* Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER. * Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class. * BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class.
Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'. Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'.
* QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY. * QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
* formEditor.sql: New default background color for formElements is blue. * formEditor.sql: New default background color for formElements is blue.
* qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right. * qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right.
* Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody. * Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
Rewrote form.paramter.class. Rewrote form.paramter.class.
* QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form. * QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form.
* UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'. * UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'.
* QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record * QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
again, after 'action'-elements has been processed. again, after 'action'-elements has been processed.
* UsersManual/index.rst: Startet FAQ section. * UsersManual/index.rst: Startet FAQ section.
* config.qfq.example.ini: Added comment where to save config.qfq.ini. * config.qfq.example.ini: Added comment where to save config.qfq.ini.
* UsersManual/index.rst: Rewrite of 'action'-FormElement definition. * UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
* #2739 / beforeDelete / afterDelete. * #2739 / beforeDelete / afterDelete.
* PROTOCOL.md: update 'delete' description. * PROTOCOL.md: update 'delete' description.
* delete.php: fixed unwanted loose of MSG_CONTENT. * delete.php: fixed unwanted loose of MSG_CONTENT.
* Report.php: Fixed double '&&' in building UrlParam. * Report.php: Fixed double '&&' in building UrlParam.
* FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted. * FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted.
* Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP. * Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
* #3001 / Report: delete implementieren. * #3001 / Report: delete implementieren.
* Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be * Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be
'form' (instead of '_form') due to many used places already. 'form' (instead of '_form') due to many used places already.
* Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links. * Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links.
* Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links. * Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links.
* Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination. * Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination.
* Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now * Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now
supports delete links. supports delete links.
* QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these * QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
parameters typically filled in newly created records. parameters typically filled in newly created records.
* #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich. * #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.
...@@ -44,7 +44,7 @@ Neue Versionsnummer ...@@ -44,7 +44,7 @@ Neue Versionsnummer
**Achtung**: die Release Minor darf KEINE fuehrenden Nullen enthalten!!! Ansonsten funktioniert die Verteilung vie TER nicht. **Achtung**: die Release Minor darf KEINE fuehrenden Nullen enthalten!!! Ansonsten funktioniert die Verteilung vie TER nicht.
**Auto**: ./setVersion.sh 20.4.0 **Auto**: ./setVersion.sh 20.4.1
Manuell: Manuell:
* extension/Documentation/_make/conf.py: release, version- * extension/Documentation/_make/conf.py: release, version-
...@@ -60,12 +60,12 @@ Neue Versionsnummer ...@@ -60,12 +60,12 @@ Neue Versionsnummer
* Update the version number in this document (topic 6) * Update the version number in this document (topic 6)
* Commit & Push new version changes to master branch: * Commit & Push new version changes to master branch:
New version 20.4.0 New version 20.4.1
7) **New Tag**: 7) **New Tag**:
git tag v20.4.0 git tag v20.4.1
git push -u origin v20.4.0 git push -u origin v20.4.1
8) **Merge 'master' into 'develop'** 8) **Merge 'master' into 'develop'**
......
...@@ -36,6 +36,23 @@ Features ...@@ -36,6 +36,23 @@ Features
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
Version 20.4.1
--------------
Date: 30.04.2020
Notes
^^^^^
* Developer: update local npm/font awesome packages via `make bootstrap`.
Features
^^^^^^^^
* #10433 / Update to Font Awesome 5.0
* #10379 / Stored Procedure: SLUGIFY()
* Manual.rst: Example Report 'render'. Update several places to fit latest ReST layout rules.
Version 20.4.0 Version 20.4.0
-------------- --------------
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
project = QFQ - Quick Form Query project = QFQ - Quick Form Query
version = 20.4 version = 20.4
release = 20.4.0 release = 20.4.1
t3author = Carsten Rose t3author = Carsten Rose
copyright = since 2017 by the author copyright = since 2017 by the author
......
...@@ -36,6 +36,23 @@ Features ...@@ -36,6 +36,23 @@ Features
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
Version 20.4.1
--------------
Date: 30.04.2020
Notes
^^^^^
* Developer: update local npm/font awesome packages via `make bootstrap`.
Features
^^^^^^^^
* #10433 / Update to Font Awesome 5.0
* #10379 / Stored Procedure: SLUGIFY()
* Manual.rst: Example Report 'render'. Update several places to fit latest ReST layout rules.
Version 20.4.0 Version 20.4.0
-------------- --------------
...@@ -44,32 +61,31 @@ Date: 05.04.2020 ...@@ -44,32 +61,31 @@ Date: 05.04.2020
Notes Notes
^^^^^ ^^^^^
* New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>` - extend regular input with multiple values via typeAhead. _ * New Feature: `typeAheadTag <https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#type-ahead-tag>`_ - extend regular input with multiple values via typeAhead. _
* MySQL StoredProcedure: * MySQL StoredProcedure:
* strip_tags() - Simple strip html tags. * strip_tags() - Simple strip html tags.
* QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'. * QCC() - Escape colon / coma. Useful for QFQ link arguments like 'text' or 'tooltip'.
Features Features
^^^^^^^^ ^^^^^^^^
* #9686 / Download: sanitize output filename. * #9686 / Download: sanitize output filename.
* #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite. * #10358 / Configure path/environment via QFQ config: qpdf, gs, pdfunite.
* #9517, #10145, #10177, #10117 / typeAheadTag. * #9517, #10145, #10177, #10117 / typeAheadTag.
* #10152 / QCC() - Stored Procedure to escape colon / coma. * #10152 / QCC() - Stored Procedure to escape colon / coma.
* #10115 / TypeAhead: static list. * FabricJS: replaced glyphicons with font awesome.
* FabricJS: replaced glyphicons with font awesome. * Rename config.qfq.example.php config-example.qfq.php.
* Rename config.qfq.example.php config-example.qfq.php.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #6798 / Close didn't worked with r=0. * #6798 / Close didn't worked with r=0.
* #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'. * #10199 / Form.forwardMode: missing mode 'Close' / 'Auto'.
* #10173 / Dynamic Update: Readonly element can't be activated via dynamic update. * #10173 / Dynamic Update: Readonly element can't be activated via dynamic update.
* Fix broken default value for Form.forwardMode. * Fix broken default value for Form.forwardMode.
* Fix problem with reporting broken TG-FormElements. * Fix problem with reporting broken TG-FormElements.
* Add error message if primary table does not exist. * Add error message if primary table does not exist.
Version 20.2.0 Version 20.2.0
-------------- --------------
...@@ -199,7 +215,7 @@ Bug Fixes ...@@ -199,7 +215,7 @@ Bug Fixes
* #9691 / Checkbox: dynamic update > readonly. HTML ID for checkbox elements. Dynamic update switch 'readonly' for 'checkbox plain multi' and 'radio plain multi'. * #9691 / Checkbox: dynamic update > readonly. HTML ID for checkbox elements. Dynamic update switch 'readonly' for 'checkbox plain multi' and 'radio plain multi'.
* #9692 / Keyboard Select Checkbox. * #9692 / Keyboard Select Checkbox.
* #9720 / Checkbox: Various setups with dynamic update. * #9720 / Checkbox: Various setups with dynamic update.
* #9733 / Identiy different tabs. Record lock for same tab will always be granted. * #9733 / Identify different tabs. Record lock for same tab will always be granted.
* #9734 / Fix 'dirty lock release' - leaving a dirty form without closing, leaves a stale lock record. Added a releaselock() before window.unload. Dirty remove on goBack. * #9734 / Fix 'dirty lock release' - leaving a dirty form without closing, leaves a stale lock record. Added a releaselock() before window.unload. Dirty remove on goBack.
* #9735 / File Delete: no dirty trigger. * #9735 / File Delete: no dirty trigger.
...@@ -221,12 +237,12 @@ Features ...@@ -221,12 +237,12 @@ Features
* #9655 / Checkboxes and radios now defined with a min-width in horizontal plain mode. * #9655 / Checkboxes and radios now defined with a min-width in horizontal plain mode.
* #9617 / formModeGlobal: * #9617 / formModeGlobal:
* Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'. * Two modes of 'formModeGlobal' available: 'requiredOff' and 'requiredOffButMark'.
* 'requiredOffButMark': * 'requiredOffButMark':
* Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'. * Renamed temporary 'skipRequiredCheck' to 'requiredOffButMark'.
* Keep required marks after save. * Keep required marks after save.
* Stop hiding helpblocks per default, set with class qfq-only-active-error. * Stop hiding helpblocks per default, set with class qfq-only-active-error.
* Radio: new class 'qfq-disabled' if readonly is set. Softer blue. Mark disabled - changed hover. Text in darker orange. * Radio: new class 'qfq-disabled' if readonly is set. Softer blue. Mark disabled - changed hover. Text in darker orange.
Simple-error renamed to qfq-notify - removed box around error. Simple-error renamed to qfq-notify - removed box around error.
...@@ -241,11 +257,11 @@ Bug Fixes ...@@ -241,11 +257,11 @@ Bug Fixes
* #3995 / Implemented partly: CheckBox and Radio can now be locked. * #3995 / Implemented partly: CheckBox and Radio can now be locked.
* #8091 / Checkbox required: * #8091 / Checkbox required:
* If radio or checkbox is required and empty on submit, form save brings the element to front. * If radio or checkbox is required and empty on submit, form save brings the element to front.
* Fix radio plain vertical. * Fix radio plain vertical.
* Fix label2 not to be bold. * Fix label2 not to be bold.
* Checkbox Plain Vertical: forces 'font-weight: 400;'. * Checkbox Plain Vertical: forces 'font-weight: 400;'.
* Updated colors for checkboxes/radios. * Updated colors for checkboxes/radios.
* #9638 / Textarea Sizing: Now also listens for paste. * #9638 / Textarea Sizing: Now also listens for paste.
* #7891 / Added missing 'type="button"' to button element. * #7891 / Added missing 'type="button"' to button element.
...@@ -282,12 +298,12 @@ Bug Fixes ...@@ -282,12 +298,12 @@ Bug Fixes
* #7639 / subrecord drag n drop: * #7639 / subrecord drag n drop:
* `orderInterval` has not been respected. * `orderInterval` has not been respected.
* Update Manual.rst. * Update Manual.rst.
* Fake STORE_SIP so it can be used during processing sql1. * Fake STORE_SIP so it can be used during processing sql1.
* The record, currently loaded into form, is available via STORE_RECORD. * The record, currently loaded into form, is available via STORE_RECORD.
* Check for id/_id and ord/_ord. * Check for id/_id and ord/_ord.
* Throw meaningful exception if missing 'id' or 'ord'. * Throw meaningful exception if missing 'id' or 'ord'.
* Fixes bug that no mime_type_content is called if there is on file. * Fixes bug that no mime_type_content is called if there is on file.
* Fix broken regex101 url. * Fix broken regex101 url.
...@@ -300,7 +316,7 @@ Date: 11.11.2019 ...@@ -300,7 +316,7 @@ Date: 11.11.2019
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #9532 / 'Advanced Upload' broken - slaveId/sqlUpdate/... have been processed two times, after multiform code changes. * #9532 / 'Advanced Upload' broken - slaveId/sqlUpdate/... have been processed two times, after multiform code changes.
Version 19.11.0 Version 19.11.0
--------------- ---------------
...@@ -456,11 +472,11 @@ Features ...@@ -456,11 +472,11 @@ Features
* Manual.rst: * Manual.rst:
* Update tablesorter `class="sorter-false"`. * Update tablesorter `class="sorter-false"`.
* Add note to include font-awesome. * Add note to include font-awesome.
* QFQ_LOG documentation. * QFQ_LOG documentation.
* Enhance wkhtml debug info. * Enhance wkhtml debug info.
* Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/ * Add link to https://mariadb.com/kb/en/library/stored-routine-privileges/
* Increase Length of column Form.forwardPage limit from 255 to 511. * Increase Length of column Form.forwardPage limit from 255 to 511.
* Index.rst: Add Rafi, Elias, Nicola as further contributors. * Index.rst: Add Rafi, Elias, Nicola as further contributors.
...@@ -498,9 +514,9 @@ Features ...@@ -498,9 +514,9 @@ Features
* TWIG: * TWIG:
* Add Twig Extension to parse QFQ Links * Add Twig Extension to parse QFQ Links
* Pass assoc-array of query result as context * Pass assoc-array of query result as context
* allow to pass template as string * allow to pass template as string
* Database.php: extend function sql error message * Database.php: extend function sql error message
* #8179 / extraButtonLock and extraButtonPassword might be specified without a value or with 0 or with 1. * #8179 / extraButtonLock and extraButtonPassword might be specified without a value or with 0 or with 1.
...@@ -743,8 +759,8 @@ Date: 15.03.2019 ...@@ -743,8 +759,8 @@ Date: 15.03.2019
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm(). * 8058 / Form > fillStoreVar: broken for TemplateGroup - Form.fillStoreVar not available during fillStoreForm().
* 8048 / A retype FE should not be checked for 'required' during save. * 8048 / A retype FE should not be checked for 'required' during save.
Version 19.3.0 Version 19.3.0
...@@ -1239,13 +1255,13 @@ Notes ...@@ -1239,13 +1255,13 @@ Notes
'jquery.tablesorter.pager.min.js', 'widget-columnSelector.min.js' in your Typo3 template record. 'jquery.tablesorter.pager.min.js', 'widget-columnSelector.min.js' in your Typo3 template record.
See https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#setup-css-js See https://docs.typo3.org/p/IMATHUZH/qfq/master/en-us/Manual.html#setup-css-js
* *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors * *Existing* QFQ installations: update your CSS/JS includes! The new tablesorter jquery plugin might break (JS errors
seen on the console) your installation, if it isn't included! seen on the console) your installation, if it isn't included!
* If you use the extension 'UZH Corporate Design Template': * If you use the extension 'UZH Corporate Design Template':
* Update to the latest version 18.9.0. * Update to the latest version 18.9.0.
* Add constants in the Typo3 template record 'ext: main': :: * Add constants in the Typo3 template record 'ext: main': ::
cd.extra.css.file5 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css cd.extra.css.file5 = typo3conf/ext/qfq/Resources/Public/Css/tablesorter-bootstrap.css
...@@ -1452,8 +1468,8 @@ Notes ...@@ -1452,8 +1468,8 @@ Notes
* NEW: Drag and drop to sort elements! Check the Manual. * NEW: Drag and drop to sort elements! Check the Manual.
* `URL forwardMode` * `URL forwardMode`
* `client` renamed to `auto`. * `client` renamed to `auto`.
* `close` added. * `close` added.
Features Features
^^^^^^^^ ^^^^^^^^
...@@ -2583,47 +2599,47 @@ Version 0.15 ...@@ -2583,47 +2599,47 @@ Version 0.15
Changes Changes
^^^^^^^ ^^^^^^^
* Play formEditor.sql. * Play formEditor.sql.
* Form 'FormElement' failed to display the formtitle of the current form in case of a new FE. * Form 'FormElement' failed to display the formtitle of the current form in case of a new FE.
* Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql. * Updated subrecord in 'Form' for 'FormElements' - columns 'size' and 'sql1' removed and 'dyn' inserted. Play formEditor.sql.
* #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.:: * #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf') UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
* Size 'placeholder' increased:: * Size 'placeholder' increased::
ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
Features Features
^^^^^^^^ ^^^^^^^^
* Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form * Introduce new config.qfq.ini setting 'EDIT_FORM_PAGE' - by default set to 'form' - the wrench symbol on every Form
will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient. will direct to that page. Fix #3420 / Quicklink 'editform' on form: directs to the current T3 page which might be insufficient.
* Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed. * Form 'subrecord' columns: the default width limit of 20 chars are disabled if 'nostrip' is specifed.
* #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername * #3431 / typeAheadSql: columnname 'key' is a reserverd SQL statement - replace by 'id'. Additional the parametername
'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname 'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
is not necessary anoymore. is not necessary anoymore.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly. * #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
Detection of missing LIMIT implemented. Detection of missing LIMIT implemented.
* #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces * #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces' Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
Support.php: new funtion handleEscapeSpaceComment(). Support.php: new funtion handleEscapeSpaceComment().
* Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'. * Evaluate.php: parse all F|FE.parameter via handleEscapeSpaceComment(). A leading '#' or ' ' might be escaped by '\'.
* Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any * Saving 'extra' FE in STORE_SIP has been done with inappropiate FE_NAME. Correct is the pure FE_NAME, without any
extension like recordId. Unessary and broken decoding removed. extension like recordId. Unessary and broken decoding removed.
* #3426 / Dynamic Update: Inputs loose the new content and shows the old value. * #3426 / Dynamic Update: Inputs loose the new content and shows the old value.
* Through fix #2064 the FE.checkType has not been used anymore. This is fixed now. * Through fix #2064 the FE.checkType has not been used anymore. This is fixed now.
* #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty * #3433 / templateGroup on primary Record: Values of removed copies are not deleted. The new implementation creates empty
fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values fake instances of all copies of templateGroup FormElements. Those are empty. Before save, the submitted form values
will be expanded with the empty fake templateGroup FormElements and such empty values will be saved. will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
Version 0.14 Version 0.14
...@@ -2632,47 +2648,47 @@ Version 0.14 ...@@ -2632,47 +2648,47 @@ Version 0.14
Changes Changes
^^^^^^^ ^^^^^^^
* Play formEditor.sql. * Play formEditor.sql.
* All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value. * All Form & FormEditor input elements now have a maxlength definition of 0, which means take the column definition value.
* Drop-down list of container assignment: * Drop-down list of container assignment:
* Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container'). * Display 'type' ('pill', 'fieldset', 'templategroup') instead of 'class' (always 'container').
* Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which * Display 'name' (internal name) instead of 'label' (shown on the website and might not so usefull as 'name' which
is nowhere else used than in that drop-down. is nowhere else used than in that drop-down.
* FormElement.placeholder colum width extended to 512: * FormElement.placeholder colum width extended to 512:
ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
* New class Ldap.php. * New class Ldap.php.
Features Features
^^^^^^^^ ^^^^^^^^
* Typeahead for SQL and LDAP Datasources implemented. * Typeahead for SQL and LDAP Datasources implemented.
* formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'. * formEditor.sql: Changed width of column FormElement.placeholder from 255 to 512. Removed hardcoded 'size' in FormElement 'placeholder'.
* Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'. * Character Count: Display a `counter` on input or textarea fields, activated by specifying the formElement.parameter 'characterCountWrap'.
* Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible. * Evaluate.php: Two new escape options 'l' and 'L'. Backport of ldap_escape() for PHP <5.6. Multiple escaping for one value now possible.
* Manual.rst: add some example for TypeAhead and for saving LDAP value. * Manual.rst: add some example for TypeAhead and for saving LDAP value.
* Load foreign values in templatGroups - saving is not implemented yet. * Load foreign values in templatGroups - saving is not implemented yet.
* Manual: Added howto prevent <p>-wrap in TinyMCE. * Manual: Added howto prevent <p>-wrap in TinyMCE.
* TemplateGroup: Add button now disabled if max. number of copies reached. * TemplateGroup: Add button now disabled if max. number of copies reached.
* #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form. * #3414 / QuickFormQuery.php: wrap whole form in 'col-md-XX' - User controls the width of an QFQ form.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine. * Dynamic Update has been broken since implementing of 'element-update' (#3180). Now both methods, 'element-update' and 'form-update' should be fine.
* qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed * qfq-bs.css.less: Fixed problem with 'typeahead input elements' not expanded to Bootstrap column width. Changed
Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background. Layout/Design Typeahead drop-down box. Add hoover for the drop-down box with a blue background.
* AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute. * AbstractBuildForm.php: #3374 - textarea elements now contains 'maxlength' attribute.
* BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values. * BuildFormBootstrap.php: wrapping of optional 'submitButtonText' now done with the 'per form' values.
* typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the * typeahead.php: if there is an exception, the message body is sent as regular 'content' for the drop-down box. At the
moment this is the only way to transmit any error messages. moment this is the only way to transmit any error messages.
* formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms. * formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
* Save button becomes active if a templateGroup copy is removed. * Save button becomes active if a templateGroup copy is removed.
* #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered. * #3413 / Form ohne Pill hat kein padding am Rand. Fix: if there are no pills, an additinal col-md-12 will be rendered.
Version 0.13 Version 0.13
...@@ -2681,55 +2697,55 @@ Version 0.13 ...@@ -2681,55 +2697,55 @@ Version 0.13
Changes Changes
^^^^^^^ ^^^^^^^
* Play formEditor.sql. * Play formEditor.sql.
* formEditor.sql: * formEditor.sql:
* Checktype of `Form.name` restricted to `alnumx` (prior `all`). * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
* Changed `access` for Form `form` & '`ormElement` from `always` to `sip`. * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
* Table `FormElement`: * Table `FormElement`:
* Modified column: `checkType` - new value `numerical`. * Modified column: `checkType` - new value `numerical`.
ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date', ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date',
'pattern','allbut','all') NOT NULL DEFAULT 'alnumx' 'pattern','allbut','all') NOT NULL DEFAULT 'alnumx'
* Example Report for `forms` extended by a delete button per row. * Example Report for `forms` extended by a delete button per row.
Features Features
^^^^^^^^ ^^^^^^^^
* print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent). * print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
* Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/). * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
* In config.qfq.ini setup: * In config.qfq.ini setup:
BASE_URL_PRINT=http://www.../ BASE_URL_PRINT=http://www.../
WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf
* Check and error report if 'php_intl' is missing. * Check and error report if 'php_intl' is missing.
* New Checktype 'allow numerical'. * New Checktype 'allow numerical'.
* Documentation: example for 'radio' with no pre selection. * Documentation: example for 'radio' with no pre selection.
* #3063 / Radios and checkboxes optional rendered in Bootstrap layout. * #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
* Added 'help-box with-errors'-DIV after radios and checkboxes. * Added 'help-box with-errors'-DIV after radios and checkboxes.
* Respect attribute `data-class-on-change` on save buttons. * Respect attribute `data-class-on-change` on save buttons.
Bug Fixes Bug Fixes
^^^^^^^^^ ^^^^^^^^^
* #2138 / digit sanitize: new class 'numerical' implemented. * #2138 / digit sanitize: new class 'numerical' implemented.
* Fixed recursive thrown exception. * Fixed recursive thrown exception.
* #2064 / search of a default value for a non existing tablecolumn returns 'false'. * #2064 / search of a default value for a non existing tablecolumn returns 'false'.
* Fixed setting of STORE_SYSTEM / showDebugInfo during API call. * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
* #2081, #3180 / Form: Label & note - update via `DynamicUpdate`. * #2081, #3180 / Form: Label & note - update via `DynamicUpdate`.
* #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS. * #3253 / if there is no STORE_TYPO3 (calls through .../api/ like save, delete, load): use SIP / CLIENT_TYPO3VARS.
* qfq-bs.css: * qfq-bs.css:
* Alignment of checkboxes and radios optimized. * Alignment of checkboxes and radios optimized.
* CSS class 'qfq-note' for 'notes' (third column in a form). * CSS class 'qfq-note' for 'notes' (third column in a form).
Version 0.12 Version 0.12
...@@ -2738,101 +2754,103 @@ Version 0.12 ...@@ -2738,101 +2754,103 @@ Version 0.12
Changes Changes
^^^^^^^ ^^^^^^^
* Table 'FormElement' * Table 'FormElement'
* New column: rowLabelInputNote: * New column: rowLabelInputNote:
ALTER TABLE `FormElement` ADD `rowLabelInputNote` set('row','label','/label','input','/input','note','/note','/row') ALTER TABLE `FormElement` ADD `rowLabelInputNote` set('row','label','/label','input','/input','note','/note','/row')
NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row' AFTER `bsNoteColumns` ; NOT NULL DEFAULT 'row,label,/label,input,/input,note,/note,/row' AFTER `bsNoteColumns` ;
* Modified column: 'type' - new value 'templateGroup': * Modified column: 'type' - new value 'templateGroup':
ALTER TABLE `FormElement` CHANGE `type` `type` ENUM( 'checkbox', 'date', 'datetime', 'dateJQW', 'datetimeJQW', 'extra', ALTER TABLE `FormElement` CHANGE `type` `type` ENUM( 'checkbox', 'date', 'datetime', 'dateJQW', 'datetimeJQW', 'extra',
'gridJQW', 'text', 'editor', 'time', 'note', 'password', 'radio', 'select', 'subrecord', 'upload', 'fieldset', 'pill', 'gridJQW', 'text', 'editor', 'time', 'note', 'password', 'radio', 'select', 'subrecord', 'upload', 'fieldset', 'pill',
'templateGroup', 'beforeLoad', 'beforeSave', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterLoad', 'afterSave', 'templateGroup', 'beforeLoad', 'beforeSave', 'beforeInsert', 'beforeUpdate', 'beforeDelete', 'afterLoad', 'afterSave',
'afterInsert', 'afterUpdate', 'afterDelete', 'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'text' 'afterInsert', 'afterUpdate', 'afterDelete', 'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'text'
* formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns. * formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
* PLAY 'formEditor.sql'. * PLAY 'formEditor.sql'.
* User Input will be UTF8 normalized. * User Input will be UTF8 normalized.
* INSTALL 'php5-intl' or 'php7.0-intl' on Webserver. * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
* Add globalize.js to be included. Needed by jqx-all.js. * Add globalize.js to be included. Needed by jqx-all.js.
* UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation. * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
* Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'. * Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
* UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename") * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
Features Features
^^^^^^^^ ^^^^^^^^
* User input will be UTF8 normalized. * User input will be UTF8 normalized.
* config.qfq-ini: * config.qfq-ini:
* New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS. * New configuration values: FORM_BS_LABEL_COLUMNS / FORM_BS_INPUT_COLUMNS / FORM_BS_NOTE_COLUMNS.
* Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY * Comment empty variables - the new default setting is, that empty parameter in config.qfq.ini means EMPTY
(=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default). (=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default).
* FileUpload: * FileUpload:
* Implemented new Formelement.parameter: fileReplace=always - will replace existing files. * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
* Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete. * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
* FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements. * FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
* STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified. * STORE FORM: variable 'filename' moved to STORE VAR - sanatize class needs no longer specified.
* STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement. * STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
* Default store priority list changed. Old: 'FSRD', New: 'FSRVD'. * Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
* CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering). * CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
* User manual: * User manual:
* Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn. * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
* Update 'file-upload' doc. * Update 'file-upload' doc.
* Described 3 examples for upload forms. * Described 3 examples for upload forms.
* Administrator manual: * Administrator manual:
* Add description page.meta... * Add description page.meta...
* New FormElement (type= 'container') added: 'templateGroup'. * New FormElement (type= 'container') added: 'templateGroup'.
* FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass. * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
* FormElement.maxSize: max number of duplicates. * FormElement.maxSize: max number of duplicates.
* #3230 / templateGroup: margin between copies. 'tgClass' implemented. * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
* Native FormElements: * Native FormElements:
* FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping). * FormElement.parameter.htlmlBefore|htmlAfter - add the specified HTML code before or after the element (outside of any wrapping).
* #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter. * #3224, #3231 / Html Tag <hr> als FormElement. >> htmlBefore | htmlAfter.
* FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted. * FormElement.parameter.wrapLabel | wrapInput | wrapAfter | wrapRow - if specified, any default wrapping is omitted.
* FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item. * FormElement.bsNoteColumns | bsInputColumns | bsNoteColumns - a '0' will suppress the whole rendering of the item.
* FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items. * FormElement.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
* #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=... * #3232 / Define custom 'on-change' color - used for the save button: Form.parameter.buttonOnChangeClass=...
* Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed. * Form.parameter & FormElement.parameter: Lines starting with '#' are treated as comments and will not be parsed.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* User manual: * User manual:
* Fixed double include of validator.js in T3 Typoscript template example.
* Fixed wrong store name SYSTEM: S > Y. * Fixed double include of validator.js in T3 Typoscript template example.
* Fixed wrong STORE_FORM variable names. * Fixed wrong store name SYSTEM: S > Y.
* Reformat FormElement.parameter description. * Fixed wrong STORE_FORM variable names.
* Styling errors fixed. * Reformat FormElement.parameter description.
* Use of 'decryptCurlyBraces()' to get better error messages. * Styling errors fixed.
* Skip unwanted parameter expansion during save.
* Fixed bug with uninitialized FE_SLAVE_ID. * Use of 'decryptCurlyBraces()' to get better error messages.
* formEditor.sql: * Skip unwanted parameter expansion during save.
* The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted. * Fixed bug with uninitialized FE_SLAVE_ID.
* Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms. * formEditor.sql:
* #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error). * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
* Labels are skipped, if FormElement.bsLabelColumns=0. * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
* Respect attribute `data-class-on-change` on save buttons. * #3066 / help-text with-error - CSS class 'hidden' will be rendered by default (as long there is no error).
* Labels are skipped, if FormElement.bsLabelColumns=0.
* Respect attribute `data-class-on-change` on save buttons.
Version 0.11 Version 0.11
------------ ------------
...@@ -2840,21 +2858,21 @@ Version 0.11 ...@@ -2840,21 +2858,21 @@ Version 0.11
Features Features
^^^^^^^^ ^^^^^^^^
* Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action. * Added STORE_BEFORE, #3146 - Mainly used to compare old and new values during a form 'save' action.
* Added 'best practice' for defining and using of 'Central configure values' in UserManual. * Added 'best practice' for defining and using of 'Central configure values' in UserManual.
* Added accent characters to sanatize class 'alnumx', #3183. * Added accent characters to sanatize class 'alnumx', #3183.
* Set default all QFQ send mails to 'auto-submit'. * Set default all QFQ send mails to 'auto-submit'.
* Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error', * Added possibility to customize error messages ('data-pattern-error', 'data-rquired-error', 'data-match-error',
'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement. 'data-error') if validation fails. Customization can be done on global level (config.qfq.ini), per Form or per FormElement.
* *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1. * *FormElement*: Double an input element and validate that the input match: FormElement.parameter.retype=1.
* Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized. * Autofocus in Forms is now supported. By default the first Input Element receives the focus. Can be customized.
* Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles. * Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* Fixed missing docutmentation for FormElement 'note'. * Fixed missing docutmentation for FormElement 'note'.
* Failed SQL queries will now always be logged, even if they do not modify some data. * Failed SQL queries will now always be logged, even if they do not modify some data.
Version 0.10 Version 0.10
------------ ------------
...@@ -2862,14 +2880,14 @@ Version 0.10 ...@@ -2862,14 +2880,14 @@ Version 0.10
Features Features
^^^^^^^^ ^^^^^^^^
* Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc. * Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied. * Suppress rendering of form title during a 'delete' call. No one will see it and required parameters are not supplied.
* In case of broken SQL queries, print them in ajax error message. * In case of broken SQL queries, print them in ajax error message.
* Remove parameter 'table' from Delete SIP URLs. ToolTip updated. * Remove parameter 'table' from Delete SIP URLs. ToolTip updated.
Version 0.9 Version 0.9
----------- -----------
...@@ -2877,43 +2895,43 @@ Version 0.9 ...@@ -2877,43 +2895,43 @@ Version 0.9
Features Features
^^^^^^^^ ^^^^^^^^
* FormEditor: * FormEditor:
* design update - new default background color: grey. * design update - new default background color: grey.
* per form configureable background colors. * per form configureable background colors.
* Optional right align of all form element labels. * Optional right align of all form element labels.
* Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER. * Added config.qfq.ini values CSS_CLASS_QFQ_FORM_PILL, CSS_CLASS_QFQ_FORM_BODY, CSS_CLASS_QFQ_CONTAINER.
Bug fixes Bug fixes
^^^^^^^^^ ^^^^^^^^^
* BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class. * BuildFormBootstrap.php: added new class name 'qfq-label' to form labels - needed to assign 'qfq-form-right' class.
Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'. Changed wrapping of formelements from 'col-md-8' (wrong) to 'col-md-12'.
* QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY. * QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
* formEditor.sql: New default background color for formElements is blue. * formEditor.sql: New default background color for formElements is blue.
* qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right. * qfq-bs.css.less: add classes qfq-form-pill, qfq-form-body, form-group (center), qfq-color-..., qfq-form-right.
* Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody. * Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
Rewrote form.paramter.class. Rewrote form.paramter.class.
* QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form. * QuickFormQuery.php: Button save/ close/ delete/ new - align to right border of form.
* UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'. * UsersManual/index.rst: renamed chapter for formelements. Cleanup formelement types. Wrote chapter 'Detailed concept'.
* QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record * QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
again, after 'action'-elements has been processed. again, after 'action'-elements has been processed.
* UsersManual/index.rst: Startet FAQ section. * UsersManual/index.rst: Startet FAQ section.
* config.qfq.example.ini: Added comment where to save config.qfq.ini. * config.qfq.example.ini: Added comment where to save config.qfq.ini.
* UsersManual/index.rst: Rewrite of 'action'-FormElement definition. * UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
* #2739 / beforeDelete / afterDelete. * #2739 / beforeDelete / afterDelete.
* PROTOCOL.md: update 'delete' description. * PROTOCOL.md: update 'delete' description.
* delete.php: fixed unwanted loose of MSG_CONTENT. * delete.php: fixed unwanted loose of MSG_CONTENT.
* Report.php: Fixed double '&&' in building UrlParam. * Report.php: Fixed double '&&' in building UrlParam.
* FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted. * FormAction.php: In case of 'AFTER_DELETE', do not try to load primary record - that one is already deleted.
* Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP. * Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
* #3001 / Report: delete implementieren. * #3001 / Report: delete implementieren.
* Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be * Index.rst, Constants.php: reverted parameter '_table' in delete links back to 'table' - Reason: 'form' needs to be
'form' (instead of '_form') due to many used places already. 'form' (instead of '_form') due to many used places already.
* Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links. * Sip.php: move SIP_TARGET_URL back to stored inside SIP - it's necessary for 'delete'-links.
* Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links. * Report.php, Constants.php: Remove code to handle unecessary 'p:' tag for delete links.
* Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination. * Link.php: Check paged / Paged that the parameter r, table and form are given in the right combination.
* Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now * Link.php, Report.php: New '_link' token 'x'. '_paged' and '_Paged' are rendered via Link() class, Link() class now
supports delete links. supports delete links.
* QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these * QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
parameters typically filled in newly created records. parameters typically filled in newly created records.
* #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich. * #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.
...@@ -12,7 +12,7 @@ $EM_CONF[$_EXTKEY] = array( ...@@ -12,7 +12,7 @@ $EM_CONF[$_EXTKEY] = array(
'dependencies' => 'fluid,extbase', 'dependencies' => 'fluid,extbase',
'clearcacheonload' => true, 'clearcacheonload' => true,
'state' => 'stable', 'state' => 'stable',
'version' => '20.4.0', 'version' => '20.4.1',
'constraints' => [ 'constraints' => [
'depends' => [ 'depends' => [
'typo3' => '7.0.0-9.2.99', 'typo3' => '7.0.0-9.2.99',
......
20.4.0 20.4.1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment