From 766c13b93c4cfec9045592e1da789c629a6af1c0 Mon Sep 17 00:00:00 2001 From: Neill Robson Date: Sun, 18 Mar 2018 16:35:39 -0400 Subject: [PATCH 1/5] clarify XSD for formElements allowed settings In an attempt to resolve #14140, new complex types have been defined for every UI component specified in `ui_settings.xsd` line 49 (valid attribute codes for "formElement"). These complex types only include the `` child node, along with any grandchildren that pertain specifically to that form element (no `abstractSettings`). Finally, `ui_configuration.xsd` has been updated with a new group holding these complex types, and the corresponding validation for the `` tag references this new group rather than the existing, more general group. --- app/code/Magento/Ui/etc/ui_configuration.xsd | 22 ++++++++++++++++++- .../ui_component/etc/definition/boolean.xsd | 14 +++++++++++- .../ui_component/etc/definition/checkbox.xsd | 14 +++++++++++- .../etc/definition/checkboxset.xsd | 14 +++++++++++- .../base/ui_component/etc/definition/date.xsd | 14 +++++++++++- .../ui_component/etc/definition/email.xsd | 14 +++++++++++- .../base/ui_component/etc/definition/file.xsd | 14 +++++++++++- .../ui_component/etc/definition/hidden.xsd | 14 +++++++++++- .../ui_component/etc/definition/input.xsd | 13 ++++++++++- .../etc/definition/multiselect.xsd | 13 +++++++++++ .../ui_component/etc/definition/radioset.xsd | 14 +++++++++++- .../ui_component/etc/definition/select.xsd | 14 +++++++++++- .../base/ui_component/etc/definition/text.xsd | 14 +++++++++++- .../ui_component/etc/definition/textarea.xsd | 14 +++++++++++- .../ui_component/etc/definition/wysiwyg.xsd | 14 +++++++++++- 15 files changed, 202 insertions(+), 14 deletions(-) diff --git a/app/code/Magento/Ui/etc/ui_configuration.xsd b/app/code/Magento/Ui/etc/ui_configuration.xsd index 5deba03a03b3f..02e745e6dd20a 100644 --- a/app/code/Magento/Ui/etc/ui_configuration.xsd +++ b/app/code/Magento/Ui/etc/ui_configuration.xsd @@ -203,6 +203,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -281,7 +301,7 @@ - + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd index 7cc33cf4351df..e321174875ff5 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd index 13bc629606470..22afa050402cb 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd index b0dea52cb4bd9..03fdb2c783858 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd index b24ba626a9ea1..962c66dedd948 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd index cd1147b560034..d70bf3d793d5f 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd index eac284ddc92d8..99581ea0da51a 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd index 82282dd61673f..c077d75e17326 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd index fc3ea2d92576a..b72ec30fda78b 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd @@ -15,6 +15,7 @@ + @@ -23,6 +24,17 @@ + + + + + + + + + + + @@ -73,7 +85,6 @@ - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd index 28d9d24868820..d11830a3e5885 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd @@ -15,6 +15,7 @@ + @@ -23,6 +24,18 @@ + + + + + + + + + + + + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd index c53ad0333d6d7..bf7f34f7a8324 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd index 7e0d2dfbfeb18..3b379c926f7ac 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd @@ -15,6 +15,7 @@ + @@ -29,9 +30,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd index e382af84111c7..72c122a47ce7b 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd index ad7fda6200a79..a37dbdb71a05b 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd index 62c81234aba33..cdda4267dc582 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd @@ -15,6 +15,7 @@ + @@ -23,9 +24,20 @@ + + + + + + + + + + + + - From 4718d7de03027828db5c755e1a1efda4d5d98c9b Mon Sep 17 00:00:00 2001 From: Neill Robson Date: Mon, 19 Mar 2018 19:14:52 -0400 Subject: [PATCH 2/5] Add empty price settings group in XSD I did a bit of code digging but couldn't figure out why the price component definition did not have any valid/configured child nodes for whatsoever. I decided that the best route would be to add blank groups with the proper labels, so that the actual validation results remain unchanged, but the skeleton now exists for future developers to add valid configuration. --- .../ui_component/etc/definition/price.xsd | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd index 5a3053e59be95..4c7c7d1488547 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd @@ -12,7 +12,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + From 0f0c42735a3f0c088f4b655ce73a0648b97a0a32 Mon Sep 17 00:00:00 2001 From: Neill Robson Date: Mon, 26 Mar 2018 19:29:47 -0400 Subject: [PATCH 3/5] Add FileUploader form element XSD definition I'm not sure if the solution proposed in this commit is correct, but I couldn't figure out any more logical way to deal with the validation errors on the Travis CI build. The error follows: 1) Magento\Test\Integrity\Xml\SchemaTest::testXmlFiles Passed: 1881, Failed: 6, Incomplete: 0, Skipped: 0. Data set: /app/code/Magento/Catalog/view/adminhtml/ui_component/category_form.xml Error validating /home/travis/build/magento/magento2/app/code/Magento/Catalog/view/adminhtml/ui_component/category_form.xml against urn:magento:module:Magento_Ui:etc/ui_configuration.xsd Array ( [0] => Element 'fileUploader': This element is not expected. Expected is one of ( hidden, file, input, date, boolean, checkbox, checkboxset, email, select, multiselect ). Line: 168 [1] => Element 'wysiwyg', attribute 'class': The attribute 'class' is not allowed. Line: 206 ) Failed asserting that an array is empty. Element zero in that array is what I am attempting to fix here. --- app/code/Magento/Ui/etc/ui_configuration.xsd | 1 + .../ui_component/etc/definition/fileUploader.xsd | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/app/code/Magento/Ui/etc/ui_configuration.xsd b/app/code/Magento/Ui/etc/ui_configuration.xsd index 02e745e6dd20a..d83793834151e 100644 --- a/app/code/Magento/Ui/etc/ui_configuration.xsd +++ b/app/code/Magento/Ui/etc/ui_configuration.xsd @@ -220,6 +220,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/fileUploader.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/fileUploader.xsd index 3181a7ab673cd..664a2d0e8d904 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/fileUploader.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/fileUploader.xsd @@ -23,6 +23,19 @@ + + + + + + + + + + + + + From e357dfe7f3a54c0a1e6d28c84848af7911797581 Mon Sep 17 00:00:00 2001 From: Neill Robson Date: Mon, 26 Mar 2018 19:33:12 -0400 Subject: [PATCH 4/5] Add attributes to form element XSD definitions Without this part of the configuration, children of nodes can not have their attributes (such as "class") configured. --- .../Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd | 1 + .../Ui/view/base/ui_component/etc/definition/checkbox.xsd | 1 + .../Ui/view/base/ui_component/etc/definition/checkboxset.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/date.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/email.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/file.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/input.xsd | 1 + .../Ui/view/base/ui_component/etc/definition/multiselect.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/price.xsd | 1 + .../Ui/view/base/ui_component/etc/definition/radioset.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/select.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/text.xsd | 1 + .../Ui/view/base/ui_component/etc/definition/textarea.xsd | 1 + .../Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd | 1 + 15 files changed, 15 insertions(+) diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd index e321174875ff5..21ca445a4177b 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/boolean.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd index 22afa050402cb..4dfb074498e5b 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkbox.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd index 03fdb2c783858..8fa509fa594d6 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/checkboxset.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd index 962c66dedd948..a2a8fbbe103c1 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/date.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd index d70bf3d793d5f..648eaf9db5b18 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/email.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd index 99581ea0da51a..1536f752a0aaf 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/file.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd index c077d75e17326..0e7a6f4ed5fe0 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/hidden.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd index b72ec30fda78b..047212f3973e4 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/input.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd index d11830a3e5885..aefb0328c8800 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/multiselect.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd index 4c7c7d1488547..69b936c3e5f8a 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/price.xsd @@ -33,6 +33,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd index bf7f34f7a8324..f2db9a57c5a1c 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/radioset.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd index 3b379c926f7ac..76d37de771a4c 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/select.xsd @@ -40,6 +40,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd index 72c122a47ce7b..813ad7870bfe9 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/text.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd index a37dbdb71a05b..67ee63a3f889f 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/textarea.xsd @@ -34,6 +34,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd index cdda4267dc582..3e7bbb3a59f8c 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/wysiwyg.xsd @@ -34,6 +34,7 @@ + From 2a22b0bd46ebd04b45a44f124a5a8913655748f3 Mon Sep 17 00:00:00 2001 From: Neill Robson Date: Tue, 27 Mar 2018 19:46:30 -0400 Subject: [PATCH 5/5] Add button formElement XSD config Again, this error was discovered during the Travis CI build, specifically during validation of /app/code/Magento/Theme/view/adminhtml/ui_component/design_config_form.xml, line 275. --- app/code/Magento/Ui/etc/ui_configuration.xsd | 1 + .../base/ui_component/etc/definition/button.xsd | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/app/code/Magento/Ui/etc/ui_configuration.xsd b/app/code/Magento/Ui/etc/ui_configuration.xsd index d83793834151e..734afc950bd6d 100644 --- a/app/code/Magento/Ui/etc/ui_configuration.xsd +++ b/app/code/Magento/Ui/etc/ui_configuration.xsd @@ -221,6 +221,7 @@ + diff --git a/app/code/Magento/Ui/view/base/ui_component/etc/definition/button.xsd b/app/code/Magento/Ui/view/base/ui_component/etc/definition/button.xsd index f4b4dd403509f..3c9866e6845e7 100644 --- a/app/code/Magento/Ui/view/base/ui_component/etc/definition/button.xsd +++ b/app/code/Magento/Ui/view/base/ui_component/etc/definition/button.xsd @@ -23,6 +23,19 @@ + + + + + + + + + + + + +