Commit 27b58ce2 authored by bbaer's avatar bbaer
Browse files

Merge remote-tracking branch 'origin/master'

parents 3e6a1e3a 3e5f7825
Pipeline #1431 passed with stage
in 2 minutes and 17 seconds
......@@ -5,7 +5,7 @@ snapshot:
except:
- tags
script:
- make VERSION=$VERSION snapshot
- make VERSION=$VERSION phpunit_snapshot
- chmod a+r qfq_$VERSION_*.zip
- scp qfq_$VERSION_*.zip w16:qfq/snapshots/
......@@ -13,6 +13,7 @@ release:
only:
- tags
script:
- make VERSION=$VERSION release
- make VERSION=$VERSION phpunit_release
- chmod a+r qfq_$VERSION_*.zip
- scp qfq_$VERSION_*.zip w16:qfq/releases/
......@@ -36,6 +36,35 @@ Features
Bug Fixes
^^^^^^^^^
Version 19.01.2
---------------
Date: 17.01.2019
Notes
^^^^^
* Align FormElement labels left/center/right.
* Cleanup FormEditor.
* All SQL commands allowed now.
Features
^^^^^^^^
* #7620 / Label align left/center/right. Defined by config/form/formelement.
* #7647 / Preparation for Selenium Tests - Implement new token 'A' to add any custom attribute to '... AS _link'
* Cleanup FormEditor: FormElement as second pill. Hide MultiForm as long as it not active. Rename Various to Layout.
* Manual.rst: Add some tips. Add note how to extend TinyMCE valid_elements.
* Delete composer in Resources dir, run phpunit tests in gitlab pipeline.
* Database.php: allow all SQL commands.
Bug Fixes
^^^^^^^^^
* #7671 / On FormElements, 'fillStoreVar' is now detected and fired at first.
* Fix for checkbox-inline / radio-inline.
* Check for non unique FormElements now allows multiple empty FormElements.
Version 19.01.1
---------------
......
......@@ -6,7 +6,7 @@ RELEASE_DATE = $(shell date '+%Y%m%d%H%M')
GIT_REVISION_SHORT = $(shell git rev-parse --short HEAD || true)
GIT_REVISION_LONG = $(shell git rev-parse HEAD || true)
EXTENSION_CONTENT = Classes Configuration Documentation Source Resources ext_emconf.php ext_localconf.php ext_tables.php ext_icon.png ext_conf_template.txt config.qfq.example.php RELEASE.txt
EXTENSION_CONTENT = Classes Configuration Documentation Source Resources ext_emconf.php ext_localconf.php ext_tables.php ext_icon.png ext_conf_template.txt config.qfq.example.php RELEASE.txt vendor
DISTDIR=dist
......@@ -22,7 +22,7 @@ maintainer-clean:
archive: clean qfq.zip
qfq.zip:
cd extension/Resources/Private/vendor/phpoffice; rm -rf phpspreadsheet/{C*,bin,c*,d*,m*,p*,sa*,.g*,.p*,.s*,.t*}
cd extension/vendor; rm -rf phpoffice/phpspreadsheet/{C*,bin,c*,d*,m*,p*,sa*,.g*,.p*,.s*,.t*} doctrine myclabs phar-io phpdocumentor phpspec phpunit sebastian theseer webmozart
cd extension; zip -r ../$@ $(EXTENSION_CONTENT)
clean:
......@@ -75,15 +75,16 @@ plantuml:
bootstrap: .npmpackages .plantuml_install .virtual_env
npm update
grunt default
cd extension; composer update
composer update
# take care that phpOffice is located under 'qfq/Resources/Private/vendor/phpoffice'
cd extension/Resources/Private; composer update
# cd extension/Resources/Private; composer update
cd extension; composer update
basic: .npmpackages .virtual_env
npm update
grunt default
cd extension/Resources/Private; composer update; cd vendor/phpoffice/phpspreadsheet; rm -rf .github bin docs samples .g* .s* .t* C* c* m* p*
# IMPORTANT: install composer with no-dev flag for deployment!
cd extension; composer install --no-dev --optimize-autoloader; cd vendor/phpoffice/phpspreadsheet; rm -rf .github bin docs samples .g* .s* .t* C* c* m* p*
.plantuml_install: .support_plantuml
wget --no-check-certificate -O support/plantuml/plantuml.jar 'https://downloads.sourceforge.net/project/plantuml/plantuml.jar'
......@@ -116,3 +117,22 @@ copyReleaseNotes:
cp extension/Documentation/Release.rst extension/RELEASE.txt
cp extension/Documentation/Release.rst CHANGELOG.md
phpunit:
# update composer with dev to install phpunit package
cd extension; composer update
# create test config files and get test database password from environment variable
cp -v extension/Tests/phpunit_config.qfq.php extension/config.qfq.php; sed -i "s/#PHPUNIT_PASSWORD#/$(PHPUNIT_MYSQL_PASSWORD)/" extension/config.qfq.php
cp -v extension/Tests/phpunit_LocalConfiguration.php extension/LocalConfiguration.php
# mock typo3 directory structure
mkdir -p typo3conf/ext/qfq
mv -v extension/* typo3conf/ext/qfq/
# run phpunit
cd typo3conf/ext/qfq/; pwd; vendor/bin/phpunit --configuration phpunit.xml
phpunit_snapshot: snapshot phpunit
phpunit_release: release phpunit
......@@ -60,7 +60,7 @@ LOAD
* The PHP code api/save.php, api/load.php is called directly, without any TYPO3 Framework. Therefore the Typo3 information
'pageId', 'feUser*', 'beUser*', 'ttContentUid', ... is not available.
* *Form load*: an additional hidden Formelement '_sipForTypo3Vars' will be created with a subset of the current
STORE_TYPO3 values. The workaround with the SIP is usefull, cause the same form can be shown on different places (QFQ records) -
STORE_TYPO3 values. The workaround with the SIP is useful, cause the same form can be shown on different places (QFQ records) -
this is not very likely, but might happen. The 'on the fly rendered' SIP helps to deliver the status.
AbstractBuildForm.php: process() > prepareT3VarsForSave() > Store.php: copyT3VarsToSip();
* *Form save*: FillStoreForm.php: process() > Store: fillTypo3StoreFromSip()
......
......@@ -35,6 +35,8 @@ Neue Versionsnummer
3) In folgenden Files anpassen:
**Achtung**: die Release Minor darf KEINE fuehrenden Nullen enthalten!!!
**Auto**: ./setVersion.sh <MAJOR>.<MINOR>.<MICRO>
Manuell:
......@@ -51,12 +53,12 @@ Neue Versionsnummer
* Update the version number in this document (topic 6)
* Commit & Push new version changes to master branch:
New version 19.01.1
New version 19.1.2
6) **New Tag**:
git tag v19.01.1
git push -u origin v19.01.1
git tag v19.1.2
git push -u origin v19.1.2
7) Tickets:
* Schliessen und der QFQ Version zuweisen.
......
......@@ -10,4 +10,12 @@
* Open: https://docs.typo3.org/~mbless/github.com/T3DocumentationStarter/Public-Info-053.git.make/request_rebuild.php
* For a few seconds a file 'REBUILD_REQUESTED' appears.
* After the file disappeared, the documentation should be updated.
\ No newline at end of file
* After the file disappeared, the documentation should be updated.
# Log errors
Check:
* https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/stable/_buildinfo/
* https://docs.typo3.org/typo3cms/drafts/github/T3DocumentationStarter/Public-Info-053/latest/_buildinfo//PDFPROJECT.log.txt
Rebuild:
https://docs.typo3.org/~mbless/github.com/T3DocumentationStarter/Public-Info-039.git.make/request_rebuild.php
This diff is collapsed.
......@@ -22,8 +22,8 @@
Release
=======
Version 19.xx.x
---------------
Version 19.x.x
--------------
Date: <date>
......@@ -36,9 +36,38 @@ Features
Bug Fixes
^^^^^^^^^
Version 19.1.2
--------------
Date: 17.01.2019
Version 19.01.1
---------------
Notes
^^^^^
* Align FormElement labels left/center/right.
* Cleanup FormEditor.
* All SQL commands now are allowed.
Features
^^^^^^^^
* #7620 / Label align left/center/right. Defined by config/form/formelement.
* #7647 / Preparation for Selenium Tests - Implement new token 'A' to add any custom attribute to '... AS _link'
* Cleanup FormEditor: FormElement as second pill. Hide MultiForm as long as it not active. Rename Various to Layout.
* Manual.rst: Add some tips. Add note how to extend TinyMCE valid_elements.
* Delete composer in Resources dir, run phpunit tests in gitlab pipeline.
* Database.php: allow all SQL commands.
Bug Fixes
^^^^^^^^^
* #7671 / On FormElements, 'fillStoreVar' is now detected and fired at first.
* Fix for checkbox-inline / radio-inline.
* Check for non unique FormElements: multiple empty FE.name (e.g. for FE.type=subrecord) are allowed now.
Version 19.1.1
--------------
Date: 04.01.2019
......@@ -51,8 +80,8 @@ Bug Fixes
* #7594 / FE.type=extra: don't name it 'type' or 'id' or 'L' - more detailed error message and an explanation in Manual.rst.
* Config.php: error message about to high session timeout now reports the PHP settings.
Version 19.01.0
---------------
Version 19.1.0
--------------
Date: 03.01.2019
......@@ -116,7 +145,7 @@ Notes
^^^^^
* Existing installations: update QFQ extension config form-layout.formBsColumns/formBsLabelColumns/formBsInputColumns,formBsNoteColumns.
old: 12, new: 'col-md-12 col-lg10' resp. smaller values for individual columns.
old: '12', new: 'col-md-12 col-lg10' resp. smaller values for individual columns.
* New config values:
* Config/flagProduction: yes/now - differentiate between development und production system. Will be used for
......@@ -142,7 +171,7 @@ Features
* #7228 / Show error if form element with same name and class already exists.
* #7494 / Exception 'General Error': disable/enable per config.
* Adapt class paths in composer.json to the newly refactored folder names.
* Add col-lg-10 to notes section.
* Add 'col-lg-10' to notes section.
* Added Alert Manager to have better control over the Alerts.
* Config.php: make 'reading dbname' Typo3 version dependent.
* Delete two old composer.json and call new composer in Makefile.
......
......@@ -3,7 +3,7 @@
project = QFQ - Quick Form Query
version = 19.01
release = 19.01.1
release = 19.01.2
t3author = Carsten Rose
copyright = since 2017 by the author
......@@ -22,7 +22,7 @@ description = Documentation for the Typo3 Extension 'QFQ'
[notify]
about_new_builds = carsten.rose@math.uzh.ch
about_new_build = carsten.rose@math.uzh.ch
[html_theme_options]
......
......@@ -59,7 +59,7 @@ copyright = u'2017, Carsten Rose'
# The short X.Y version.
version = '19.01'
# The full version, including alpha/beta/rc tags.
release = '19.01.1'
release = '19.01.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
......
......@@ -36,6 +36,35 @@ Features
Bug Fixes
^^^^^^^^^
Version 19.01.2
---------------
Date: 17.01.2019
Notes
^^^^^
* Align FormElement labels left/center/right.
* Cleanup FormEditor.
* All SQL commands allowed now.
Features
^^^^^^^^
* #7620 / Label align left/center/right. Defined by config/form/formelement.
* #7647 / Preparation for Selenium Tests - Implement new token 'A' to add any custom attribute to '... AS _link'
* Cleanup FormEditor: FormElement as second pill. Hide MultiForm as long as it not active. Rename Various to Layout.
* Manual.rst: Add some tips. Add note how to extend TinyMCE valid_elements.
* Delete composer in Resources dir, run phpunit tests in gitlab pipeline.
* Database.php: allow all SQL commands.
Bug Fixes
^^^^^^^^^
* #7671 / On FormElements, 'fillStoreVar' is now detected and fired at first.
* Fix for checkbox-inline / radio-inline.
* Check for non unique FormElements now allows multiple empty FormElements.
Version 19.01.1
---------------
......
{
"require": {
"phpoffice/phpspreadsheet": "^1.3"
}
}
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "b9122b56a300f20bcdecad06f20a42f5",
"content-hash": "cef6f65f63451da68119df4277175b18",
"packages": [
{
"name": "markbaker/complex",
"version": "1.4.7",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPComplex.git",
"reference": "1ea674a8308baf547cbcbd30c5fcd6d301b7c000"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/1ea674a8308baf547cbcbd30c5fcd6d301b7c000",
"reference": "1ea674a8308baf547cbcbd30c5fcd6d301b7c000",
"shasum": ""
},
"require": {
"php": "^5.6.0|^7.0.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.4.3",
"phpcompatibility/php-compatibility": "^8.0",
"phpdocumentor/phpdocumentor": "2.*",
"phploc/phploc": "2.*",
"phpmd/phpmd": "2.*",
"phpunit/phpunit": "^4.8.35|^5.4.0",
"sebastian/phpcpd": "2.*",
"squizlabs/php_codesniffer": "^3.3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Complex\\": "classes/src/"
},
"files": [
"classes/src/functions/abs.php",
"classes/src/functions/acos.php",
"classes/src/functions/acosh.php",
"classes/src/functions/acot.php",
"classes/src/functions/acoth.php",
"classes/src/functions/acsc.php",
"classes/src/functions/acsch.php",
"classes/src/functions/argument.php",
"classes/src/functions/asec.php",
"classes/src/functions/asech.php",
"classes/src/functions/asin.php",
"classes/src/functions/asinh.php",
"classes/src/functions/atan.php",
"classes/src/functions/atanh.php",
"classes/src/functions/conjugate.php",
"classes/src/functions/cos.php",
"classes/src/functions/cosh.php",
"classes/src/functions/cot.php",
"classes/src/functions/coth.php",
"classes/src/functions/csc.php",
"classes/src/functions/csch.php",
"classes/src/functions/exp.php",
"classes/src/functions/inverse.php",
"classes/src/functions/ln.php",
"classes/src/functions/log2.php",
"classes/src/functions/log10.php",
"classes/src/functions/negative.php",
"classes/src/functions/pow.php",
"classes/src/functions/rho.php",
"classes/src/functions/sec.php",
"classes/src/functions/sech.php",
"classes/src/functions/sin.php",
"classes/src/functions/sinh.php",
"classes/src/functions/sqrt.php",
"classes/src/functions/tan.php",
"classes/src/functions/tanh.php",
"classes/src/functions/theta.php",
"classes/src/operations/add.php",
"classes/src/operations/subtract.php",
"classes/src/operations/multiply.php",
"classes/src/operations/divideby.php",
"classes/src/operations/divideinto.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@lange.demon.co.uk"
}
],
"description": "PHP Class for working with complex numbers",
"homepage": "https://github.com/MarkBaker/PHPComplex",
"keywords": [
"complex",
"mathematics"
],
"time": "2018-10-13 23:28:42"
},
{
"name": "phpoffice/phpspreadsheet",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
"reference": "cd60531c44f580fbdfbd55dfb935af791f09be5d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/cd60531c44f580fbdfbd55dfb935af791f09be5d",
"reference": "cd60531c44f580fbdfbd55dfb935af791f09be5d",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-dom": "*",
"ext-gd": "*",
"ext-iconv": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
"ext-xml": "*",
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"ext-zip": "*",
"ext-zlib": "*",
"markbaker/complex": "^1.4.1",
"php": "^5.6|^7.0",
"psr/simple-cache": "^1.0"
},
"require-dev": {
"dompdf/dompdf": "^0.8.0",
"friendsofphp/php-cs-fixer": "@stable",
"jpgraph/jpgraph": "^4.0",
"mpdf/mpdf": "^7.0.0",
"phpcompatibility/php-compatibility": "^8.0",
"phpunit/phpunit": "^5.7",
"squizlabs/php_codesniffer": "^3.3",
"tecnickcom/tcpdf": "^6.2"
},
"suggest": {
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
"jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
},
"type": "library",
"autoload": {
"psr-4": {
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1-or-later"
],
"authors": [
{
"name": "Erik Tilt"
},
{
"name": "Adrien Crivelli"
},
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
},
{
"name": "Mark Baker",
"homepage": "https://markbakeruk.net"
},
{
"name": "Franck Lefevre",
"homepage": "https://rootslabs.net"
}
],
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
"keywords": [
"OpenXML",
"excel",
"gnumeric",
"ods",
"php",
"spreadsheet",
"xls",
"xlsx"
],
"time": "2018-11-25 17:40:15"
},
{
"name": "psr/simple-cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
"keywords": [
"cache",
"caching",
"psr",
"psr-16",
"simple-cache"
],
"time": "2017-10-23 01:57:42"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}
......@@ -1055,7 +1055,7 @@ abstract class AbstractBuildForm {
/**
* Set corresponding JSON attributes readonly/required/disabled, based on $formElement[FE_MODE].
*
* @param array $feMode
* @param string $feMode
*
* @return array
* @throws UserFormException
......@@ -1064,7 +1064,7 @@ abstract class AbstractBuildForm {
$this->getFeMode($feMode, $dummy, $disabled, $required);
return [API_FORM_UPDATE_DISABLED => $disabled === 'yes', API_FORM_UPDATE_REQUIRED => $required === 'yes'];
return [API_FORM_UPDATE_DISABLED => ($disabled === 'yes'), API_FORM_UPDATE_REQUIRED => ($required === 'yes')];
}
/**
......@@ -1240,7 +1240,7 @@ abstract class AbstractBuildForm {
$attribute .= Support::doAttribute('id', $formElement[FE_HTML_ID]);
$attribute .= Support::doAttribute('name', $htmlFormElementName);
$attribute .= Support::doAttribute('class', $class);
$attribute .= Support::doAttribute(ATTRIBUTE_DATA_REFERENCE, $formElement[FE_DATA_REFERENCE]);
if (isset($formElement[FE_RETYPE_SOURCE_NAME])) {
$htmlFormElementNamePrimary = str_replace(RETYPE_FE_NAME_EXTENSION, '', $htmlFormElementName);
......@@ -1297,16 +1297,27 @@ abstract class AbstractBuildForm {
$attribute .= $this->getAttributeList($formElement, [FE_INPUT_AUTOCOMPLETE, 'autofocus', 'placeholder']);
$formElement[FE_CHECK_PATTERN] = Sanitize::getInputCheckPattern($formElement[FE_CHECK_TYPE], $formElement[FE_CHECK_PATTERN], $formElement[FE_DECIMAL_FORMAT], $sanitizeMessage);
$attribute .= ($formElement[FE_CHECK_PATTERN] === '') ? '' : 'pattern="' . $formElement[FE_CHECK_PATTERN] . '" ';
if (empty($formElement[F_FE_DATA_PATTERN_ERROR])) {
$formElement[F_FE_DATA_PATTERN_ERROR] = empty($sanitizeMessage) ? F_FE_DATA_PATTERN_ERROR_DEFAULT : $sanitizeMessage;
$formElement[FE_CHECK_PATTERN] = Sanitize::getInputCheckPattern($formElement[FE_CHECK_TYPE], $formElement[FE_CHECK_PATTERN]
, $formElement[FE_DECIMAL_FORMAT], $sanitizeMessage);
if ($formElement[FE_CHECK_PATTERN] !== '') {
$attribute .= Support::doAttribute('pattern', $formElement[FE_CHECK_PATTERN], true, ESCAPE_WITH_BACKSLASH);
// Use system specific message only,if no custom one is set.
if ($formElement[F_FE_DATA_PATTERN_ERROR] == $formElement[F_FE_DATA_PATTERN_ERROR_SYSTEM]) {
$formElement[F_FE_DATA_PATTERN_ERROR] = $sanitizeMessage;
}
$attribute .= Support::doAttribute(F_FE_DATA_PATTERN_ERROR, $formElement[F_FE_DATA_PATTERN_ERROR], true, ESCAPE_WITH_BACKSLASH);
}
if ($formElement[FE_MODE] == FE_MODE_REQUIRED) {
$attribute .= Support::doAttribute(F_FE_DATA_REQUIRED_ERROR, $formElement[F_FE_DATA_REQUIRED_ERROR]);
}
if (empty($formElement[F_FE_DATA_MATCH_ERROR])) {
$formElement[F_FE_DATA_REQUIRED_ERROR] = F_FE_DATA_REQUIRED_ERROR_DEFAULT;
}
$attribute .= $this->getAttributeList($formElement, [F_FE_DATA_PATTERN_ERROR, F_FE_DATA_REQUIRED_ERROR, F_FE_DATA_MATCH_ERROR, F_FE_DATA_ERROR, FE_MIN, FE_MAX, FE_STEP]);
$attribute .= $this->getAttributeList($formElement, [F_FE_DATA_MATCH_ERROR, F_FE_DATA_ERROR, FE_MIN, FE_MAX, FE_STEP]);
$attribute .= Support::doAttribute('data-load', ($formElement[FE_DYNAMIC_UPDATE] === 'yes') ? 'data-load' : '');
$attribute .= Support::doAttribute('title', $formElement[FE_TOOLTIP]);
......@@ -1739,7 +1750,7 @@ abstract class AbstractBuildForm {
*
* @param array $formElement