Skip to content
Snippets Groups Projects
CHANGELOG.md 117 KiB
Newer Older
Carsten  Rose's avatar
Carsten Rose committed
* Play formEditor.sql.
Carsten  Rose's avatar
Carsten Rose committed
* 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.
Carsten  Rose's avatar
Carsten Rose committed
*  #3431, Parameter keyword 'typeAheadLdapKeyPrintf' changed to 'typeAheadLdapIdPrintf'.::
Carsten  Rose's avatar
Carsten Rose committed
     UPDATE FormElement SET parameter = REPLACE(parameter, 'typeAheadLdapKeyPrintf', 'typeAheadLdapIdPrintf')
Carsten  Rose's avatar
Carsten Rose committed
* Size 'placeholder' increased::
Carsten  Rose's avatar
Carsten Rose committed
     ALTER TABLE  `FormElement` CHANGE  `placeholder`  `placeholder` VARCHAR( 2048 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
Carsten  Rose's avatar
Carsten Rose committed
* 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.
* 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
  'typeAheadLdapKeyPrintf' renamed to 'typeAheadLdapIdPrintf'. By using 'id' instead of 'key' the quoting of the columnname
  is not necessary anoymore.
Carsten  Rose's avatar
Carsten Rose committed
* #3419 / typeAheadSql: Array with only one column or non standard columnnames are not handeld properbly.
  Detection of missing LIMIT implemented.
* #3425 / Form.parameter, FormElement.parameter: comment handling, trailing & leading spaces
  Manual.rst: commented handling of 'comment character' and 'escaping of leading/trailing spaces'
  Support.php: new funtion handleEscapeSpaceComment().
* 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
  extension like recordId. Unessary and broken decoding removed.
* #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.
* #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
  will be expanded with the empty fake templateGroup FormElements and such empty values will be saved.
Carsten  Rose's avatar
Carsten Rose committed
* Play formEditor.sql.
Carsten  Rose's avatar
Carsten Rose committed
* 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:
Carsten  Rose's avatar
Carsten Rose committed
* 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
  is nowhere else used than in that drop-down.
Carsten  Rose's avatar
Carsten Rose committed
* FormElement.placeholder colum width extended to 512:
Carsten  Rose's avatar
Carsten Rose committed
         ALTER TABLE `FormElement` CHANGE `placeholder` `placeholder` VARCHAR(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''
Carsten  Rose's avatar
Carsten Rose committed
* New class Ldap.php.
Carsten  Rose's avatar
Carsten Rose committed
* 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'.
* 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.
* Manual.rst: add some example for TypeAhead and for saving LDAP value.
* Load foreign values in templatGroups - saving is not implemented yet.
* Manual: Added howto prevent <p>-wrap in TinyMCE.
* 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.
Carsten  Rose's avatar
Carsten Rose committed
* 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
  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.
* 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
  moment this is the only way to transmit any error messages.
* formEditor.sql: removed all 'maxLength' string values for 'Form' and 'FormElement' forms.
* 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.
Carsten  Rose's avatar
Carsten Rose committed
* Play formEditor.sql.
* formEditor.sql:
Carsten  Rose's avatar
Carsten Rose committed
  * Checktype of `Form.name` restricted to `alnumx` (prior `all`).
  * Changed `access` for Form `form` & '`ormElement` from `always` to `sip`.
Carsten  Rose's avatar
Carsten Rose committed
* Table `FormElement`:
Carsten  Rose's avatar
Carsten Rose committed
  * Modified column: `checkType` - new value `numerical`.

     ALTER TABLE FormElement MODIFY COLUMN checkType ENUM('alnumx','digit','numerical','email','min|max','min|max date',
       'pattern','allbut','all') NOT NULL DEFAULT 'alnumx'

Carsten  Rose's avatar
Carsten Rose committed
* Example Report for `forms` extended by a delete button per row.
Carsten  Rose's avatar
Carsten Rose committed
* print.php: offers 'print page' for any local page - create a PDF on the fly (printout is then browser independent).
Carsten  Rose's avatar
Carsten Rose committed
  * Install `wkhtmltopdf` on the webserver (http://wkhtmltopdf.org/).
  * In config.qfq.ini setup:

        BASE_URL_PRINT=http://www.../
        WKHTMLTOPDF=/opt/wkhtmltox/bin/wkhtmltopdf

Carsten  Rose's avatar
Carsten Rose committed
* Check and error report if 'php_intl' is missing.
* New Checktype 'allow numerical'.
* Documentation: example for 'radio' with no pre selection.
* #3063 / Radios and checkboxes optional rendered in Bootstrap layout.
* Added 'help-box with-errors'-DIV after radios and checkboxes.
* Respect attribute `data-class-on-change` on save buttons.
Carsten  Rose's avatar
Carsten Rose committed
* #2138 / digit sanitize: new class 'numerical' implemented.
* Fixed recursive thrown exception.
* #2064 / search of a default value for a non existing tablecolumn returns 'false'.
Carsten  Rose's avatar
Carsten Rose committed
  * Fixed setting of STORE_SYSTEM / showDebugInfo during API call.
Carsten  Rose's avatar
Carsten Rose committed
* #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.
* qfq-bs.css:
Carsten  Rose's avatar
Carsten Rose committed
  * Alignment of checkboxes and radios optimized.
  * CSS class 'qfq-note' for 'notes' (third column in a form).
Carsten  Rose's avatar
Carsten Rose committed
* Table 'FormElement'
  * New column: rowLabelInputNote:

      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` ;

Carsten  Rose's avatar
Carsten Rose committed
  * Modified column: 'type' - new value 'templateGroup':

      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',
      'templateGroup',  'beforeLoad',  'beforeSave',  'beforeInsert',  'beforeUpdate',  'beforeDelete',  'afterLoad',  'afterSave',
      'afterInsert',  'afterUpdate',  'afterDelete',  'sendMail' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  'text'

Carsten  Rose's avatar
Carsten Rose committed
* formEditor.sql: Added HTML 'placeholder' in FormEditor for bs*Columns.
Carsten  Rose's avatar
Carsten Rose committed
  * PLAY 'formEditor.sql'.
Carsten  Rose's avatar
Carsten Rose committed
* User Input will be UTF8 normalized.
Carsten  Rose's avatar
Carsten Rose committed
  * INSTALL 'php5-intl' or 'php7.0-intl' on Webserver.
Carsten  Rose's avatar
Carsten Rose committed
* Add globalize.js to be included. Needed by jqx-all.js.
Carsten  Rose's avatar
Carsten Rose committed
  * UPDATE EXISTING TypoScript TEMPLATES of QFQ Installation.
Carsten  Rose's avatar
Carsten Rose committed
* Name of variable '_filename' (used in field 'parameter') has changed. Old: '_filename', New: 'filename'.
Carsten  Rose's avatar
Carsten Rose committed
  * UPDATE `FormElement` SET parameter = REPLACE(parameter, "_filename", "filename")
Carsten  Rose's avatar
Carsten Rose committed
* User input will be UTF8 normalized.
* config.qfq-ini:
Carsten  Rose's avatar
Carsten Rose committed
  * 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
Carsten  Rose's avatar
Carsten Rose committed
     (=parameter is set and will not be overwritten by internal default), not UNDEFINED (overwritten by internal default).

Carsten  Rose's avatar
Carsten Rose committed
* FileUpload:
Carsten  Rose's avatar
Carsten Rose committed
  * Implemented new Formelement.parameter: fileReplace=always - will replace existing files.
  * Multiple / Advanced Upload: new logic implements slaveId, sqlInsert, sqlUpdate, sqlDelete.
Carsten  Rose's avatar
Carsten Rose committed
* FormElement.parameter: sqlBefore / sqlAfter fired during 'Form' save for action elements.
Carsten  Rose's avatar
Carsten Rose committed
* STORE FORM: variable 'filename' moved to STORE VAR - sanitize class needs no longer specified.
Carsten  Rose's avatar
Carsten Rose committed
* STORE VAR: two new variables 'filename' and 'fileDestination' valid during processing of current upload FormElement.
* Default store priority list changed. Old: 'FSRD', New: 'FSRVD'.
* CODING.md: update doc for FormElement 'upload' and general 'Form' rendering & save (recursive rendering).
* User manual:
Carsten  Rose's avatar
Carsten Rose committed
  * Described form layout options: description for bsLabelColumn, bsInputColumn, bsNoteColumn.
  * Update 'file-upload' doc.
  * Described 3 examples for upload forms.
Carsten  Rose's avatar
Carsten Rose committed
* Administrator manual:
Carsten  Rose's avatar
Carsten Rose committed
  * Add description page.meta...
Carsten  Rose's avatar
Carsten Rose committed
* New FormElement (type= 'container') added: 'templateGroup'.
Carsten  Rose's avatar
Carsten Rose committed
  * FormElement.parameter.tgAddClass | tgAddText | tgRemoveClass | tgRemoveText | tgClass.
  * FormElement.maxSize: max number of duplicates.
  * #3230 / templateGroup: margin between copies. 'tgClass' implemented.
Carsten  Rose's avatar
Carsten Rose committed
* Native FormElements:
Carsten  Rose's avatar
Carsten Rose committed
  * 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.
  * 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.rowLabelInputNote - switch on/off rendering of the corresponding system wrapping items.
Carsten  Rose's avatar
Carsten Rose committed
* #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.
Carsten  Rose's avatar
Carsten Rose committed
* User manual:

  * Fixed double include of validator.js in T3 Typoscript template example.
  * Fixed wrong store name SYSTEM: S > Y.
  * Fixed wrong STORE_FORM variable names.
  * Reformat FormElement.parameter description.
  * Styling errors fixed.

* Use of 'decryptCurlyBraces()' to get better error messages.
* Skip unwanted parameter expansion during save.
* Fixed bug with uninitialized FE_SLAVE_ID.
* formEditor.sql:
  * The defintion as 'editor' (not text) for FormElement 'note' has been lost - reinserted.
  * Fixed problem while playing SQL query - deleting old FormElements of Formeditor deleted also FormElements of other forms.
* #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
------------

Features
^^^^^^^^

Carsten  Rose's avatar
Carsten Rose committed
* 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.
Carsten  Rose's avatar
Carsten Rose committed
* Added accent characters to sanitize class 'alnumx', #3183.
Carsten  Rose's avatar
Carsten Rose committed
* Set default all QFQ send mails to 'auto-submit'.
* 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.
* *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.
* Added a timestamp in shown exceptions. Usefull for screenshots, send by customer, to find the problem in SQL logfiles.
Carsten  Rose's avatar
Carsten Rose committed
* Fixed missing docutmentation for FormElement 'note'.
* Failed SQL queries will now always be logged, even if they do not modify some data.

Version 0.10
------------

Features
^^^^^^^^

Carsten  Rose's avatar
Carsten Rose committed
* Implemented Parameter 'extraDeleteForm' for 'forms' and 'subrecords'. Update doc.
Carsten  Rose's avatar
Carsten Rose committed
* 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.
* Remove parameter 'table' from Delete SIP URLs. ToolTip updated.

Version 0.9
-----------

Features
^^^^^^^^

Carsten  Rose's avatar
Carsten Rose committed
* FormEditor:
  * design update - new default background color: grey.
  * per form configureable background colors.
  * 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.
Carsten  Rose's avatar
Carsten Rose committed
* 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'.
* QuickFormQuery.php: Set default for new F_CLASS_PILL & F_CLASS_BODY.
* 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.
* Index.rst: Add note to hierachy chars. Fixed uncomplete doc to a) bs*Columns, showButton. Add classPill, classBody.
  Rewrote form.paramter.class.
* 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'.
* QuickFormQuery.php, FormAction.php: '#2931 / afterSave Hauptrecord xId nicht direkt verfügbar' - load master record
  again, after 'action'-elements has been processed.
* UsersManual/index.rst: Startet FAQ section.
* config.qfq.example.ini: Added comment where to save config.qfq.ini.
* UsersManual/index.rst: Rewrite of 'action'-FormElement definition.
* #2739 / beforeDelete / afterDelete.
* PROTOCOL.md: update 'delete' description.
* delete.php: fixed unwanted loose of MSG_CONTENT.
* 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.
* Sip.php: Do not skip SIP_TARGET_URL as parameter for the SIP.
* #3001 / Report: delete implementieren.
* 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.
* 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.
* 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
  supports delete links.
* QuickFormQuery.php: for modeForm='Form Delete' the 'required param' are not respected - this makes sense, cause these
  parameters typically filled in newly created records.
* #3076 / Delete Button bei Subrecords erzeugt sporadisch Javascript Exceptions (Webkit: Chrome / Vivaldi) - kein loeschen moeglich.