diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2839ac5ee9d32..dae954a0970b7 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,34 +1,34 @@ # Contributing to Magento 2 code Contributions to the Magento 2 codebase are done using the fork & pull model. -This contribution model has contributors maintaining their own copy of the forked codebase (which can easily be synced with the main copy). The forked repository is then used to submit a request to the base repository to “pull” a set of changes (hence the phrase “pull request”). +This contribution model has contributors maintaining their own copy of the forked codebase (which can easily be synced with the main copy). The forked repository is then used to submit a request to the base repository to “pull” a set of changes. For more information on pull requests please refer to [GitHub Help](https://help.github.com/articles/about-pull-requests/). -Contributions can take the form of new components/features, changes to existing features, tests, documentation (such as developer guides, user guides, examples, or specifications), bug fixes, optimizations or just good suggestions. +Contributions can take the form of new components or features, changes to existing features, tests, documentation (such as developer guides, user guides, examples, or specifications), bug fixes or optimizations. -The Magento 2 development team will review all issues and contributions submitted by the community of developers in the first in, first out order. During the review we might require clarifications from the contributor. If there is no response from the contributor for two weeks, the issue is closed. +The Magento 2 development team will review all issues and contributions submitted by the community of developers in the first in, first out order. During the review we might require clarifications from the contributor. If there is no response from the contributor within two weeks, the pull request will be closed. ## Contribution requirements -1. Contributions must adhere to [Magento coding standards](http://devdocs.magento.com/guides/v2.0/coding-standards/bk-coding-standards.html). -2. Pull requests (PRs) must be accompanied by a meaningful description of their purpose. Comprehensive descriptions increase the chances of a pull request to be merged quickly and without additional clarification requests. -3. Commits must be accompanied by meaningful commit messages. -4. PRs which include bug fixing, must be accompanied with step-by-step description of how to reproduce the bug. +1. Contributions must adhere to the [Magento coding standards](https://devdocs.magento.com/guides/v2.2/coding-standards/bk-coding-standards.html). +2. Pull requests (PRs) must be accompanied by a meaningful description of their purpose. Comprehensive descriptions increase the chances of a pull request being merged quickly and without additional clarification requests. +3. Commits must be accompanied by meaningful commit messages. Please see the [Magento Pull Request Template](https://github.com/magento/magento2/blob/2.2-develop/.github/PULL_REQUEST_TEMPLATE.md) for more information. +4. PRs which include bug fixes must be accompanied with a step-by-step description of how to reproduce the bug. 3. PRs which include new logic or new features must be submitted along with: -* Unit/integration test coverage (we will be releasing more information on writing test coverage in the near future). -* Proposed [documentation](http://devdocs.magento.com) update. Documentation contributions can be submitted [here](https://github.com/magento/devdocs). -4. For large features or changes, please [open an issue](https://github.com/magento/magento2/issues) and discuss first. This may prevent duplicate or unnecessary effort, and it may gain you some additional contributors. -5. All automated tests are passed successfully (all builds on [Travis CI](https://travis-ci.org/magento/magento2) must be green). +* Unit/integration test coverage +* Proposed [documentation](http://devdocs.magento.com) updates. Documentation contributions can be submitted via the [devdocs GitHub](https://github.com/magento/devdocs). +4. For larger features or changes, please [open an issue](https://github.com/magento/magento2/issues) to discuss the proposed changes prior to development. This may prevent duplicate or unnecessary effort and allow other contributors to provide input. +5. All automated tests must pass (all builds on [Travis CI](https://travis-ci.org/magento/magento2) must be green). ## Contribution process -If you are a new GitHub user, we recommend that you create your own [free github account](https://github.com/signup/free). By doing that, you will be able to collaborate with the Magento 2 development team, “fork” the Magento 2 project and be able to easily send “pull requests”. +If you are a new GitHub user, we recommend that you create your own [free github account](https://github.com/signup/free). This will allow you to collaborate with the Magento 2 development team, fork the Magento 2 project and send pull requests. 1. Search current [listed issues](https://github.com/magento/magento2/issues) (open or closed) for similar proposals of intended contribution before starting work on a new contribution. 2. Review the [Contributor License Agreement](https://magento.com/legaldocuments/mca) if this is your first time contributing. 3. Create and test your work. -4. Fork the Magento 2 repository according to [Fork a repository instructions](http://devdocs.magento.com/guides/v2.0/contributor-guide/contributing.html#fork) and when you are ready to send us a pull request – follow [Create a pull request instructions](http://devdocs.magento.com/guides/v2.0/contributor-guide/contributing.html#pull_request). -5. Once your contribution is received, Magento 2 development team will review the contribution and collaborate with you as needed to improve the quality of the contribution. +4. Fork the Magento 2 repository according to the [Fork A Repository instructions](http://devdocs.magento.com/guides/v2.2/contributor-guide/contributing.html#fork) and when you are ready to send us a pull request – follow the [Create A Pull Request instructions](http://devdocs.magento.com/guides/v2.2/contributor-guide/contributing.html#pull_request). +5. Once your contribution is received the Magento 2 development team will review the contribution and collaborate with you as needed. ## Code of Conduct diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 3ac68076d4353..12ad4e452b1c7 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,24 +1,35 @@ - - + ### Preconditions - - + 1. 2. ### Steps to reproduce - + 1. 2. 3. ### Expected result -1. +1. [Screenshots, logs or description] ### Actual result -1. [Screenshot, logs] - - +1. [Screenshots, logs or description] diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d1f01ba9f2640..5b0b9d74e453b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,15 +1,32 @@ - + + + ### Description - + ### Fixed Issues (if relevant) - + 1. magento/magento2#: Issue title 2. ... ### Manual testing scenarios - + 1. ... 2. ... diff --git a/.php_cs.dist b/.php_cs.dist index 0f254c63283bd..87483d5b33a15 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -4,10 +4,6 @@ * See COPYING.txt for license details. */ -/** - * Pre-commit hook installation: - * vendor/bin/static-review.php hook:install dev/tools/Magento/Tools/StaticReview/pre-commit .git/hooks/pre-commit - */ $finder = PhpCsFixer\Finder::create() ->name('*.phtml') ->exclude('dev/tests/functional/generated') diff --git a/.travis.yml b/.travis.yml index 3265cc575cdca..6e6f3359767b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,11 +15,13 @@ language: php php: - 7.0 - 7.1 +git: + depth: 5 env: global: - COMPOSER_BIN_DIR=~/bin - INTEGRATION_SETS=3 - - NODE_JS_VERSION=6 + - NODE_JS_VERSION=8 - MAGENTO_HOST_NAME="magento2.travis" matrix: - TEST_SUITE=unit diff --git a/CHANGELOG.md b/CHANGELOG.md index a5e94e46f89d1..7c8d6eb268a7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,459 @@ +2.2.4 +============= +* GitHub issues: + * [#7691](https://github.com/magento/magento2/issues/7691) -- address with saveInAddressBook 0 are still being added to the address book for new customers (fixed in [magento/magento2#12171](https://github.com/magento/magento2/pull/12171)) + * [#9277](https://github.com/magento/magento2/issues/9277) -- Create new CLI command: enable/disable Magento Profiler (fixed in [magento/magento2#11407](https://github.com/magento/magento2/pull/11407)) + * [#11941](https://github.com/magento/magento2/issues/11941) -- Invoice for products that use qty decimal rounds down to whole number (fixed in [magento/magento2#11997](https://github.com/magento/magento2/pull/11997)) + * [#12083](https://github.com/magento/magento2/issues/12083) -- Cannot import zero (0) value into custom attribute (fixed in [magento/magento2#12283](https://github.com/magento/magento2/pull/12283)) + * [#3596](https://github.com/magento/magento2/issues/3596) -- Notice: Undefined index: value in /app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Select.php on line 72 (fixed in [magento/magento2#12296](https://github.com/magento/magento2/pull/12296)) + * [#9764](https://github.com/magento/magento2/issues/9764) -- exception message is wrong and misleading in findAccessorMethodName() of Magento\Framework\Reflection\NameFinder (fixed in [magento/magento2#12303](https://github.com/magento/magento2/pull/12303)) + * [#13214](https://github.com/magento/magento2/issues/13214) -- Not a correct displaying for Robots.txt (fixed in [magento/magento2#12310](https://github.com/magento/magento2/pull/12310)) + * [#9684](https://github.com/magento/magento2/issues/9684) -- No ACL set for integrations (fixed in [magento/magento2#12332](https://github.com/magento/magento2/pull/12332)) + * [#10438](https://github.com/magento/magento2/issues/10438) -- Potential error on order edit page when address has extension attributes (fixed in [magento/magento2#11787](https://github.com/magento/magento2/pull/11787)) + * [#11691](https://github.com/magento/magento2/issues/11691) -- Wrong return type for getAttributeText($attributeCode) (fixed in [magento/magento2#12003](https://github.com/magento/magento2/pull/12003)) + * [#12261](https://github.com/magento/magento2/issues/12261) -- Order confirmation email contains non functioning links (fixed in [magento/magento2#12308](https://github.com/magento/magento2/pull/12308)) + * [#12146](https://github.com/magento/magento2/issues/12146) -- Customer with empty "Date of Birth" cannot be saved (fixed in [magento/magento2#12302](https://github.com/magento/magento2/pull/12302)) + * [#10502](https://github.com/magento/magento2/issues/10502) -- Fatal error: Call getTranslateInline of null when generating some sitemap with errors (fixed in [magento/magento2#11320](https://github.com/magento/magento2/pull/11320)) + * [#11139](https://github.com/magento/magento2/issues/11139) -- Product Repeat Isuue after filter on category listing page. (fixed in [magento/magento2#11429](https://github.com/magento/magento2/pull/11429)) + * [#8003](https://github.com/magento/magento2/issues/8003) -- Using System Value for Base Currency Results in Config Error (fixed in [magento/magento2#11809](https://github.com/magento/magento2/pull/11809)) + * [#10347](https://github.com/magento/magento2/issues/10347) -- Wrong order tax amounts displayed when using specific tax configuration (fixed in [magento/magento2#11592](https://github.com/magento/magento2/pull/11592)) + * [#9360](https://github.com/magento/magento2/issues/9360) -- field doesn't work in system.xml for "radios" fields (fixed in [magento/magento2#11539](https://github.com/magento/magento2/pull/11539)) + * [#11792](https://github.com/magento/magento2/issues/11792) -- Can't add customizable options to product (fixed in [magento/magento2#11965](https://github.com/magento/magento2/pull/11965)) + * [#11528](https://github.com/magento/magento2/issues/11528) -- Validation prevents form closing (fixed in [magento/magento2#12048](https://github.com/magento/magento2/pull/12048)) + * [#12064](https://github.com/magento/magento2/issues/12064) -- Database Rollback not working with magento 2.1.9? (fixed in [magento/magento2#12108](https://github.com/magento/magento2/pull/12108)) + * [#9413](https://github.com/magento/magento2/issues/9413) -- Cannot remove product_list_toolbar in XML (fixed in [magento/magento2#11473](https://github.com/magento/magento2/pull/11473)) + * [#11669](https://github.com/magento/magento2/issues/11669) -- API salesRefundInvoiceV1 does no save invoice ID on credit memo (fixed in [magento/magento2#11670](https://github.com/magento/magento2/pull/11670)) + * [#11740](https://github.com/magento/magento2/issues/11740) -- Sending emails from Admin in Multi-Store Environment defaults to Primary Store (fixed in [magento/magento2#11992](https://github.com/magento/magento2/pull/11992)) + * [#9410](https://github.com/magento/magento2/issues/9410) -- Impossible to add swatch options via Service Contracts if there is no existing swatch option for attribute (fixed in [magento/magento2#12036](https://github.com/magento/magento2/pull/12036)) + * [#10707](https://github.com/magento/magento2/issues/10707) -- Create attribute option via API for swatch attribute fails (fixed in [magento/magento2#12036](https://github.com/magento/magento2/pull/12036)) + * [#10737](https://github.com/magento/magento2/issues/10737) -- Can't import attribute option over API if option is 'visual swatch' (fixed in [magento/magento2#12036](https://github.com/magento/magento2/pull/12036)) + * [#11032](https://github.com/magento/magento2/issues/11032) -- Unable to add new options to swatch attribute (fixed in [magento/magento2#12036](https://github.com/magento/magento2/pull/12036)) + * [#10128](https://github.com/magento/magento2/issues/10128) -- New Orders not being saved to order grid (fixed in [magento/magento2#12241](https://github.com/magento/magento2/pull/12241)) + * [#9515](https://github.com/magento/magento2/issues/9515) -- South Korea Zip Code Validation incorrect (fixed in [magento-engcom/magento2ce#903](https://github.com/magento-engcom/magento2ce/pull/903)) + * [#10210](https://github.com/magento/magento2/issues/10210) -- Transport variable can not be altered in email_invoice_set_template_vars_before Event (fixed in [magento/magento2#12132](https://github.com/magento/magento2/pull/12132)) + * [#11341](https://github.com/magento/magento2/issues/11341) -- Attribute category_ids issue (fixed in [magento/magento2#11389](https://github.com/magento/magento2/pull/11389)) + * [#12127](https://github.com/magento/magento2/issues/12127) -- Apostrophe in attribute option value in admin is not handled properly (fixed in [magento/magento2#12133](https://github.com/magento/magento2/pull/12133)) + * [#12058](https://github.com/magento/magento2/issues/12058) -- Can't save emoji in custom product options (fixed in [magento/magento2#12253](https://github.com/magento/magento2/pull/12253)) + * [#9742](https://github.com/magento/magento2/issues/9742) -- Default welcome message returns after being deleted (fixed in [magento/magento2#12328](https://github.com/magento/magento2/pull/12328)) + * [#9468](https://github.com/magento/magento2/issues/9468) -- REST API bundle-products/:sku/options/all always return is not authorized (fixed in [magento-engcom/magento2ce#904](https://github.com/magento-engcom/magento2ce/pull/904)) + * [#6634](https://github.com/magento/magento2/issues/6634) -- Yes/No attribute value is not shown on a product details page (fixed in [magento/magento2#12057](https://github.com/magento/magento2/pull/12057)) + * [#9961](https://github.com/magento/magento2/issues/9961) -- Unused product attributes display with value N/A or NO on storefront (fixed in [magento/magento2#12057](https://github.com/magento/magento2/pull/12057)) + * [#9931](https://github.com/magento/magento2/issues/9931) -- Empty image alt-text & missing alt attribute on product detail page (fixed in [magento/magento2#11323](https://github.com/magento/magento2/pull/11323)) + * [#11236](https://github.com/magento/magento2/issues/11236) -- Web Setup Wizard Icon Inconsistency (fixed in [magento/magento2#11388](https://github.com/magento/magento2/pull/11388)) + * [#11484](https://github.com/magento/magento2/issues/11484) -- Visual Merchandiser show prices of out of stock simple products for the associated configurable product. (fixed in [magento/magento2#11485](https://github.com/magento/magento2/pull/11485)) + * [#8255](https://github.com/magento/magento2/issues/8255) -- Export Products action doesn't consider hide_for_product_page value (fixed in [magento/magento2#11926](https://github.com/magento/magento2/pull/11926)) + * [#11509](https://github.com/magento/magento2/issues/11509) -- Psr logger debug method does not work by the default in developer mode (fixed in [magento/magento2#12207](https://github.com/magento/magento2/pull/12207)) + * [#11882](https://github.com/magento/magento2/issues/11882) -- It's not possible to enable "log to file" (debugging) in production mode (fixed in [magento/magento2#12207](https://github.com/magento/magento2/pull/12207)) + * [#9918](https://github.com/magento/magento2/issues/9918) -- Magento 2 automatically disables maintenance mode after certain actions (fixed in [magento/magento2#11052](https://github.com/magento/magento2/pull/11052)) + * [#11825](https://github.com/magento/magento2/issues/11825) -- 2.1.9 Item not added to the Wishlist if the user is not logged at the moment he click on the button to add it. (fixed in [magento/magento2#12038](https://github.com/magento/magento2/pull/12038)) + * [#11908](https://github.com/magento/magento2/issues/11908) -- Adding to wishlist doesn't work when not logged in (fixed in [magento/magento2#12038](https://github.com/magento/magento2/pull/12038)) + * [#758](https://github.com/magento/magento2/issues/758) -- Coding standards: arrays (fixed in [magento/magento2#12499](https://github.com/magento/magento2/pull/12499)) + * [#11324](https://github.com/magento/magento2/issues/11324) -- Updating a product via the REST API assigns it to all websites automatically. (fixed in [magento/magento2#11444](https://github.com/magento/magento2/pull/11444)) + * [#9633](https://github.com/magento/magento2/issues/9633) -- Web Setup Wizard 500 error when session storage is configured to use memcache (fixed in [magento/magento2#11608](https://github.com/magento/magento2/pull/11608)) + * [#6770](https://github.com/magento/magento2/issues/6770) -- M2.1.1 : Re-saving a product attribute with a different name than it's code results in an error (fixed in [magento/magento2#11617](https://github.com/magento/magento2/pull/11617)) + * [#11059](https://github.com/magento/magento2/issues/11059) -- 92 usages of expectException() with ignored $message parameter (fixed in [magento/magento2#11099](https://github.com/magento/magento2/pull/11099)) + * [#11409](https://github.com/magento/magento2/issues/11409) -- Too many password reset requests even when disabled in settings (fixed in [magento/magento2#11435](https://github.com/magento/magento2/pull/11435)) + * [#12110](https://github.com/magento/magento2/issues/12110) -- Missing cascade into attribute set deletion (fixed in [magento/magento2#12167](https://github.com/magento/magento2/pull/12167)) + * [#12268](https://github.com/magento/magento2/issues/12268) -- Gallery issues on configurable product page (fixed in [magento/magento2#12469](https://github.com/magento/magento2/pull/12469) and [magento-engcom/magento2ce#991](https://github.com/magento-engcom/magento2ce/pull/991)) + * [#12506](https://github.com/magento/magento2/issues/12506) -- Fixup typo getDispretionPath -> getDispersionPath (fixed in [magento/magento2#12507](https://github.com/magento/magento2/pull/12507)) + * [#12482](https://github.com/magento/magento2/issues/12482) -- Sitemap image links in MultiStore (fixed in [magento-engcom/magento2ce#935](https://github.com/magento-engcom/magento2ce/pull/935)) + * [#8437](https://github.com/magento/magento2/issues/8437) -- Silent error when an email template is not found (fixed in [magento-engcom/magento2ce#970](https://github.com/magento-engcom/magento2ce/pull/970)) + * [#8176](https://github.com/magento/magento2/issues/8176) -- LinkManagement::getChildren() does not include product ID's (and visibility) (fixed in [magento-engcom/magento2ce#986](https://github.com/magento-engcom/magento2ce/pull/986)) + * [#12613](https://github.com/magento/magento2/issues/12613) -- Verbiage Update Required: Product Image Watermark size Validation Message (fixed in [magento-engcom/magento2ce#985](https://github.com/magento-engcom/magento2ce/pull/985)) + * [#12180](https://github.com/magento/magento2/issues/12180) -- M2.2.1 Unable to open Address book after account creation (fixed in [magento/magento2#12220](https://github.com/magento/magento2/pull/12220)) + * [#12450](https://github.com/magento/magento2/issues/12450) -- Store not found when adding a ? to site URL. (fixed in [magento/magento2#12529](https://github.com/magento/magento2/pull/12529)) + * [#12468](https://github.com/magento/magento2/issues/12468) -- Sort by Price not working on CatalogSearch Page in Magento 2 (fixed in [magento-engcom/magento2ce#929](https://github.com/magento-engcom/magento2ce/pull/929)) + * [#7467](https://github.com/magento/magento2/issues/7467) -- File Put Contents file with empty content (fixed in [magento-engcom/magento2ce#962](https://github.com/magento-engcom/magento2ce/pull/962)) + * [#8410](https://github.com/magento/magento2/issues/8410) -- Custom Checkout Step and Shipping Step are Highlighted and Combined upon Checkout page load (fixed in [magento-engcom/magento2ce#975](https://github.com/magento-engcom/magento2ce/pull/975)) + * [#12582](https://github.com/magento/magento2/issues/12582) -- Can't remove item description from wishlist (fixed in [magento-engcom/magento2ce#981](https://github.com/magento-engcom/magento2ce/pull/981)) + * [#8862](https://github.com/magento/magento2/issues/8862) -- Can't emptying values by magento 2 api (fixed in [magento-engcom/magento2ce#916](https://github.com/magento-engcom/magento2ce/pull/916)) + * [#8011](https://github.com/magento/magento2/issues/8011) -- Strip Tags from attribute (fixed in [magento-engcom/magento2ce#968](https://github.com/magento-engcom/magento2ce/pull/968)) + * [#12526](https://github.com/magento/magento2/issues/12526) -- Currency change, Bank Transfer but checkout page shows "Your credit card will be charged for" (fixed in [magento-engcom/magento2ce#993](https://github.com/magento-engcom/magento2ce/pull/993)) + * [#12535](https://github.com/magento/magento2/issues/12535) -- Product change sku via repository (fixed in [magento-engcom/magento2ce#984](https://github.com/magento-engcom/magento2ce/pull/984)) + * [#8507](https://github.com/magento/magento2/issues/8507) -- There is invalid type in PHPDoc block of \Magento\Framework\Data\Tree::getNodeById() (fixed in [magento-engcom/magento2ce#964](https://github.com/magento-engcom/magento2ce/pull/964)) + * [#10123](https://github.com/magento/magento2/issues/10123) -- Invoice entity_model in table eav_entity_type (fixed in [magento-engcom/magento2ce#980](https://github.com/magento-engcom/magento2ce/pull/980)) + * [#9055](https://github.com/magento/magento2/issues/9055) -- Default Store is always used when retrieving sequence value's for sales entity's. (fixed in [magento/magento2#11702](https://github.com/magento/magento2/pull/11702)) + * [#8601](https://github.com/magento/magento2/issues/8601) -- Can bypass Minimum Order Amount Logic (fixed in [magento-engcom/magento2ce#963](https://github.com/magento-engcom/magento2ce/pull/963)) + * [#10797](https://github.com/magento/magento2/issues/10797) -- catalogProductTierPriceManagementV1 DELETE and POST operation wipes out media gallery selections when used on store code "all". (fixed in [magento-engcom/magento2ce#977](https://github.com/magento-engcom/magento2ce/pull/977)) + * [#12560](https://github.com/magento/magento2/issues/12560) -- Back-End issue for multi-store website: when editing Order shipping/billing address - allowed countries are selected from wrong Store View (fixed in [magento-engcom/magento2ce#982](https://github.com/magento-engcom/magento2ce/pull/982)) + * [#2907](https://github.com/magento/magento2/issues/2907) -- Integration Test Annotation magentoAppArea breaks with some valid values (fixed in [magento-engcom/magento2ce#996](https://github.com/magento-engcom/magento2ce/pull/996)) + * [#5738](https://github.com/magento/magento2/issues/5738) -- SearchCriteriaBuilder builds wrong criteria (ORDER BY part) (fixed in [magento-engcom/magento2ce#1003](https://github.com/magento-engcom/magento2ce/pull/1003)) + * [#12259](https://github.com/magento/magento2/issues/12259) -- Save and Duplicated product not working (fixed in [magento-engcom/magento2ce#983](https://github.com/magento-engcom/magento2ce/pull/983)) + * [#8204](https://github.com/magento/magento2/issues/8204) -- catalog:images:resize = getimagesize(): Read error! in vendor/magento/module-catalog/Model/Product/Image.php on line 410 if an image is 0 bytes (fixed in [magento-engcom/magento2ce#1000](https://github.com/magento-engcom/magento2ce/pull/1000)) + * [#12285](https://github.com/magento/magento2/issues/12285) -- The option false for mobile device don't work in product view page gallery (fixed in [magento-engcom/magento2ce#1006](https://github.com/magento-engcom/magento2ce/pull/1006)) + * [#12490](https://github.com/magento/magento2/issues/12490) -- I can't disable full screen gallery on mobile on magento 2.2.1 (fixed in [magento-engcom/magento2ce#1006](https://github.com/magento-engcom/magento2ce/pull/1006)) + * [#10814](https://github.com/magento/magento2/issues/10814) -- Attribute repository resets sourceModel for new attributes (fixed in [magento-engcom/magento2ce#1012](https://github.com/magento-engcom/magento2ce/pull/1012)) + * [#12632](https://github.com/magento/magento2/issues/12632) -- Magento Connect no longer exist (fixed in [magento/magento2#12633](https://github.com/magento/magento2/pull/12633)) + * [#8647](https://github.com/magento/magento2/issues/8647) -- Order of how arguments are merged in multiple di.xml-files causes unexpected results (fixed in [magento-engcom/magento2ce#995](https://github.com/magento-engcom/magento2ce/pull/995)) + * [#12378](https://github.com/magento/magento2/issues/12378) -- Regions list in Directory module for India (fixed in [magento-engcom/magento2ce#1007](https://github.com/magento-engcom/magento2ce/pull/1007)) + * [#11946](https://github.com/magento/magento2/issues/11946) -- Layer navigation showing wrong product count (fixed in [magento/magento2#12063](https://github.com/magento/magento2/pull/12063)) + * [#12452](https://github.com/magento/magento2/issues/12452) -- ACL permissions issue (fixed in [magento/magento2#12661](https://github.com/magento/magento2/pull/12661)) + * [#12660](https://github.com/magento/magento2/issues/12660) -- Invalid parameter configuration provided for $block argument upon no ACL permissions to the block (fixed in [magento/magento2#12661](https://github.com/magento/magento2/pull/12661)) + * [#12084](https://github.com/magento/magento2/issues/12084) -- Product csv import > fail on round brackets in image filename (fixed in [magento-engcom/magento2ce#1017](https://github.com/magento-engcom/magento2ce/pull/1017)) + * [#12656](https://github.com/magento/magento2/issues/12656) -- Checkout: Whitespace in front of coupon code causes "Coupon code is not valid" (fixed in [magento-engcom/magento2ce#1021](https://github.com/magento-engcom/magento2ce/pull/1021)) + * [#12667](https://github.com/magento/magento2/issues/12667) -- Incorrect partial attribute (EAV) reindex (Update by Schedule) for configurable product with childs visibility "Not Visible Individually" (fixed in [magento-engcom/magento2ce#1023](https://github.com/magento-engcom/magento2ce/pull/1023)) + * [#10743](https://github.com/magento/magento2/issues/10743) -- Magento 2 is not showing Popular Search Terms (fixed in [magento-engcom/magento2ce#1024](https://github.com/magento-engcom/magento2ce/pull/1024)) + * [#5774](https://github.com/magento/magento2/issues/5774) -- Tier price and custom options give bad results (fixed in [magento/magento2#11563](https://github.com/magento/magento2/pull/11563)) + * [#8615](https://github.com/magento/magento2/issues/8615) -- REST API unable to make requests with slash (/) in SKU (fixed in [magento-engcom/magento2ce#949](https://github.com/magento-engcom/magento2ce/pull/949)) + * [#10133](https://github.com/magento/magento2/issues/10133) -- Please add your expectations for @deprecated annotations (fixed in [magento/magento2#11070](https://github.com/magento/magento2/pull/11070)) + * [#12713](https://github.com/magento/magento2/issues/12713) -- Currency symbol overlaps entered attribute option's price while creating Configurable Product (fixed in [magento/magento2#12730](https://github.com/magento/magento2/pull/12730)) + * [#9453](https://github.com/magento/magento2/issues/9453) -- Reopened: '?SID' in URL even if disabled (fixed in [magento/magento2#12743](https://github.com/magento/magento2/pull/12743)) + * [#9720](https://github.com/magento/magento2/issues/9720) -- Menu item dependencies (dependsOnModule, dependsOnConfig) are broken (fixed in [magento/magento2#12747](https://github.com/magento/magento2/pull/12747)) + * [#6965](https://github.com/magento/magento2/issues/6965) -- \Magento\Directory\Model\PriceCurrency::format() fails without conversion rate (fixed in [magento-engcom/magento2ce#1022](https://github.com/magento-engcom/magento2ce/pull/1022)) + * [#12627](https://github.com/magento/magento2/issues/12627) -- Referer is not added to login url in checkout config (fixed in [magento/magento2#12630](https://github.com/magento/magento2/pull/12630)) + * [#12206](https://github.com/magento/magento2/issues/12206) -- Tracking link returns 404 page in admin panel (fixed in [magento/magento2#12732](https://github.com/magento/magento2/pull/12732)) + * [#6113](https://github.com/magento/magento2/issues/6113) -- Validate range-words in Form component (UI Component) (fixed in [magento/magento2#12739](https://github.com/magento/magento2/pull/12739)) + * [#12719](https://github.com/magento/magento2/issues/12719) -- Welcome message is shown with customer's first and last names after confirming account (fixed in [magento/magento2#12738](https://github.com/magento/magento2/pull/12738)) + * [#5035](https://github.com/magento/magento2/issues/5035) -- I can not to subscribe on change of all sections in Stores ->Configuration using event admin_system_config_changed_section (fixed in [magento/magento2#12758](https://github.com/magento/magento2/pull/12758)) + * [#12715](https://github.com/magento/magento2/issues/12715) -- Storefront Back to Sign in button does not work as expected (fixed in [magento/magento2#12759](https://github.com/magento/magento2/pull/12759)) + * [#11743](https://github.com/magento/magento2/issues/11743) -- AbstractPdf - ZendException font is not set (fixed in [magento-engcom/magento2ce#1016](https://github.com/magento-engcom/magento2ce/pull/1016)) + * [#7241](https://github.com/magento/magento2/issues/7241) -- No option to start with blank option for prefix and suffix in checkout. (fixed in [magento/magento2#11462](https://github.com/magento/magento2/pull/11462)) + * [#5188](https://github.com/magento/magento2/issues/5188) -- Error generating URN-catalog when blank one exists (fixed in [magento/magento2#11686](https://github.com/magento/magento2/pull/11686)) + * [#11936](https://github.com/magento/magento2/issues/11936) -- required attribute set id filter on attribute group repository getList (fixed in [magento/magento2#12105](https://github.com/magento/magento2/pull/12105)) + * [#12625](https://github.com/magento/magento2/issues/12625) -- when saving a page in magento 2.2.1, 'Modified' date field is not getting updated (fixed in [magento/magento2#12636](https://github.com/magento/magento2/pull/12636)) + * [#11953](https://github.com/magento/magento2/issues/11953) -- Product configuration creator does not warn about invalid SKUs (fixed in [magento/magento2#12737](https://github.com/magento/magento2/pull/12737)) + * [#12439](https://github.com/magento/magento2/issues/12439) -- Newsletter subscription success email not sent after confirmation (fixed in [magento/magento2#12751](https://github.com/magento/magento2/pull/12751)) + * [#8830](https://github.com/magento/magento2/issues/8830) -- Can`t delete row in dynamicRows component (fixed in [magento-engcom/magento2ce#921](https://github.com/magento-engcom/magento2ce/pull/921)) + * [#12712](https://github.com/magento/magento2/issues/12712) -- Latest Google Chrome Browser issue with duplicate #email (fixed in [magento-engcom/magento2ce#1036](https://github.com/magento-engcom/magento2ce/pull/1036)) + * [#6916](https://github.com/magento/magento2/issues/6916) -- Update Bundle Product without changes in bundle items (fixed in [magento/magento2#12734](https://github.com/magento/magento2/pull/12734)) + * [#12374](https://github.com/magento/magento2/issues/12374) -- Model hasDataChanges always true (fixed in [magento/magento2#12736](https://github.com/magento/magento2/pull/12736)) + * [#11885](https://github.com/magento/magento2/issues/11885) -- Magento 2.2 Paypal Can't Accept Checkout Agreements Before Routing to PayPal (fixed in [magento/magento2#12401](https://github.com/magento/magento2/pull/12401)) + * [#12844](https://github.com/magento/magento2/issues/12844) -- "Cannot instantiate interface Magento\Framework\Interception\ObjectManager\ConfigInterface" error in integration tests (fixed in [magento/magento2#12845](https://github.com/magento/magento2/pull/12845)) + * [#12294](https://github.com/magento/magento2/issues/12294) -- Bug: Adding Custom Attribute - The value of Admin scope can't be empty (fixed in [magento/magento2#12755](https://github.com/magento/magento2/pull/12755)) + * [#12900](https://github.com/magento/magento2/issues/12900) -- Braintree "Place Order" button is disabled after failed validation (fixed in [magento/magento2#12902](https://github.com/magento/magento2/pull/12902)) + * [#12555](https://github.com/magento/magento2/issues/12555) -- Naming collision in Javascript ui registry (backend) (fixed in [magento/magento2#12945](https://github.com/magento/magento2/pull/12945)) + * [#4292](https://github.com/magento/magento2/issues/4292) -- Why can't one switch back to default mode ? (fixed in [magento/magento2#12752](https://github.com/magento/magento2/pull/12752)) + * [#2156](https://github.com/magento/magento2/issues/2156) -- Why does \Magento\Translation\Model\Js\DataProvider use \Magento\Framework\Phrase\Renderer\Translate, not \Magento\Framework\Phrase\Renderer\Composite? (fixed in [magento/magento2#12953](https://github.com/magento/magento2/pull/12953)) + * [#7441](https://github.com/magento/magento2/issues/7441) -- Configurable attribute options are not sorted (fixed in [magento/magento2#12963](https://github.com/magento/magento2/pull/12963)) + * [#10869](https://github.com/magento/magento2/issues/10869) -- field lengths differ across many tables (fixed in [magento/magento2#13015](https://github.com/magento/magento2/pull/13015)) + * [#12446](https://github.com/magento/magento2/issues/12446) -- Remove /home from the sitemap.xml (fixed in [magento/magento2#12649](https://github.com/magento/magento2/pull/12649)) + * [#12894](https://github.com/magento/magento2/issues/12894) -- Can't remove State is required for all countries (fixed in [magento/magento2#12917](https://github.com/magento/magento2/pull/12917)) + * [#12393](https://github.com/magento/magento2/issues/12393) -- Attribute with "Catalog Input Type for Store Owner" equal "Fixed Product Tax" for Multi-store (fixed in [magento/magento2#13019](https://github.com/magento/magento2/pull/13019)) + * [#9036](https://github.com/magento/magento2/issues/9036) -- Database backup doesn't include triggers (fixed in [magento/magento2#11369](https://github.com/magento/magento2/pull/11369)) + * [#12209](https://github.com/magento/magento2/issues/12209) -- Substitution payment method - Incorrect message (fixed in [magento/magento2#12731](https://github.com/magento/magento2/pull/12731)) + * [#10415](https://github.com/magento/magento2/issues/10415) -- Customer First and Last names not being trimmed of leading and trailing spaces on save. (fixed in [magento/magento2#12964](https://github.com/magento/magento2/pull/12964)) + * [#12601](https://github.com/magento/magento2/issues/12601) -- A space between the category page and the main footer when applying specific settings (fixed in [magento/magento2#13026](https://github.com/magento/magento2/pull/13026)) + * [#12320](https://github.com/magento/magento2/issues/12320) -- Newsletter subscribe button title wrapped (fixed in [magento/magento2#13041](https://github.com/magento/magento2/pull/13041) and [magento/magento2#13029](https://github.com/magento/magento2/pull/13029)) + * [#11796](https://github.com/magento/magento2/issues/11796) -- Magento2.2.0 home page product grid issues (fixed in [magento/magento2#13081](https://github.com/magento/magento2/pull/13081)) + * [#12828](https://github.com/magento/magento2/issues/12828) -- Uncaught Error: Script error for: trackingCode error on every frontend page (fixed in [magento/magento2#13061](https://github.com/magento/magento2/pull/13061)) + * [#5129](https://github.com/magento/magento2/issues/5129) -- Product details page zoom issue when dropdown menu have overlap area with it. (fixed in [magento/magento2#13084](https://github.com/magento/magento2/pull/13084)) + * [#6486](https://github.com/magento/magento2/issues/6486) -- Unable to save certain product properties via Rest API (fixed in [magento-engcom/magento2ce#1018](https://github.com/magento-engcom/magento2ce/pull/1018)) + * [#9969](https://github.com/magento/magento2/issues/9969) -- Cancel order and restore quote methods increase stocks twice (fixed in [magento/magento2#12668](https://github.com/magento/magento2/pull/12668)) + * [#12221](https://github.com/magento/magento2/issues/12221) -- Google analytics pageview being triggered twice (fixed in [magento/magento2#13034](https://github.com/magento/magento2/pull/13034)) + * [#12705](https://github.com/magento/magento2/issues/12705) -- Integrity constraint violation error after reordering product with custom options (fixed in [magento/magento2#13036](https://github.com/magento/magento2/pull/13036)) + * [#12876](https://github.com/magento/magento2/issues/12876) -- Multiple newsletter confirmation emails sent (fixed in [magento/magento2#13044](https://github.com/magento/magento2/pull/13044)) + * [#8114](https://github.com/magento/magento2/issues/8114) -- "Save Block"-button on Add New Block silently ignores clicks if the content is empty. (fixed in [magento-engcom/magento2ce#1032](https://github.com/magento-engcom/magento2ce/pull/1032)) + * [#8453](https://github.com/magento/magento2/issues/8453) -- Price outlining in Invoice PDF (fixed in [magento-engcom/magento2ce#1216](https://github.com/magento-engcom/magento2ce/pull/1216)) + * [#12967](https://github.com/magento/magento2/issues/12967) -- Undeclared dependency magento/zendframework1 by magento/framework (fixed in [magento/magento2#12990](https://github.com/magento/magento2/pull/12990)) + * [#12787](https://github.com/magento/magento2/issues/12787) -- Newsletter\Model\Subscriber::loadByEmail() does not use MySQL index (fixed in [magento/magento2#13033](https://github.com/magento/magento2/pull/13033)) + * [#12877](https://github.com/magento/magento2/issues/12877) -- [2.2.1] Magento Database Backup Command Fails (Fix included) (fixed in [magento/magento2#13066](https://github.com/magento/magento2/pull/13066)) + * [#5550](https://github.com/magento/magento2/issues/5550) -- Incorrect language on swatch error (fixed in [magento-engcom/magento2ce#1117](https://github.com/magento-engcom/magento2ce/pull/1117)) + * [#11828](https://github.com/magento/magento2/issues/11828) -- Visual Swatches not showing swatch color in admin (fixed in [magento/magento2#13101](https://github.com/magento/magento2/pull/13101)) + * [#13095](https://github.com/magento/magento2/issues/13095) -- No locale for Swedish (Finland) (fixed in [magento-engcom/magento2ce#1207](https://github.com/magento-engcom/magento2ce/pull/1207)) + * [#11428](https://github.com/magento/magento2/issues/11428) -- Cart Price Rule Label is not working (fixed in [magento/magento2#13141](https://github.com/magento/magento2/pull/13141)) + * [#11497](https://github.com/magento/magento2/issues/11497) -- Discount Rule does not show Default Rule Label (fixed in [magento/magento2#13141](https://github.com/magento/magento2/pull/13141)) + * [#12430](https://github.com/magento/magento2/issues/12430) -- While assigning prices to configurable products, prices aren's readable when using custom price symbol. (fixed in [magento/magento2#13025](https://github.com/magento/magento2/pull/13025)) + * [#12322](https://github.com/magento/magento2/issues/12322) -- Bug with CDATA in XML layout update (fixed in [magento-engcom/magento2ce#1163](https://github.com/magento-engcom/magento2ce/pull/1163)) + * [#12714](https://github.com/magento/magento2/issues/12714) -- Extra records are in exported CSV file for order (fixed in [magento/magento2#13208](https://github.com/magento/magento2/pull/13208)) + * [#8624](https://github.com/magento/magento2/issues/8624) -- Stock status not coming back after qty update (fixed in [magento-engcom/magento2ce#955](https://github.com/magento-engcom/magento2ce/pull/955)) + * [#11897](https://github.com/magento/magento2/issues/11897) -- Catalog product list widget not working with multiple sku (fixed in [magento-engcom/magento2ce#1050](https://github.com/magento-engcom/magento2ce/pull/1050)) + * [#12147](https://github.com/magento/magento2/issues/12147) -- The function "isUsingStaticUrlsAllowed" (configuration setting "cms/wysiwyg/use_static_urls_in_catalog") doesn't have any effect with the WYSIWYG editor image insertion (fixed in [magento-engcom/magento2ce#1215](https://github.com/magento-engcom/magento2ce/pull/1215)) + * [#12819](https://github.com/magento/magento2/issues/12819) -- CartTotalRepository cannot handle extension attributes in quote addresses in 2.2.2 (fixed in [magento-engcom/magento2ce#1186](https://github.com/magento-engcom/magento2ce/pull/1186)) + * [#12993](https://github.com/magento/magento2/issues/12993) -- Type error in Cart/Totals (fixed in [magento-engcom/magento2ce#1186](https://github.com/magento-engcom/magento2ce/pull/1186)) + * [#12342](https://github.com/magento/magento2/issues/12342) -- JSTestDriver removal (fixed in [magento/magento2#12406](https://github.com/magento/magento2/pull/12406)) + * [#13126](https://github.com/magento/magento2/issues/13126) -- 2.2.2 - Duplicating Bundle Product Removes Bundle Options From Original Product (fixed in [magento-engcom/magento2ce#1217](https://github.com/magento-engcom/magento2ce/pull/1217)) + * [#7768](https://github.com/magento/magento2/issues/7768) -- Adding 'is_saleable' attribute to sort of product collection causes exception and adding 'is_salable' has no effect (fixed in [magento-engcom/magento2ce#1045](https://github.com/magento-engcom/magento2ce/pull/1045)) + * [#12231](https://github.com/magento/magento2/issues/12231) -- New Cart Rule : Small styles issue because of styles-old.css (fixed in [magento-engcom/magento2ce#1146](https://github.com/magento-engcom/magento2ce/pull/1146)) + * [#5697](https://github.com/magento/magento2/issues/5697) -- [2.1.0] Misleading feedback when sending tracking information email (fixed in [magento-engcom/magento2ce#1245](https://github.com/magento-engcom/magento2ce/pull/1245)) + * [#7213](https://github.com/magento/magento2/issues/7213) -- WEBAPI: PHP session is always started 2.1.2 (fixed in [magento-engcom/magento2ce#1247](https://github.com/magento-engcom/magento2ce/pull/1247)) + * [#5948](https://github.com/magento/magento2/issues/5948) -- Magento 2 configurable product selection stock issue (fixed in [magento/magento2#12936](https://github.com/magento/magento2/pull/12936)) + * [#10661](https://github.com/magento/magento2/issues/10661) -- Opacity png watermark became white box on product images (fixed in [magento/magento2#11060](https://github.com/magento/magento2/pull/11060)) + * [#13327](https://github.com/magento/magento2/issues/13327) -- Menu ui-state-active not removed from previous opened menu item (fixed in [magento/magento2#13341](https://github.com/magento/magento2/pull/13341)) + * [#8621](https://github.com/magento/magento2/issues/8621) -- M2.1 Multishipping Checkout step New Address - Old State is saved when country is changed (fixed in [magento/magento2#13364](https://github.com/magento/magento2/pull/13364)) + * [#7760](https://github.com/magento/magento2/issues/7760) -- M2.1.2 : Shipment Tracking REST API should throw an error if order doesn't exist. (fixed in [magento-engcom/magento2ce#1162](https://github.com/magento-engcom/magento2ce/pull/1162)) + * [#7849](https://github.com/magento/magento2/issues/7849) -- M2.x.x Translation Missing in Checkout for Tax (fixed in [magento-engcom/magento2ce#1147](https://github.com/magento-engcom/magento2ce/pull/1147)) + * [#12860](https://github.com/magento/magento2/issues/12860) -- Sort by Product Name doesn't work with Ancor and available filters (fixed in [magento-engcom/magento2ce#1192](https://github.com/magento-engcom/magento2ce/pull/1192)) + * [#7848](https://github.com/magento/magento2/issues/7848) -- M2.1.x : Require Customer To Be Logged In To Checkout (fixed in [magento-engcom/magento2ce#1148](https://github.com/magento-engcom/magento2ce/pull/1148)) + * [#11527](https://github.com/magento/magento2/issues/11527) -- Notification messages not disappearing after being displayed (fixed in [magento-engcom/magento2ce#1111](https://github.com/magento-engcom/magento2ce/pull/1111)) + * [#7698](https://github.com/magento/magento2/issues/7698) -- Admin Global Search was build in a hurry (fixed in [magento-engcom/magento2ce#1167](https://github.com/magento-engcom/magento2ce/pull/1167)) + * [#12574](https://github.com/magento/magento2/issues/12574) -- ConfigurationTest fails when installing via composer (fixed in [magento-engcom/magento2ce#1161](https://github.com/magento-engcom/magento2ce/pull/1161)) + * [#11798](https://github.com/magento/magento2/issues/11798) -- Magento 2.1.9 - Refunding / Credit Memo Total Value is not updated (fixed in [magento-engcom/magento2ce#1185](https://github.com/magento-engcom/magento2ce/pull/1185)) + * [#13497](https://github.com/magento/magento2/issues/13497) -- Method getUrl in Magento\Catalog\Model\Product\Attribute\Frontend returns image url with double slash (fixed in [magento/magento2#13498](https://github.com/magento/magento2/pull/13498)) + * [#12081](https://github.com/magento/magento2/issues/12081) -- Magento 2.2.0: Translations for 'Item in Cart' missing in mini cart. (fixed in [magento/magento2#13528](https://github.com/magento/magento2/pull/13528)) + * [#11252](https://github.com/magento/magento2/issues/11252) -- Custom attribute - File not allowing uploads (fixed in [magento/magento2#13563](https://github.com/magento/magento2/pull/13563)) + * [#12817](https://github.com/magento/magento2/issues/12817) -- Coupon code with canceled order (fixed in [magento-engcom/magento2ce#1095](https://github.com/magento-engcom/magento2ce/pull/1095)) + * [#11963](https://github.com/magento/magento2/issues/11963) -- Magento 2.2 language switching not working on catalog and Product Pages (fixed in [magento-engcom/magento2ce#1143](https://github.com/magento-engcom/magento2ce/pull/1143)) + * [#12791](https://github.com/magento/magento2/issues/12791) -- Customer & Product Tax class wrongly styled (fixed in [magento/magento2#13643](https://github.com/magento/magento2/pull/13643)) + * [#13429](https://github.com/magento/magento2/issues/13429) -- Magento 2.2.2 password reset strength meter (fixed in [magento/magento2#13761](https://github.com/magento/magento2/pull/13761)) + * [#13760](https://github.com/magento/magento2/issues/13760) -- Remove deprecated Brazilian currencies in the setup process (fixed in [magento/magento2#13770](https://github.com/magento/magento2/pull/13770)) + * [#5451](https://github.com/magento/magento2/issues/5451) -- Rating titles with whitespace results in broken ID attributes (fixed in [magento-engcom/magento2ce#1119](https://github.com/magento-engcom/magento2ce/pull/1119)) + * [#8035](https://github.com/magento/magento2/issues/8035) -- Join extension attributes are not added to Order results (REST api) (fixed in [magento-engcom/magento2ce#1168](https://github.com/magento-engcom/magento2ce/pull/1168)) + * [#13595](https://github.com/magento/magento2/issues/13595) -- loadCache for Block Magento\Theme\Block\Html\Footer dont work (fixed in [magento/magento2#13762](https://github.com/magento/magento2/pull/13762)) + * [#10595](https://github.com/magento/magento2/issues/10595) -- Low Stock Report Grid Empty (fixed in [magento/magento2#13682](https://github.com/magento/magento2/pull/13682)) + * [#13315](https://github.com/magento/magento2/issues/13315) -- Mobile "Payment Methods" step looks bad on mobile (fixed in [magento/magento2#13777](https://github.com/magento/magento2/pull/13777)) + * [#13791](https://github.com/magento/magento2/issues/13791) -- Submitting search form (mini) with empty value throws error on preventDefault (fixed in [magento/magento2#13811](https://github.com/magento/magento2/pull/13811)) + * [#12711](https://github.com/magento/magento2/issues/12711) -- Default Welcome message is broken on storefront with enabled translate-inline (fixed in [magento/magento2#13038](https://github.com/magento/magento2/pull/13038)) + * [#5863](https://github.com/magento/magento2/issues/5863) -- URL Rewrite issues occur very often /catalog/product/view/id/711/s/product-name/category/16/ (fixed in [magento/magento2#13567](https://github.com/magento/magento2/pull/13567)) + * [#8227](https://github.com/magento/magento2/issues/8227) -- After upgrade to 2.1.3 url rewrite problem multi store (fixed in [magento/magento2#13567](https://github.com/magento/magento2/pull/13567)) + * [#8957](https://github.com/magento/magento2/issues/8957) -- Permanent Redirect for old URL missing via API (fixed in [magento/magento2#13567](https://github.com/magento/magento2/pull/13567)) + * [#10073](https://github.com/magento/magento2/issues/10073) -- Magento don't create product redirect if URL key on store view level was changed. (fixed in [magento/magento2#13567](https://github.com/magento/magento2/pull/13567)) + * [#13240](https://github.com/magento/magento2/issues/13240) -- Permanent 301 redirect is not generated when product url changes on storeview scope (fixed in [magento/magento2#13567](https://github.com/magento/magento2/pull/13567)) + * [#13768](https://github.com/magento/magento2/issues/13768) -- Expired backend password - Attention: Something went wrong (fixed in [magento/magento2#13787](https://github.com/magento/magento2/pull/13787)) + * [#4454](https://github.com/magento/magento2/issues/4454) -- CMS Page with in layout update xml (fixed in [magento/magento2#13817](https://github.com/magento/magento2/pull/13817)) + * [#13350](https://github.com/magento/magento2/issues/13350) -- Magento 2.2 Encoding Issue -> Google Analytics (fixed in [magento/magento2#13844](https://github.com/magento/magento2/pull/13844)) + * [#13827](https://github.com/magento/magento2/issues/13827) -- Google Analytics character encoding issue ( \u0020 ) (fixed in [magento/magento2#13844](https://github.com/magento/magento2/pull/13844)) + * [#7765](https://github.com/magento/magento2/issues/7765) -- Filter block on category is still present also mode is to just show "static block" (fixed in [magento-engcom/magento2ce#1159](https://github.com/magento-engcom/magento2ce/pull/1159)) + * [#11512](https://github.com/magento/magento2/issues/11512) -- Incorrect use of 503 status code (fixed in [magento/magento2#11513](https://github.com/magento/magento2/pull/11513)) + * [#12889](https://github.com/magento/magento2/issues/12889) -- Wrong shipping fee in backend with multiple store views (fixed in [magento-engcom/magento2ce#1132](https://github.com/magento-engcom/magento2ce/pull/1132)) + * [#13216](https://github.com/magento/magento2/issues/13216) -- `quoteAddressToFormAddressData` mutates the argument (fixed in [magento/magento2#13217](https://github.com/magento/magento2/pull/13217)) + * [#13631](https://github.com/magento/magento2/issues/13631) -- Totals sort order is not respected in customer account order view (fixed in [magento/magento2#13641](https://github.com/magento/magento2/pull/13641)) + * [#7515](https://github.com/magento/magento2/issues/7515) -- Error when submit customer/account/editPost form and session expired (fixed in [magento-engcom/magento2ce#1187](https://github.com/magento-engcom/magento2ce/pull/1187)) + * [#12404](https://github.com/magento/magento2/issues/12404) -- Output of setup:static-content:deploy contains red color, should be a friendlier color (fixed in [magento/magento2#13709](https://github.com/magento/magento2/pull/13709)) + * [#13006](https://github.com/magento/magento2/issues/13006) -- Drop down values are not showing in catalog product grid magento2 (fixed in [magento/magento2#13861](https://github.com/magento/magento2/pull/13861)) + * [#13899](https://github.com/magento/magento2/issues/13899) -- Postal code (zip code) for Canada should allow postal codes without space (fixed in [magento/magento2#13930](https://github.com/magento/magento2/pull/13930)) +* GitHub pull requests: + * [magento/magento2#12171](https://github.com/magento/magento2/pull/12171) -- 7691: address with saveInAddressBook 0 are still being added to the address book for new customers(backport to 2.2) (by @RomaKis) + * [magento/magento2#12239](https://github.com/magento/magento2/pull/12239) -- Fixed php notice when invalid ui_component config is used (by @vovayatsyuk) + * [magento/magento2#11407](https://github.com/magento/magento2/pull/11407) -- Added CLI command to enable and disable the Profiler (by @peterjaap) + * [magento/magento2#12257](https://github.com/magento/magento2/pull/12257) -- Phpdoc improvements (by @KarlDeux) + * [magento/magento2#11997](https://github.com/magento/magento2/pull/11997) -- 11941: Invoice for products that use qty decimal rounds down to whole number. (by @nmalevanec) + * [magento/magento2#12283](https://github.com/magento/magento2/pull/12283) -- magento/magento2#12083: Cannot import zero (0) value into custom attribute (by @p-bystritsky) + * [magento/magento2#12296](https://github.com/magento/magento2/pull/12296) -- Issue: 3596. Resolve Notice with undefined index 'value' (by @madonzy) + * [magento/magento2#12303](https://github.com/magento/magento2/pull/12303) -- 9764: exception message is wrong and misleading in findAccessorMethodName() of Magento\Framework\Reflection\NameFinder (by @RomaKis) + * [magento/magento2#12304](https://github.com/magento/magento2/pull/12304) -- Handle empty or incorrect lines in a language CSV (by @FreekVandeursen) + * [magento/magento2#12276](https://github.com/magento/magento2/pull/12276) -- Webshop throws an exception when sharing wishlist with RSS enabled (by @mediactbv) + * [magento/magento2#12310](https://github.com/magento/magento2/pull/12310) -- Fix robots.txt content type to 'text/plain' (by @tufahu) + * [magento/magento2#12332](https://github.com/magento/magento2/pull/12332) -- 9684: No ACL set for integrations (by @RomaKis) + * [magento/magento2#11787](https://github.com/magento/magento2/pull/11787) -- Fix #10438: Potential error on order edit page when address has extension attributes (by @joni-jones) + * [magento/magento2#12003](https://github.com/magento/magento2/pull/12003) -- magento/magento2#11691: Wrong return type for getAttributeText($attributeCode) (by @p-bystritsky) + * [magento/magento2#12308](https://github.com/magento/magento2/pull/12308) -- 12261: Order confirmation email contains non functioning links #12261 (by @RomaKis) + * [magento/magento2#12302](https://github.com/magento/magento2/pull/12302) -- Fixed 'Non-numeric value' warning on account create/save when DOB field is visible (by @vovayatsyuk) + * [magento/magento2#11320](https://github.com/magento/magento2/pull/11320) -- Fix email not sent when sitemap generation has errors (by @marinagociu) + * [magento/magento2#11429](https://github.com/magento/magento2/pull/11429) -- Magento 2.2.0 A solution for Product Repeat Issue after filter on category listing page. (by @mayankzalavadia) + * [magento/magento2#11550](https://github.com/magento/magento2/pull/11550) -- Even existing credit memos should be refundable if their state is open (by @ajpevers) + * [magento/magento2#11809](https://github.com/magento/magento2/pull/11809) -- 8003: Using System Value for Base Currency Results in Config Error. (by @nmalevanec) + * [magento/magento2#11592](https://github.com/magento/magento2/pull/11592) -- Fix issue #10347 - Wrong order tax amounts displayed when using specific tax configuration (2.2-develop) (by @PieterCappelle) + * [magento/magento2#11539](https://github.com/magento/magento2/pull/11539) -- Fix depends field not working for radio elements (by @jahvi) + * [magento/magento2#11846](https://github.com/magento/magento2/pull/11846) -- Fixed a js bug where ui_component labels have the wrong sort order. (by @deiserh) + * [magento/magento2#11965](https://github.com/magento/magento2/pull/11965) -- 11792: Can't add customizable options to product (by @RomaKis) + * [magento/magento2#12048](https://github.com/magento/magento2/pull/12048) -- #11528 can't save customizable options (by @luismiguelyangehuaman) + * [magento/magento2#12108](https://github.com/magento/magento2/pull/12108) -- 12064: Database Rollback not working with magento 2.1.9? (by @RomaKis) + * [magento/magento2#12387](https://github.com/magento/magento2/pull/12387) -- Update CAPTCHA labels to reflect the symbols in the CAPTCHA image (by @RhodriOwainDavies) + * [magento/magento2#12120](https://github.com/magento/magento2/pull/12120) -- Update AbstractBackend.php (by @hewersonfreitas) + * [magento/magento2#12154](https://github.com/magento/magento2/pull/12154) -- Add link to issue gates wiki page in the labels section of the readme (by @dmanners) + * [magento/magento2#11422](https://github.com/magento/magento2/pull/11422) -- [Backport 2.2] Translate order getCreatedAtFormatted() to store locale (by @JeroenVanLeusden) + * [magento/magento2#11473](https://github.com/magento/magento2/pull/11473) -- Fix for remove 'product_list_toolbar' block from layout in XML #9413 (by @mariuscris) + * [magento/magento2#11670](https://github.com/magento/magento2/pull/11670) -- save invoice ID on credit memo when using API method salesRefundInvoiceV1 (by @ajpevers) + * [magento/magento2#11992](https://github.com/magento/magento2/pull/11992) -- 11740: Sending emails from Admin in Multi-Store Environment defaults to Primary Store (by @RomaKis) + * [magento/magento2#12036](https://github.com/magento/magento2/pull/12036) -- Add swatch option: Prevent loosing data and default value if data is not populated via adminhtml (by @gomencal) + * [magento/magento2#12227](https://github.com/magento/magento2/pull/12227) -- Shipping method fixtures not compatible with getShippingMethod(true) in OrderCreateTest (by @andrew-garside-temando) + * [magento/magento2#12241](https://github.com/magento/magento2/pull/12241) -- 10128: New Orders not being saved to order grid (by @RomaKis) + * [magento/magento2#12132](https://github.com/magento/magento2/pull/12132) -- 10210: Transport variable can not be altered in email_invoice_set_template_vars_before Event (backport MAGETWO-69482 to 2.2) (by @RomaKis) + * [magento/magento2#11389](https://github.com/magento/magento2/pull/11389) -- Attribute category_ids issue (by @manuelson) + * [magento/magento2#12133](https://github.com/magento/magento2/pull/12133) -- Fix for issue 12127: Single quotation marks are now decoded properly in admin attribute option input fields (by @erfanimani) + * [magento/magento2#12253](https://github.com/magento/magento2/pull/12253) -- New validation: 3bytes characters filter (4 bytes characters cannot be stored using UTF8) (by @KarlDeux) + * [magento/magento2#12328](https://github.com/magento/magento2/pull/12328) -- 9742: Default welcome message returns after being deleted #9742 (by @RomaKis) + * [magento/magento2#12057](https://github.com/magento/magento2/pull/12057) -- [Backport] magento/magento2#9961: Unused product attributes display with value N/A or NO on storefront. (by @p-bystritsky) + * [magento/magento2#12441](https://github.com/magento/magento2/pull/12441) -- Add command "app:config:status" to check if "app:config:import" needed (by @jalogut) + * [magento/magento2#12443](https://github.com/magento/magento2/pull/12443) -- Fixed missing 'size' and 'type' props on a third-party category images [Backport 2.2] (by @vovayatsyuk) + * [magento/magento2#12495](https://github.com/magento/magento2/pull/12495) -- Fixed invalid parameter type in phpdoc block in Topmenu class (by @vovayatsyuk) + * [magento/magento2#11323](https://github.com/magento/magento2/pull/11323) -- Defaulting missing alt-text for a product to use the product name. (by @brobie) + * [magento/magento2#11388](https://github.com/magento/magento2/pull/11388) -- Fix #11236: Web Setup Wizard Icon Inconsistency (by @dverkade) + * [magento/magento2#11485](https://github.com/magento/magento2/pull/11485) -- do the stock check on default level because the stock on website leve… (by @joost-florijn-kega) + * [magento/magento2#11926](https://github.com/magento/magento2/pull/11926) -- 8255: Export Products action doesn't consider hide_for_product_page value. (by @nmalevanec) + * [magento/magento2#12207](https://github.com/magento/magento2/pull/12207) -- 11882: It's not possible to enable "log to file" (debugging) in production mode. Psr logger debug method does not work by the default in developer mode. (by @nmalevanec) + * [magento/magento2#11052](https://github.com/magento/magento2/pull/11052) -- Keep maintenance mode on if it was previously enabled (by @jokeputs) + * [magento/magento2#12038](https://github.com/magento/magento2/pull/12038) -- #11825: Generate new FormKey and replace for oldRequestParams Wishlist (by @osrecio) + * [magento/magento2#12161](https://github.com/magento/magento2/pull/12161) -- Fix delay initialization options for customized JQuery UI menu widget (by @scazz010) + * [magento/magento2#12466](https://github.com/magento/magento2/pull/12466) -- Category page X-Magento-Tags headers contains product cache identities even which category display mode is set to "Static block only" (by @atishgoswami) + * [magento/magento2#12515](https://github.com/magento/magento2/pull/12515) -- The left and the right parts of assignment are equal (by @lfluvisotto) + * [magento/magento2#12499](https://github.com/magento/magento2/pull/12499) -- Format generated config files using the short array syntax (by @cykirsch) + * [magento/magento2#12513](https://github.com/magento/magento2/pull/12513) -- Duplicate array key (by @lfluvisotto) + * [magento/magento2#12516](https://github.com/magento/magento2/pull/12516) -- Case mismatch (by @lfluvisotto) + * [magento/magento2#11444](https://github.com/magento/magento2/pull/11444) -- [Backport 2.2-develop] #11324 REST API - Only associate automatically product with all websites when creating product in All Store Views scope (by @adrian-martinez-interactiv4) + * [magento/magento2#11608](https://github.com/magento/magento2/pull/11608) -- Fix for issue 9633 500 error on setup wizard with memcache (by @sylink) + * [magento/magento2#11617](https://github.com/magento/magento2/pull/11617) -- Re saving product attribute (by @raumatbel) + * [magento/magento2#12359](https://github.com/magento/magento2/pull/12359) -- Add a --no-update option to sampledata:deploy and sampledata:remove commands (by @schmengler) + * [magento/magento2#12530](https://github.com/magento/magento2/pull/12530) -- Added correction for og:type content value (by @atishgoswami) + * [magento/magento2#11099](https://github.com/magento/magento2/pull/11099) -- Fix syntax of expectException() calls (by @schmengler) + * [magento/magento2#11435](https://github.com/magento/magento2/pull/11435) -- [Backport 2.2-develop] #11409: Too many password reset requests even when disabled in settings (by @adrian-martinez-interactiv4) + * [magento/magento2#12122](https://github.com/magento/magento2/pull/12122) -- [2.2] - Add command to view mview state and queue (by @convenient) + * [magento/magento2#12167](https://github.com/magento/magento2/pull/12167) -- 12110: Missing cascade into attribute set deletion. (by @nmalevanec) + * [magento/magento2#12469](https://github.com/magento/magento2/pull/12469) -- Added namespace to product videos fotorama events (by @roma84) + * [magento/magento2#12507](https://github.com/magento/magento2/pull/12507) -- Issue 12506: Fixup typo getDispretionPath -> getDispersionPath (by @PascalBrouwers) + * [magento/magento2#12539](https://github.com/magento/magento2/pull/12539) -- Trying to get data from non existent products (by @angelo983) + * [magento/magento2#12541](https://github.com/magento/magento2/pull/12541) -- [Backport 2.2-develop] Fix swagger-ui on instances of Magento running on a non-standard port (by @JeroenVanLeusden) + * [magento/magento2#12220](https://github.com/magento/magento2/pull/12220) -- 12180 Remove unnecessary use operator for Context, causes 503 error i… (by @chris-pook) + * [magento/magento2#12477](https://github.com/magento/magento2/pull/12477) -- NewRelic: Disables Module Deployments, Creates new Deploy Marker Command (by @fooman) + * [magento/magento2#12529](https://github.com/magento/magento2/pull/12529) -- #12450: Set Current Store from Store Code if isUseStoreInUrl (by @osrecio) + * [magento/magento2#12606](https://github.com/magento/magento2/pull/12606) -- Fix error loading theme configuration on PHP 7.2 (by @Alanaktion) + * [magento/magento2#12610](https://github.com/magento/magento2/pull/12610) -- Update CrontabManager.php (by @WaPoNe) + * [magento/magento2#12639](https://github.com/magento/magento2/pull/12639) -- Remove @escapeNotVerified from documentation (by @mzeis) + * [magento/magento2#11702](https://github.com/magento/magento2/pull/11702) -- Fix getReservedOrderId() to use current store instead of default store (by @tdgroot) + * [magento/magento2#12633](https://github.com/magento/magento2/pull/12633) -- Magento Connect no longer exist (by @miguelbalparda) + * [magento/magento2#12063](https://github.com/magento/magento2/pull/12063) -- 11946: Layer navigation showing wrong product count (by @RomaKis) + * [magento/magento2#12661](https://github.com/magento/magento2/pull/12661) -- [2.2-develop] Fixes #12660 invalid parameter configuration provided for argument (by @Tomasz-Silpion) + * [magento/magento2#11563](https://github.com/magento/magento2/pull/11563) -- Add price calculation improvement for product option value price (by @marinagociu) + * [magento/magento2#12666](https://github.com/magento/magento2/pull/12666) -- Fix incorrect DHL Product codes (by @gwharton) + * [magento/magento2#12723](https://github.com/magento/magento2/pull/12723) -- [2.2 Backport] Create CODE_OF_CONDUCT.md (by @ishakhsuvarov) + * [magento/magento2#11070](https://github.com/magento/magento2/pull/11070) -- Remove deprecation without alternative (by @schmengler) + * [magento/magento2#12730](https://github.com/magento/magento2/pull/12730) -- 12713 (by @EfremovaVI) + * [magento/magento2#12743](https://github.com/magento/magento2/pull/12743) -- #9453 - ported down c2e5d77a9516c8305585e819c2f0a0629648cc14 (by @strell) + * [magento/magento2#12747](https://github.com/magento/magento2/pull/12747) -- magento/magento2#9720 Menu item dependencies (dependsOnModule, depend… (by @hannassy) + * [magento/magento2#12767](https://github.com/magento/magento2/pull/12767) -- magento/magento2#12699: Multiselect Attribute is not saved (by @awarche) + * [magento/magento2#12786](https://github.com/magento/magento2/pull/12786) -- Fix typo in SINGLE_PRODUCT_LAYOUT_HANLDE (by @aschrammel) + * [magento/magento2#12630](https://github.com/magento/magento2/pull/12630) -- Add customer login url from Customer Url model to checkout config so … (by @quisse) + * [magento/magento2#12732](https://github.com/magento/magento2/pull/12732) -- Fix issue when tracking link returns 404 page in admin panel (by @ihor-sviziev) + * [magento/magento2#12739](https://github.com/magento/magento2/pull/12739) -- magento/magento2#6113: Validate range-words in Form component (UI Component) (by @Zamoroka) + * [magento/magento2#12738](https://github.com/magento/magento2/pull/12738) -- magento/magento2#12719: Use full name in welcome message (by @xpoback) + * [magento/magento2#12758](https://github.com/magento/magento2/pull/12758) -- magento/magento2#5035 Cannot subscribe to events with a number in name (by @Mobecls) + * [magento/magento2#12759](https://github.com/magento/magento2/pull/12759) -- Fix Back to Sign in url on confirmation form (by @StasKozar) + * [magento/magento2#12810](https://github.com/magento/magento2/pull/12810) -- Stop the profiler when returning early in \Magento\Eav\Model\Config::getAttribute (by @nicka101) + * [magento/magento2#12826](https://github.com/magento/magento2/pull/12826) -- Fix PhpDoc to show correct parameter types (by @FreekVandeursen) + * [magento/magento2#11462](https://github.com/magento/magento2/pull/11462) -- #7241: Always add empty option for prefix and/or suffix if optional (by @avstudnitz) + * [magento/magento2#11686](https://github.com/magento/magento2/pull/11686) -- Fix error when generating urn catalog for empty misc.xml (by @tdgroot) + * [magento/magento2#11878](https://github.com/magento/magento2/pull/11878) -- [BUGFIX] Made method public so a plugin is possible. (by @dheesbeen) + * [magento/magento2#12105](https://github.com/magento/magento2/pull/12105) -- #11936:required attribute set id filter on attribute group repository getList (by @tzyganu) + * [magento/magento2#12636](https://github.com/magento/magento2/pull/12636) -- #12625: Add Current Date to update_time Field for Block and Pages (by @osrecio) + * [magento/magento2#12737](https://github.com/magento/magento2/pull/12737) -- magento/magento2#11953: Product configuration creator does not warn about invalid SKUs (by @Zamoroka) + * [magento/magento2#12751](https://github.com/magento/magento2/pull/12751) -- magento/magento2#12439 Newsletter subscription success email not sent… (by @Styopchik) + * [magento/magento2#12884](https://github.com/magento/magento2/pull/12884) -- [Backport 2.2] Update functional.suite.dist.yml to handle a custom backend name (by @scribam) + * [magento/magento2#12734](https://github.com/magento/magento2/pull/12734) -- #6916 Fix notice during Update Bundle Product without changes (by @dzianis-yurevich) + * [magento/magento2#12859](https://github.com/magento/magento2/pull/12859) -- Throw ValidationException for invalid xml (by @pmclain) + * [magento/magento2#12875](https://github.com/magento/magento2/pull/12875) -- Add more parameters to ajax:addToCart (by @srenon) + * [magento/magento2#12736](https://github.com/magento/magento2/pull/12736) -- Issues/12374 (by @virtual97) + * [magento/magento2#12401](https://github.com/magento/magento2/pull/12401) -- Correctly set payment information when using paypal (by @therool) + * [magento/magento2#12768](https://github.com/magento/magento2/pull/12768) -- magento/magento2: Missing ext-bcmath dependency added (by @Mobecls) + * [magento/magento2#12845](https://github.com/magento/magento2/pull/12845) -- Add missing preference for ObjectManager\ConfigInterface in integrati… (by @schmengler) + * [magento/magento2#12857](https://github.com/magento/magento2/pull/12857) -- Update progress.phtml (by @jonashrem) + * [magento/magento2#12887](https://github.com/magento/magento2/pull/12887) -- Remove unused if statement in order invoice save (by @JeroenVanLeusden) + * [magento/magento2#12931](https://github.com/magento/magento2/pull/12931) -- Display scroll bar of admin store switcher in OSX computers. (by @jalogut) + * [magento/magento2#12946](https://github.com/magento/magento2/pull/12946) -- Respect "Learn More Link" in Recently Viewed Products widget options (by @JeroenVanLeusden) + * [magento/magento2#12951](https://github.com/magento/magento2/pull/12951) -- [Bug] Correctly construct Magento\Framework\Phrase (by @punkstar) + * [magento/magento2#12755](https://github.com/magento/magento2/pull/12755) -- magento/magento2#12294: Bug: Adding Custom Attribute - The value of A… (by @virtual97) + * [magento/magento2#12902](https://github.com/magento/magento2/pull/12902) -- Fix #12900: Braintree "Place Order" button is disabled after failed validation (by @joni-jones) + * [magento/magento2#12945](https://github.com/magento/magento2/pull/12945) -- Naming collision in Javascript ui registry (backend) to 2.2 (by @VladimirZaets) + * [magento/magento2#12521](https://github.com/magento/magento2/pull/12521) -- Match flexible static file version in nginx sample config (by @scottsb) + * [magento/magento2#12752](https://github.com/magento/magento2/pull/12752) -- magento/magento2#4292: Ability to sitch to default mode (by @Etty) + * [magento/magento2#12953](https://github.com/magento/magento2/pull/12953) -- [Backport to 2.2-develop] Fix #2156 Js\Dataprovider uses the RendererInterface. (by @dverkade) + * [magento/magento2#12963](https://github.com/magento/magento2/pull/12963) -- Sort configurable attribute options by sort_order (by @wardcapp) + * [magento/magento2#12862](https://github.com/magento/magento2/pull/12862) -- Change _getHtml to append class rather than overwrite for children (by @jonshipman) + * [magento/magento2#13015](https://github.com/magento/magento2/pull/13015) -- [Backport to 2.2-develop] The quote address fields length expanded in the database (by @dverkade) + * [magento/magento2#13027](https://github.com/magento/magento2/pull/13027) -- Change of copyright year from 2017 to 2018. (by @bhargavmehta) + * [magento/magento2#12649](https://github.com/magento/magento2/pull/12649) -- #12446: Add GetUtilityPageIdentifiers for Manage Custom Pages to be excluded … (by @osrecio) + * [magento/magento2#12917](https://github.com/magento/magento2/pull/12917) -- Fix issue 12894: Can't remove State is required for all countries (by @vasilii-b) + * [magento/magento2#12922](https://github.com/magento/magento2/pull/12922) -- Handle multiple errors in customer address validation when shown in adminhtml customer edit page (by @adrian-martinez-interactiv4) + * [magento/magento2#13019](https://github.com/magento/magento2/pull/13019) -- [Backport to 2.2-develop] Attribute with "Catalog Input Type for Store Owner" equal "Fixed Product Tax" for Multi-store (by @dverkade) + * [magento/magento2#13052](https://github.com/magento/magento2/pull/13052) -- Make "top destinations" config field configurable on store level (by @avstudnitz) + * [magento/magento2#12901](https://github.com/magento/magento2/pull/12901) -- FIX: remove not used count() from templates (by @Coderimus) + * [magento/magento2#13050](https://github.com/magento/magento2/pull/13050) -- Updated cron documentation URL to 2.2 (by @robbie-thompson) + * [magento/magento2#11369](https://github.com/magento/magento2/pull/11369) -- Database backup doesn't include triggers #9036 (by @denisristic) + * [magento/magento2#12731](https://github.com/magento/magento2/pull/12731) -- magento/magento2#12209: Substitution payment method - Incorrect message (by @Zamoroka) + * [magento/magento2#12964](https://github.com/magento/magento2/pull/12964) -- Add trim filter to first, middle and lastname. (by @wardcapp) + * [magento/magento2#12985](https://github.com/magento/magento2/pull/12985) -- Fix jumping content on page reload in admin area (by @avoelkl) + * [magento/magento2#13026](https://github.com/magento/magento2/pull/13026) -- Feature space between category page (by @sanjay-wagento) + * [magento/magento2#13041](https://github.com/magento/magento2/pull/13041) -- Solution For Newsletter subscribe button title wrapped (by @monaemipro) + * [magento/magento2#13051](https://github.com/magento/magento2/pull/13051) -- Fix JS error on cart from postcode validation when 'US' is deselected as an allowed country (by @codekipple) + * [magento/magento2#13076](https://github.com/magento/magento2/pull/13076) -- Fix issues caused by using continue in loops (by @ihor-sviziev) + * [magento/magento2#13029](https://github.com/magento/magento2/pull/13029) -- Newsletter Label is broking on chinese Language like 订阅 (by @dasharath-wagento) + * [magento/magento2#12965](https://github.com/magento/magento2/pull/12965) -- Fix vault_payment_token install script type where column defaults were not set (by @helloitsluke) + * [magento/magento2#13030](https://github.com/magento/magento2/pull/13030) -- Resolved Checkout-Payment-Wrong promo code cancelled issue (by @chiragp-wagento) + * [magento/magento2#13039](https://github.com/magento/magento2/pull/13039) -- Feature minimum order amount notice issue (by @neeta-wagento) + * [magento/magento2#13061](https://github.com/magento/magento2/pull/13061) -- Fix for requireJS loading issues (for ad blockers) (by @Yonn-Trimoreau) + * [magento/magento2#13081](https://github.com/magento/magento2/pull/13081) -- Fix for #11796 Magento2.2.0 home page product grid issues (by @punitv) + * [magento/magento2#13084](https://github.com/magento/magento2/pull/13084) -- Fixed magnifier issue. (by @mayankzalavadia) + * [magento/magento2#12668](https://github.com/magento/magento2/pull/12668) -- Fix for reverting stock twice for cancelled orders (by @dverkade) + * [magento/magento2#13034](https://github.com/magento/magento2/pull/13034) -- Magento 2.2 Develop fix for #12221 Google Analytics Pageview Triggered twice (by @bhargavmehta) + * [magento/magento2#13036](https://github.com/magento/magento2/pull/13036) -- magento/magento2#12705: Integrity constraint violation error after re… (by @vinayshah) + * [magento/magento2#13044](https://github.com/magento/magento2/pull/13044) -- Fix Newsletter Subscribe Workflow (by @torhoehn) + * [magento/magento2#13161](https://github.com/magento/magento2/pull/13161) -- Updated README file to take resources from 2.2 instead of 2.0. (by @bhargavmehta) + * [magento/magento2#12990](https://github.com/magento/magento2/pull/12990) -- [2.2.x] Fix undeclared dependency magento/zendframework1 by magento/framework (by @ihor-sviziev) + * [magento/magento2#12998](https://github.com/magento/magento2/pull/12998) -- Make customer name link to customer dashboard (by @srenon) + * [magento/magento2#13033](https://github.com/magento/magento2/pull/13033) -- Newsletter\Model\Subscriber::loadByEmail() does not use MySQL index (by @devamitbera) + * [magento/magento2#13066](https://github.com/magento/magento2/pull/13066) -- Fix for #12877 as per @azeemism (by @jagritijoshi) + * [magento/magento2#13086](https://github.com/magento/magento2/pull/13086) -- Add failsafe to items.phtml (by @samgranger) + * [magento/magento2#13169](https://github.com/magento/magento2/pull/13169) -- Optimization: magento/module-eav is_null change to strict comparison … (by @Coderimus) + * [magento/magento2#13170](https://github.com/magento/magento2/pull/13170) -- Optimization: magento/module-tax is_null change to strict comparison (by @Coderimus) + * [magento/magento2#13155](https://github.com/magento/magento2/pull/13155) -- Optimization: module-sales is_null change to strict comparison instead (by @Coderimus) + * [magento/magento2#13171](https://github.com/magento/magento2/pull/13171) -- Optimization: magento/module-catalog is_null change to strict comparison (by @Coderimus) + * [magento/magento2#13174](https://github.com/magento/magento2/pull/13174) -- Fix: remove TestObserver class (by @Coderimus) + * [magento/magento2#12807](https://github.com/magento/magento2/pull/12807) -- Reorder adding of page layout handles (by @aschrammel) + * [magento/magento2#13101](https://github.com/magento/magento2/pull/13101) -- 11828 Fix issue with swatch colour block not showing in admin panel once colour selected (PHP7.1.x issue). (by @chris-pook) + * [magento/magento2#13082](https://github.com/magento/magento2/pull/13082) -- Fix Magento_Checkout address formatting (by @nfourteen) + * [magento/magento2#13141](https://github.com/magento/magento2/pull/13141) -- Fix missing discount label in checkout (by @ihor-sviziev) + * [magento/magento2#13025](https://github.com/magento/magento2/pull/13025) -- fixed issue prices aren't readable when using custom price symbol (by @pradeep-wagento) + * [magento/magento2#13208](https://github.com/magento/magento2/pull/13208) -- #12714 - pass parameter for export button url (by @sanjay-wagento) + * [magento/magento2#12406](https://github.com/magento/magento2/pull/12406) -- Issue/12342/js test driver removal (by @KarlDeux) + * [magento/magento2#13310](https://github.com/magento/magento2/pull/13310) -- Add the domReady! statement (by @arnoudhgz) + * [magento/magento2#13324](https://github.com/magento/magento2/pull/13324) -- Alignement Array assignement (by @Nolwennig) + * [magento/magento2#12936](https://github.com/magento/magento2/pull/12936) -- FIX: out-of-stock options for configurable product visible on frontend as sellable (by @Coderimus) + * [magento/magento2#11060](https://github.com/magento/magento2/pull/11060) -- Handle transparncy correctly for watermark (by @elzekool) + * [magento/magento2#13408](https://github.com/magento/magento2/pull/13408) -- Translate time zone label according to current locale in Stores > Configuration > Advanced Reporting (by @adrian-martinez-interactiv4) + * [magento/magento2#12650](https://github.com/magento/magento2/pull/12650) -- Add fallback for Product_links position attribute if not set in request (by @mohammedsalem) + * [magento/magento2#13341](https://github.com/magento/magento2/pull/13341) -- Bugfix/13327 ui active state not removed from previous menu item (by @arnoudhgz) + * [magento/magento2#13364](https://github.com/magento/magento2/pull/13364) -- [Backport 2.2] In checkout->multishipping-> new addres clean region when select country without dropdown for states (by @enriquei4) + * [magento/magento2#13373](https://github.com/magento/magento2/pull/13373) -- Edited doc block of the walk method in a Collection (by @ByteCreation) + * [magento/magento2#13436](https://github.com/magento/magento2/pull/13436) -- Product Link Save Handler - Remove not used constructor dependency (by @ihor-sviziev) + * [magento/magento2#13449](https://github.com/magento/magento2/pull/13449) -- Fix default discount tax calculation in double (by @VincentMarmiesse) + * [magento/magento2#13450](https://github.com/magento/magento2/pull/13450) -- Removed each function usage (by @ihor-sviziev) + * [magento/magento2#13485](https://github.com/magento/magento2/pull/13485) -- Update code formatting in Swagger Block (by @JeroenVanLeusden) + * [magento/magento2#13132](https://github.com/magento/magento2/pull/13132) -- Update the Emogrifier dependency to ^2.0.0 (by @oliverklee) + * [magento/magento2#13494](https://github.com/magento/magento2/pull/13494) -- Fixing of Problem with updating stock item qty and stock status (by @nuzil) + * [magento/magento2#13498](https://github.com/magento/magento2/pull/13498) -- issue #13497 - Method getUrl in Magento\Catalog\Model\Product\Attribu… (by @igortregub) + * [magento/magento2#13040](https://github.com/magento/magento2/pull/13040) -- magento/magento2#: Customer Login/Logout Issue (by @vinayshah) + * [magento/magento2#13462](https://github.com/magento/magento2/pull/13462) -- Switch updatecart qty input validators to dynamic instead of hardcoding (by @gil--) + * [magento/magento2#13528](https://github.com/magento/magento2/pull/13528) -- Fix for #12081: missing translations in the js-translations.json (by @mattijv) + * [magento/magento2#13563](https://github.com/magento/magento2/pull/13563) -- magento/magento2#11252: fix adminhtml file attribute edit form (by @Mkennethsmith) + * [magento/magento2#13551](https://github.com/magento/magento2/pull/13551) -- Fix json encoded attribute backend type to not encode attribute value multiple times (by @tkotosz) + * [magento/magento2#12843](https://github.com/magento/magento2/pull/12843) -- Display a more meaningful error message in case of misspelt module name (by @JanisE) + * [magento/magento2#13438](https://github.com/magento/magento2/pull/13438) -- Product image builder - Override attributes when builder used multiple times (by @ihor-sviziev) + * [magento/magento2#13596](https://github.com/magento/magento2/pull/13596) -- Fix adding values to system variable collection (by @mszydlo) + * [magento/magento2#13614](https://github.com/magento/magento2/pull/13614) -- Show redirect_to_base config in store scope (by @JeroenVanLeusden) + * [magento/magento2#11504](https://github.com/magento/magento2/pull/11504) -- Add MagentoStyle as Console Input/output helper object... (by @wesleywmd) + * [magento/magento2#13587](https://github.com/magento/magento2/pull/13587) -- Show maintenance IP-address without commas (by @barryvdh) + * [magento/magento2#13679](https://github.com/magento/magento2/pull/13679) -- Update StorageInterface.php (by @davidangel) + * [magento/magento2#13663](https://github.com/magento/magento2/pull/13663) -- Refactoring: remove unuseful temporary variable (by @real34) + * [magento/magento2#13698](https://github.com/magento/magento2/pull/13698) -- [Travis Test Fix] Add MagentoStyle as Console Input/output (by @magento-engcom-team) + * [magento/magento2#13586](https://github.com/magento/magento2/pull/13586) -- Add option to add IP address to existing list (by @barryvdh) + * [magento/magento2#13643](https://github.com/magento/magento2/pull/13643) -- Fixes #12791 - Use a selector to only select the correct tax rate sel… (by @hostep) + * [magento/magento2#13661](https://github.com/magento/magento2/pull/13661) -- Typo (address not addres) (by @srenon) + * [magento/magento2#13678](https://github.com/magento/magento2/pull/13678) -- Add RewriteBase directive template in .htaccess file into pub/static folder (by @ccasciotti) + * [magento/magento2#13740](https://github.com/magento/magento2/pull/13740) -- Display a more meaningful error message in case of misspelt module name unit test. (by @nmalevanec) + * [magento/magento2#13742](https://github.com/magento/magento2/pull/13742) -- Fix adding values to system variable collection unit test. (by @nmalevanec) + * [magento/magento2#13761](https://github.com/magento/magento2/pull/13761) -- Fix bug Magento 2.2.2 password reset strength meter #13429 (by @aoldoni) + * [magento/magento2#13759](https://github.com/magento/magento2/pull/13759) -- Add ObserverInterface to the api (by @fooman) + * [magento/magento2#13770](https://github.com/magento/magento2/pull/13770) -- Remove not-allowed currencies from the currencies dropdown in Setup (by @r-martins) + * [magento/magento2#12749](https://github.com/magento/magento2/pull/12749) -- Grid filtration doesn't work for mysql special characters (by @laconica-sergey) + * [magento/magento2#13280](https://github.com/magento/magento2/pull/13280) -- Add option "lock-config" for shell command "config:set" (by @avstudnitz) + * [magento/magento2#13584](https://github.com/magento/magento2/pull/13584) -- Ensure DeploymentConfig Reader always returns an array (by @barryvdh) + * [magento/magento2#13680](https://github.com/magento/magento2/pull/13680) -- Cast handling fee to float (by @schmengler) + * [magento/magento2#13762](https://github.com/magento/magento2/pull/13762) -- Remove forced setting of cache_lifetime to false in constructor and set default cache_lifetime to 3600 (by @zolat) + * [magento/magento2#12564](https://github.com/magento/magento2/pull/12564) -- Add visibility and status filter to category product grid (by @peterjaap) + * [magento/magento2#13682](https://github.com/magento/magento2/pull/13682) -- [Backport-2.2] of PR-#10935 Fix LowStock report in All Websites view (by @gwharton) + * [magento/magento2#13700](https://github.com/magento/magento2/pull/13700) -- Fix faulty admin spinner animation (by @RNanoware) + * [magento/magento2#13777](https://github.com/magento/magento2/pull/13777) -- Fix #13315. Mobile 'Payments methods' step looks bad on mobile (by @Frodigo) + * [magento/magento2#13811](https://github.com/magento/magento2/pull/13811) -- Added missing event parameter for proxy function on the search form submit (by @koenner01) + * [magento/magento2#13816](https://github.com/magento/magento2/pull/13816) -- Add @api annotation to block argument marker interface (by @Vinai) + * [magento/magento2#13830](https://github.com/magento/magento2/pull/13830) -- Minicart should require dropdownDialog (by @amenk) + * [magento/magento2#13038](https://github.com/magento/magento2/pull/13038) -- Default Welcome message is broken on storefront with enabled translate-inline (by @pareshpansuriya) + * [magento/magento2#13567](https://github.com/magento/magento2/pull/13567) -- Add integration tests for product urls rewrite generation (by @adrien-louis-r) + * [magento/magento2#13787](https://github.com/magento/magento2/pull/13787) -- Issue-13768 Fixed error messages on admin user account page after redirect for force password change (by @nuzil) + * [magento/magento2#13817](https://github.com/magento/magento2/pull/13817) -- Allow changing head and body element through xml layout updates (by @cedricziel) + * [magento/magento2#13828](https://github.com/magento/magento2/pull/13828) -- Inconsistent Redirect in Admin Notification Controller (by @chickenland) + * [magento/magento2#13844](https://github.com/magento/magento2/pull/13844) -- Fix issue 13827 (by @julienanquetil) + * [magento/magento2#13897](https://github.com/magento/magento2/pull/13897) -- Fix typo in securityCheckers array (by @pmclain) + * [magento/magento2#13796](https://github.com/magento/magento2/pull/13796) -- Save CMS Block using repository (by @JeroenVanLeusden) + * [magento/magento2#13814](https://github.com/magento/magento2/pull/13814) -- Load CMS Page using repository in save action (by @JeroenVanLeusden) + * [magento/magento2#11513](https://github.com/magento/magento2/pull/11513) -- Modify Report processor to return 500 (by @andrewhowdencom) + * [magento/magento2#13914](https://github.com/magento/magento2/pull/13914) -- Pass Expected Data Type in backgroundColor Call (2.2) (by @northernco) + * [magento/magento2#13217](https://github.com/magento/magento2/pull/13217) -- Fix JS address converter function from mutating its argument (by @vaaralav) + * [magento/magento2#13641](https://github.com/magento/magento2/pull/13641) -- Add missing implementation for applySortOrder() (by @schmengler) + * [magento/magento2#13709](https://github.com/magento/magento2/pull/13709) -- Changes static content deploy log levels verbosity (by @hostep) + * [magento/magento2#13750](https://github.com/magento/magento2/pull/13750) -- Less clean up (by @Karlasa) + * [magento/magento2#13861](https://github.com/magento/magento2/pull/13861) -- Solved this issue : Drop down values are not showing in catalog produ… (by @hiren-wagento) + * [magento/magento2#13930](https://github.com/magento/magento2/pull/13930) -- #13899 Solve Canada Zip Code pattern (by @tadeobarranco) + * [magento/magento2#13966](https://github.com/magento/magento2/pull/13966) -- Setup Lists - Make allowedCurrencies property private (by @ihor-sviziev) + 2.2.2 ============= * GitHub issues: diff --git a/README.md b/README.md index 87c98d4bcb437..99fe14cbe33df 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/magento/magento2?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/magento-2/localized.png)](https://crowdin.com/project/magento-2)

Welcome

-Welcome to Magento 2 installation! We're glad you chose to install Magento 2, a cutting edge, feature-rich eCommerce solution that gets results. +Welcome to Magento 2 installation! We're glad you chose to install Magento 2, a cutting-edge, feature-rich eCommerce solution that gets results. ## Magento system requirements [Magento system requirements](http://devdocs.magento.com/guides/v2.2/install-gde/system-requirements2.html) @@ -11,7 +11,6 @@ Welcome to Magento 2 installation! We're glad you chose to install Magento 2, a ## Install Magento To install Magento, see either: -* [Magento DevBox](https://magento.com/tech-resources/download), the easiest way to get started with Magento. * [Installation guide](http://devdocs.magento.com/guides/v2.2/install-gde/bk-install-guide.html)

Contributing to the Magento 2 code base

@@ -28,6 +27,19 @@ To suggest documentation improvements, click [here][4]. [3]: [4]: +

Community Maintainers

+The members of this team have been recognized for their outstanding commitment to maintaining and improving Magento. Magento has granted them permission to accept, merge, and reject pull requests, as well as review issues, and thanks these Community Maintainers for their valuable contributions. + + + + + +

Top Contributors

+Magento is thankful for any contribution that can improve our code base, documentation or increase test coverage. We always recognize our most active members, as their contributions are the foundation of the Magento Open Source platform. + + + +

Labels applied by the Magento team

| Label | Description | diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php index c332440276083..6088afbc2e1a4 100644 --- a/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php +++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php @@ -59,8 +59,10 @@ public function execute() if (empty($result)) { $result[] = [ 'severity' => (string)\Magento\Framework\Notification\MessageInterface::SEVERITY_NOTICE, - 'text' => 'You have viewed and resolved all recent system notices. ' - . 'Please refresh the web page to clear the notice alert.', + 'text' => __( + 'You have viewed and resolved all recent system notices. ' + . 'Please refresh the web page to clear the notice alert.' + ) ]; } $this->getResponse()->representJson($this->jsonHelper->jsonEncode($result)); diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json index 59a3845cbd4b7..c0c6be46ce769 100644 --- a/app/code/Magento/AdminNotification/composer.json +++ b/app/code/Magento/AdminNotification/composer.json @@ -2,7 +2,7 @@ "name": "magento/module-admin-notification", "description": "N/A", "require": { - "php": "7.0.2|7.0.4|~7.0.6|~7.1.0", + "php": "~7.0.13|~7.1.0", "magento/module-store": "100.2.*", "magento/module-backend": "100.2.*", "magento/module-media-storage": "100.2.*", @@ -11,7 +11,7 @@ "lib-libxml": "*" }, "type": "magento2-module", - "version": "100.2.1", + "version": "100.2.2", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/AdminNotification/i18n/en_US.csv b/app/code/Magento/AdminNotification/i18n/en_US.csv index 16c5abb9db0d2..db5a4c9254814 100644 --- a/app/code/Magento/AdminNotification/i18n/en_US.csv +++ b/app/code/Magento/AdminNotification/i18n/en_US.csv @@ -48,3 +48,4 @@ Severity,Severity "Date Added","Date Added" Message,Message Actions,Actions +"You have viewed and resolved all recent system notices. Please refresh the web page to clear the notice alert.","You have viewed and resolved all recent system notices. Please refresh the web page to clear the notice alert." diff --git a/app/code/Magento/AdminNotification/view/adminhtml/templates/system/messages/popup.phtml b/app/code/Magento/AdminNotification/view/adminhtml/templates/system/messages/popup.phtml index a97293547e132..d654504a41e5c 100644 --- a/app/code/Magento/AdminNotification/view/adminhtml/templates/system/messages/popup.phtml +++ b/app/code/Magento/AdminNotification/view/adminhtml/templates/system/messages/popup.phtml @@ -19,20 +19,12 @@ - + \ No newline at end of file diff --git a/app/code/Magento/AdminNotification/view/adminhtml/web/js/system/messages/popup.js b/app/code/Magento/AdminNotification/view/adminhtml/web/js/system/messages/popup.js new file mode 100644 index 0000000000000..f3f6a5fb1a123 --- /dev/null +++ b/app/code/Magento/AdminNotification/view/adminhtml/web/js/system/messages/popup.js @@ -0,0 +1,24 @@ +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. +*/ + +define([ + 'jquery', + 'Magento_Ui/js/modal/modal' +], function ($) { + 'use strict'; + + return function (data, element) { + if (this.modal) { + this.modal.html($(element).html()); + } else { + this.modal = $(element).modal({ + modalClass: data.class, + type: 'popup', + buttons: [] + }); + } + this.modal.modal('openModal'); + }; +}); diff --git a/app/code/Magento/AdvancedPricingImportExport/composer.json b/app/code/Magento/AdvancedPricingImportExport/composer.json index 79e6e2d368736..a3d6e36e66a0f 100644 --- a/app/code/Magento/AdvancedPricingImportExport/composer.json +++ b/app/code/Magento/AdvancedPricingImportExport/composer.json @@ -2,7 +2,7 @@ "name": "magento/module-advanced-pricing-import-export", "description": "N/A", "require": { - "php": "7.0.2|7.0.4|~7.0.6|~7.1.0", + "php": "~7.0.13|~7.1.0", "magento/module-catalog": "102.0.*", "magento/module-catalog-inventory": "100.2.*", "magento/module-eav": "101.0.*", @@ -13,7 +13,7 @@ "magento/framework": "101.0.*" }, "type": "magento2-module", - "version": "100.2.1", + "version": "100.2.2", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Analytics/composer.json b/app/code/Magento/Analytics/composer.json index 349e5f3c08c4c..2e9b4bf158321 100644 --- a/app/code/Magento/Analytics/composer.json +++ b/app/code/Magento/Analytics/composer.json @@ -2,7 +2,7 @@ "name": "magento/module-analytics", "description": "N/A", "require": { - "php": "7.0.2|7.0.4|~7.0.6|~7.1.0", + "php": "~7.0.13|~7.1.0", "magento/module-backend": "100.2.*", "magento/module-config": "101.0.*", "magento/module-integration": "100.2.*", @@ -10,7 +10,7 @@ "magento/framework": "101.0.*" }, "type": "magento2-module", - "version": "100.2.0", + "version": "100.2.1", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json index c0b0f9c6b13df..22483b7961841 100644 --- a/app/code/Magento/Authorization/composer.json +++ b/app/code/Magento/Authorization/composer.json @@ -2,7 +2,7 @@ "name": "magento/module-authorization", "description": "Authorization module provides access to Magento ACL functionality.", "require": { - "php": "7.0.2|7.0.4|~7.0.6|~7.1.0", + "php": "~7.0.13|~7.1.0", "magento/module-backend": "100.2.*", "magento/framework": "101.0.*" }, diff --git a/app/code/Magento/Authorizenet/Model/Directpost.php b/app/code/Magento/Authorizenet/Model/Directpost.php index 0f10fd633cb5b..de567a8895f7e 100644 --- a/app/code/Magento/Authorizenet/Model/Directpost.php +++ b/app/code/Magento/Authorizenet/Model/Directpost.php @@ -5,10 +5,9 @@ */ namespace Magento\Authorizenet\Model; -use Magento\Framework\HTTP\ZendClientFactory; +use Magento\Framework\App\ObjectManager; use Magento\Payment\Model\Method\ConfigInterface; use Magento\Payment\Model\Method\TransparentInterface; -use Magento\Sales\Model\Order\Email\Sender\OrderSender; /** * Authorize.net DirectPost payment method model. @@ -102,7 +101,7 @@ class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements Tra protected $response; /** - * @var OrderSender + * @var \Magento\Sales\Model\Order\Email\Sender\OrderSender */ protected $orderSender; @@ -123,6 +122,16 @@ class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements Tra */ private $psrLogger; + /** + * @var \Magento\Sales\Api\PaymentFailuresInterface + */ + private $paymentFailures; + + /** + * @var \Magento\Sales\Model\Order + */ + private $order; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry @@ -141,11 +150,12 @@ class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements Tra * @param \Magento\Sales\Model\OrderFactory $orderFactory * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository - * @param OrderSender $orderSender + * @param \Magento\Sales\Model\Order\Email\Sender\OrderSender $orderSender * @param \Magento\Sales\Api\TransactionRepositoryInterface $transactionRepository * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection * @param array $data + * @param \Magento\Sales\Api\PaymentFailuresInterface|null $paymentFailures * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( @@ -162,7 +172,7 @@ public function __construct( \Magento\Authorizenet\Model\Directpost\Request\Factory $requestFactory, \Magento\Authorizenet\Model\Directpost\Response\Factory $responseFactory, TransactionService $transactionService, - ZendClientFactory $httpClientFactory, + \Magento\Framework\HTTP\ZendClientFactory $httpClientFactory, \Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, @@ -170,7 +180,8 @@ public function __construct( \Magento\Sales\Api\TransactionRepositoryInterface $transactionRepository, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, - array $data = [] + array $data = [], + \Magento\Sales\Api\PaymentFailuresInterface $paymentFailures = null ) { $this->orderFactory = $orderFactory; $this->storeManager = $storeManager; @@ -179,6 +190,8 @@ public function __construct( $this->orderSender = $orderSender; $this->transactionRepository = $transactionRepository; $this->_code = static::METHOD_CODE; + $this->paymentFailures = $paymentFailures ? : ObjectManager::getInstance() + ->get(\Magento\Sales\Api\PaymentFailuresInterface::class); parent::__construct( $context, @@ -561,13 +574,10 @@ public function process(array $responseData) $this->validateResponse(); $response = $this->getResponse(); - //operate with order - $orderIncrementId = $response->getXInvoiceNum(); $responseText = $this->dataHelper->wrapGatewayError($response->getXResponseReasonText()); $isError = false; - if ($orderIncrementId) { - /* @var $order \Magento\Sales\Model\Order */ - $order = $this->orderFactory->create()->loadByIncrementId($orderIncrementId); + if ($this->getOrderIncrementId()) { + $order = $this->getOrderFromResponse(); //check payment method $payment = $order->getPayment(); if (!$payment || $payment->getMethod() != $this->getCode()) { @@ -632,9 +642,10 @@ public function checkResponseCode() return true; case self::RESPONSE_CODE_DECLINED: case self::RESPONSE_CODE_ERROR: - throw new \Magento\Framework\Exception\LocalizedException( - $this->dataHelper->wrapGatewayError($this->getResponse()->getXResponseReasonText()) - ); + $errorMessage = $this->dataHelper->wrapGatewayError($this->getResponse()->getXResponseReasonText()); + $order = $this->getOrderFromResponse(); + $this->paymentFailures->handle((int)$order->getQuoteId(), $errorMessage); + throw new \Magento\Framework\Exception\LocalizedException($errorMessage); default: throw new \Magento\Framework\Exception\LocalizedException( __('There was a payment authorization error.') @@ -988,12 +999,40 @@ protected function getTransactionResponse($transactionId) private function getPsrLogger() { if (null === $this->psrLogger) { - $this->psrLogger = \Magento\Framework\App\ObjectManager::getInstance() + $this->psrLogger = ObjectManager::getInstance() ->get(\Psr\Log\LoggerInterface::class); } return $this->psrLogger; } + /** + * Fetch order by increment id from response. + * + * @return \Magento\Sales\Model\Order + */ + private function getOrderFromResponse(): \Magento\Sales\Model\Order + { + if (!$this->order) { + $this->order = $this->orderFactory->create(); + + if ($incrementId = $this->getOrderIncrementId()) { + $this->order = $this->order->loadByIncrementId($incrementId); + } + } + + return $this->order; + } + + /** + * Fetch order increment id from response. + * + * @return string + */ + private function getOrderIncrementId(): string + { + return $this->getResponse()->getXInvoiceNum(); + } + /** * Checks if filter action is Report Only. Transactions that trigger this filter are processed as normal, * but are also reported in the Merchant Interface as triggering this filter. diff --git a/app/code/Magento/Authorizenet/Test/Unit/Model/DirectpostTest.php b/app/code/Magento/Authorizenet/Test/Unit/Model/DirectpostTest.php index dbb6ac8333c14..26d96b9bc2d90 100644 --- a/app/code/Magento/Authorizenet/Test/Unit/Model/DirectpostTest.php +++ b/app/code/Magento/Authorizenet/Test/Unit/Model/DirectpostTest.php @@ -5,6 +5,7 @@ */ namespace Magento\Authorizenet\Test\Unit\Model; +use Magento\Sales\Api\PaymentFailuresInterface; use Magento\Framework\Simplexml\Element; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; use Magento\Authorizenet\Model\Directpost; @@ -74,6 +75,14 @@ class DirectpostTest extends \PHPUnit\Framework\TestCase */ protected $requestFactory; + /** + * @var PaymentFailuresInterface|\PHPUnit_Framework_MockObject_MockObject + */ + private $paymentFailures; + + /** + * @inheritdoc + */ protected function setUp() { $this->scopeConfigMock = $this->getMockBuilder(\Magento\Framework\App\Config\ScopeConfigInterface::class) @@ -104,6 +113,12 @@ protected function setUp() ->setMethods(['getTransactionDetails']) ->getMock(); + $this->paymentFailures = $this->getMockBuilder( + PaymentFailuresInterface::class + ) + ->disableOriginalConstructor() + ->getMock(); + $this->requestFactory = $this->getRequestFactoryMock(); $httpClientFactoryMock = $this->getHttpClientFactoryMock(); @@ -117,7 +132,8 @@ protected function setUp() 'responseFactory' => $this->responseFactoryMock, 'transactionRepository' => $this->transactionRepositoryMock, 'transactionService' => $this->transactionServiceMock, - 'httpClientFactory' => $httpClientFactoryMock + 'httpClientFactory' => $httpClientFactoryMock, + 'paymentFailures' => $this->paymentFailures, ] ); } @@ -313,12 +329,16 @@ public function checkResponseCodeSuccessDataProvider() } /** - * @param bool $responseCode + * Checks response failures behaviour. + * + * @param int $responseCode + * @param int $failuresHandlerCalls + * @return void * * @expectedException \Magento\Framework\Exception\LocalizedException * @dataProvider checkResponseCodeFailureDataProvider */ - public function testCheckResponseCodeFailure($responseCode) + public function testCheckResponseCodeFailure(int $responseCode, int $failuresHandlerCalls) { $reasonText = 'reason text'; @@ -333,18 +353,35 @@ public function testCheckResponseCodeFailure($responseCode) ->with($reasonText) ->willReturn(__('Gateway error: %1', $reasonText)); + $orderMock = $this->getMockBuilder(Order::class) + ->disableOriginalConstructor() + ->getMock(); + + $orderMock->expects($this->exactly($failuresHandlerCalls)) + ->method('getQuoteId') + ->willReturn(1); + + $this->paymentFailures->expects($this->exactly($failuresHandlerCalls)) + ->method('handle') + ->with(1); + + $reflection = new \ReflectionClass($this->directpost); + $order = $reflection->getProperty('order'); + $order->setAccessible(true); + $order->setValue($this->directpost, $orderMock); + $this->directpost->checkResponseCode(); } /** * @return array */ - public function checkResponseCodeFailureDataProvider() + public function checkResponseCodeFailureDataProvider(): array { return [ - ['responseCode' => Directpost::RESPONSE_CODE_DECLINED], - ['responseCode' => Directpost::RESPONSE_CODE_ERROR], - ['responseCode' => 999999] + ['responseCode' => Directpost::RESPONSE_CODE_DECLINED, 1], + ['responseCode' => Directpost::RESPONSE_CODE_ERROR, 1], + ['responseCode' => 999999, 0], ]; } diff --git a/app/code/Magento/Authorizenet/composer.json b/app/code/Magento/Authorizenet/composer.json index 1022bd47a5786..c389a1c6c4dfa 100644 --- a/app/code/Magento/Authorizenet/composer.json +++ b/app/code/Magento/Authorizenet/composer.json @@ -2,7 +2,7 @@ "name": "magento/module-authorizenet", "description": "N/A", "require": { - "php": "7.0.2|7.0.4|~7.0.6|~7.1.0", + "php": "~7.0.13|~7.1.0", "magento/module-sales": "101.0.*", "magento/module-store": "100.2.*", "magento/module-quote": "101.0.*", diff --git a/app/code/Magento/Backend/App/AbstractAction.php b/app/code/Magento/Backend/App/AbstractAction.php index 99ee86b2b6407..3f658ee90bf4e 100644 --- a/app/code/Magento/Backend/App/AbstractAction.php +++ b/app/code/Magento/Backend/App/AbstractAction.php @@ -217,6 +217,7 @@ public function dispatch(\Magento\Framework\App\RequestInterface $request) $this->_view->loadLayout(['default', 'adminhtml_denied'], true, true, false); $this->_view->renderLayout(); $this->_request->setDispatched(true); + return $this->_response; } @@ -226,6 +227,11 @@ public function dispatch(\Magento\Framework\App\RequestInterface $request) $this->_processLocaleSettings(); + // Need to preload isFirstPageAfterLogin (see https://github.com/magento/magento2/issues/15510) + if ($this->_auth->isLoggedIn()) { + $this->_auth->getAuthStorage()->isFirstPageAfterLogin(); + } + return parent::dispatch($request); } diff --git a/app/code/Magento/Backend/Block/Dashboard.php b/app/code/Magento/Backend/Block/Dashboard.php index 8d0a061621fe3..e1e87d8d4c5a3 100644 --- a/app/code/Magento/Backend/Block/Dashboard.php +++ b/app/code/Magento/Backend/Block/Dashboard.php @@ -20,7 +20,7 @@ class Dashboard extends \Magento\Backend\Block\Template /** * @var string */ - protected $_template = 'dashboard/index.phtml'; + protected $_template = 'Magento_Backend::dashboard/index.phtml'; /** * @return void diff --git a/app/code/Magento/Backend/Block/Dashboard/Graph.php b/app/code/Magento/Backend/Block/Dashboard/Graph.php index 301dffbdc4987..8e238ccab44cb 100644 --- a/app/code/Magento/Backend/Block/Dashboard/Graph.php +++ b/app/code/Magento/Backend/Block/Dashboard/Graph.php @@ -90,7 +90,7 @@ class Graph extends \Magento\Backend\Block\Dashboard\AbstractDashboard /** * @var string */ - protected $_template = 'dashboard/graph.phtml'; + protected $_template = 'Magento_Backend::dashboard/graph.phtml'; /** * Adminhtml dashboard data diff --git a/app/code/Magento/Backend/Block/Dashboard/Grid.php b/app/code/Magento/Backend/Block/Dashboard/Grid.php index 602b5e414d538..f7f9a79f17eb0 100644 --- a/app/code/Magento/Backend/Block/Dashboard/Grid.php +++ b/app/code/Magento/Backend/Block/Dashboard/Grid.php @@ -17,7 +17,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid\Extended /** * @var string */ - protected $_template = 'dashboard/grid.phtml'; + protected $_template = 'Magento_Backend::dashboard/grid.phtml'; /** * Setting default for every grid on dashboard diff --git a/app/code/Magento/Backend/Block/Dashboard/Sales.php b/app/code/Magento/Backend/Block/Dashboard/Sales.php index d0f056230bcd1..6d7a4d6458a8e 100644 --- a/app/code/Magento/Backend/Block/Dashboard/Sales.php +++ b/app/code/Magento/Backend/Block/Dashboard/Sales.php @@ -15,7 +15,7 @@ class Sales extends \Magento\Backend\Block\Dashboard\Bar /** * @var string */ - protected $_template = 'dashboard/salebar.phtml'; + protected $_template = 'Magento_Backend::dashboard/salebar.phtml'; /** * @var \Magento\Framework\Module\Manager diff --git a/app/code/Magento/Backend/Block/Dashboard/Totals.php b/app/code/Magento/Backend/Block/Dashboard/Totals.php index 96ae6dd636380..4dcda3677584c 100644 --- a/app/code/Magento/Backend/Block/Dashboard/Totals.php +++ b/app/code/Magento/Backend/Block/Dashboard/Totals.php @@ -16,7 +16,7 @@ class Totals extends \Magento\Backend\Block\Dashboard\Bar /** * @var string */ - protected $_template = 'dashboard/totalbar.phtml'; + protected $_template = 'Magento_Backend::dashboard/totalbar.phtml'; /** * @var \Magento\Framework\Module\Manager diff --git a/app/code/Magento/Backend/Block/GlobalSearch.php b/app/code/Magento/Backend/Block/GlobalSearch.php index 9af4e9faef761..b45eb84cdaee9 100644 --- a/app/code/Magento/Backend/Block/GlobalSearch.php +++ b/app/code/Magento/Backend/Block/GlobalSearch.php @@ -73,6 +73,7 @@ public function getWidgetInitOptions() 'filterProperty' => 'name', 'preventClickPropagation' => false, 'minLength' => 2, + 'submitInputOnEnter' => false, ] ]; } diff --git a/app/code/Magento/Backend/Block/Page/Copyright.php b/app/code/Magento/Backend/Block/Page/Copyright.php index 062497d6a8304..a1b61352930b5 100644 --- a/app/code/Magento/Backend/Block/Page/Copyright.php +++ b/app/code/Magento/Backend/Block/Page/Copyright.php @@ -18,5 +18,5 @@ class Copyright extends \Magento\Backend\Block\Template * * @var string */ - protected $_template = 'page/copyright.phtml'; + protected $_template = 'Magento_Backend::page/copyright.phtml'; } diff --git a/app/code/Magento/Backend/Block/Page/Footer.php b/app/code/Magento/Backend/Block/Page/Footer.php index 368869b79e15c..3d1570e5ddfe7 100644 --- a/app/code/Magento/Backend/Block/Page/Footer.php +++ b/app/code/Magento/Backend/Block/Page/Footer.php @@ -17,7 +17,7 @@ class Footer extends \Magento\Backend\Block\Template /** * @var string */ - protected $_template = 'page/footer.phtml'; + protected $_template = 'Magento_Backend::page/footer.phtml'; /** * @var \Magento\Framework\App\ProductMetadataInterface diff --git a/app/code/Magento/Backend/Block/Page/Header.php b/app/code/Magento/Backend/Block/Page/Header.php index b7ed05ce58e95..c2c5f7472b370 100644 --- a/app/code/Magento/Backend/Block/Page/Header.php +++ b/app/code/Magento/Backend/Block/Page/Header.php @@ -18,7 +18,7 @@ class Header extends \Magento\Backend\Block\Template /** * @var string */ - protected $_template = 'page/header.phtml'; + protected $_template = 'Magento_Backend::page/header.phtml'; /** * Backend data diff --git a/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset.php b/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset.php index 2f9b73f0ae037..6fe8416784c2e 100644 --- a/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset.php +++ b/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset.php @@ -25,7 +25,7 @@ class Fieldset extends \Magento\Backend\Block\Template implements RendererInterf /** * @var string */ - protected $_template = 'store/switcher/form/renderer/fieldset.phtml'; + protected $_template = 'Magento_Backend::store/switcher/form/renderer/fieldset.phtml'; /** * Retrieve an element diff --git a/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset/Element.php b/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset/Element.php index ddd1f1a9178cd..71d4db6849bd2 100644 --- a/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset/Element.php +++ b/app/code/Magento/Backend/Block/Store/Switcher/Form/Renderer/Fieldset/Element.php @@ -23,7 +23,7 @@ class Element extends \Magento\Backend\Block\Widget\Form\Renderer\Fieldset\Eleme /** * @var string */ - protected $_template = 'store/switcher/form/renderer/fieldset/element.phtml'; + protected $_template = 'Magento_Backend::store/switcher/form/renderer/fieldset/element.phtml'; /** * Retrieve an element diff --git a/app/code/Magento/Backend/Block/System/Store/Grid/Render/Group.php b/app/code/Magento/Backend/Block/System/Store/Grid/Render/Group.php index 59657f38465d7..3d7154eb20f92 100644 --- a/app/code/Magento/Backend/Block/System/Store/Grid/Render/Group.php +++ b/app/code/Magento/Backend/Block/System/Store/Grid/Render/Group.php @@ -27,6 +27,7 @@ public function render(\Magento\Framework\DataObject $row) $this->getUrl('adminhtml/*/editGroup', ['group_id' => $row->getGroupId()]) . '">' . $this->escapeHtml($row->getData($this->getColumn()->getIndex())) . - ''; + '
' + . '(' . __('Code') . ': ' . $row->getGroupCode() . ')'; } } diff --git a/app/code/Magento/Backend/Block/System/Store/Grid/Render/Store.php b/app/code/Magento/Backend/Block/System/Store/Grid/Render/Store.php index 23b2de683a958..9cfc8bfc52691 100644 --- a/app/code/Magento/Backend/Block/System/Store/Grid/Render/Store.php +++ b/app/code/Magento/Backend/Block/System/Store/Grid/Render/Store.php @@ -27,6 +27,7 @@ public function render(\Magento\Framework\DataObject $row) $this->getUrl('adminhtml/*/editStore', ['store_id' => $row->getStoreId()]) . '">' . $this->escapeHtml($row->getData($this->getColumn()->getIndex())) . - ''; + '
' . + '(' . __('Code') . ': ' . $row->getStoreCode() . ')'; } } diff --git a/app/code/Magento/Backend/Block/System/Store/Grid/Render/Website.php b/app/code/Magento/Backend/Block/System/Store/Grid/Render/Website.php index 913e2c903d20c..487eb4f8acfda 100644 --- a/app/code/Magento/Backend/Block/System/Store/Grid/Render/Website.php +++ b/app/code/Magento/Backend/Block/System/Store/Grid/Render/Website.php @@ -24,6 +24,7 @@ public function render(\Magento\Framework\DataObject $row) $this->getUrl('adminhtml/*/editWebsite', ['website_id' => $row->getWebsiteId()]) . '">' . $this->escapeHtml($row->getData($this->getColumn()->getIndex())) . - ''; + '
' . + '(' . __('Code') . ': ' . $row->getCode() . ')'; } } diff --git a/app/code/Magento/Backend/Block/Template.php b/app/code/Magento/Backend/Block/Template.php index d0f39b54c1492..477be0f82462b 100644 --- a/app/code/Magento/Backend/Block/Template.php +++ b/app/code/Magento/Backend/Block/Template.php @@ -17,10 +17,12 @@ * Example: * * - * My\Module\ViewModel\Custom + * My\Module\ViewModel\Custom * * * + * Your class object can then be accessed by doing $block->getViewModel() + * * @api * @SuppressWarnings(PHPMD.NumberOfChildren) * @since 100.0.2 diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Radio.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Radio.php index 2cbe264c5f396..479a2b6b20293 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Radio.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Radio.php @@ -31,8 +31,7 @@ public function getCondition() { if ($this->getValue()) { return $this->getColumn()->getValue(); - } else { - return [['neq' => $this->getColumn()->getValue()], ['is' => new \Zend_Db_Expr('NULL')]]; } + return [['neq' => $this->getColumn()->getValue()], ['is' => new \Zend_Db_Expr('NULL')]]; } } diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Currency.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Currency.php index ff0399e4f507f..b3f467ce37c88 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Currency.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Currency.php @@ -68,10 +68,7 @@ public function __construct( $this->_storeManager = $storeManager; $this->_currencyLocator = $currencyLocator; $this->_localeCurrency = $localeCurrency; - $defaultBaseCurrencyCode = $this->_scopeConfig->getValue( - \Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE, - 'default' - ); + $defaultBaseCurrencyCode = $currencyLocator->getDefaultCurrency($this->_request); $this->_defaultBaseCurrency = $currencyFactory->create()->load($defaultBaseCurrencyCode); } diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Massaction.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Massaction.php index 320713f8b57c4..a611e91f32f00 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Massaction.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Massaction.php @@ -65,7 +65,7 @@ public function render(\Magento\Framework\DataObject $row) */ protected function _getCheckboxHtml($value, $checked) { - $id = 'id_' . rand(0, 999); + $id = 'id_' . random_int(0, 999); $html = '