diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000000..17aa66c919eb5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Technical issue with the Magento 2 core components + +--- + + + +### Preconditions + +1. +2. + +### Steps to reproduce + +1. +2. + +### Expected result + +1. [Screenshots, logs or description] +2. + +### Actual result + +1. [Screenshots, logs or description] +2. diff --git a/.github/ISSUE_TEMPLATE/developer-experience-issue.md b/.github/ISSUE_TEMPLATE/developer-experience-issue.md new file mode 100644 index 0000000000000..a66b0c62ef8e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/developer-experience-issue.md @@ -0,0 +1,18 @@ +--- +name: Developer experience issue +about: Issues related to customization, extensibility, modularity + +--- + + + +### Summary + + +### Examples + + +### Proposed solution + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000000..de85da43b70fa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: Feature request +about: Please consider reporting directly to https://github.com/magento/community-features + +--- + + + +### Description + + +### Expected behavior + + +### Benefits + + +### Additional information + diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d71c2d727423..95772083f3a76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,500 @@ +2.2.6 +============= +* GitHub issues: + * [#13296](https://github.com/magento/magento2/issues/13296) -- Category name with special characters brakes in url rewrites category tree (fixed in [magento/magento2#13397](https://github.com/magento/magento2/pull/13397)) + * [#4788](https://github.com/magento/magento2/issues/4788) -- Wrong sitemap product url (fixed in [magento/magento2#14338](https://github.com/magento/magento2/pull/14338)) + * [#14669](https://github.com/magento/magento2/issues/14669) -- Css class "empty" is always present on minicart dropdown (fixed in [magento/magento2#14715](https://github.com/magento/magento2/pull/14715)) + * [#4389](https://github.com/magento/magento2/issues/4389) -- Widget cache error (fixed in [magento/magento2#12764](https://github.com/magento/magento2/pull/12764)) + * [#13765](https://github.com/magento/magento2/issues/13765) -- "cart" section data gets loaded 3 times on cart page (2.2.2) (fixed in [magento/magento2#14314](https://github.com/magento/magento2/pull/14314)) + * [#1821](https://github.com/magento/magento2/issues/1821) -- CSS load order incorrect using default_head_blocks.xml (fixed in [magento/magento2#14290](https://github.com/magento/magento2/pull/14290)) + * [#14692](https://github.com/magento/magento2/issues/14692) -- 'validate-grouped-qty' validation is meaningless (fixed in [magento/magento2#14752](https://github.com/magento/magento2/pull/14752)) + * [#11396](https://github.com/magento/magento2/issues/11396) -- app:config:dump locks every configuration setting no alternative to dump specific setting only (fixed in [magento/magento2#12410](https://github.com/magento/magento2/pull/12410)) + * [#9580](https://github.com/magento/magento2/issues/9580) -- Quote Attribute trigger_recollect causes a timeout (fixed in [magento/magento2#14719](https://github.com/magento/magento2/pull/14719)) + * [#13944](https://github.com/magento/magento2/issues/13944) -- Stores -> Terms and Conditions - No Store View shown (fixed in [magento/magento2#14546](https://github.com/magento/magento2/pull/14546)) + * [#5726](https://github.com/magento/magento2/issues/5726) -- Reset Password Email Issue on Multi Store from Admin (fixed in [magento/magento2#14800](https://github.com/magento/magento2/pull/14800)) + * [#14274](https://github.com/magento/magento2/issues/14274) -- Quick search fires error (fixed in [magento/magento2#14839](https://github.com/magento/magento2/pull/14839)) + * [#7861](https://github.com/magento/magento2/issues/7861) -- Using search in Admin panel, and choosing "% in Products" returns full catalog (fixed in [magento/magento2#12735](https://github.com/magento/magento2/pull/12735)) + * [#12193](https://github.com/magento/magento2/issues/12193) -- Catalog not filtered by admin search bar (fixed in [magento/magento2#12735](https://github.com/magento/magento2/pull/12735)) + * [#5768](https://github.com/magento/magento2/issues/5768) -- Magento 2.0.7 XML sitemap is not generated by schedule (fixed in [magento/magento2#14822](https://github.com/magento/magento2/pull/14822)) + * [#14855](https://github.com/magento/magento2/issues/14855) -- Adding an * to do a customer search. (fixed in [magento/magento2#14905](https://github.com/magento/magento2/pull/14905)) + * [#14869](https://github.com/magento/magento2/issues/14869) -- M 2.2.3 price per website - wrong price at backend by a create order after update (fixed in [magento/magento2#14904](https://github.com/magento/magento2/pull/14904)) + * [#10395](https://github.com/magento/magento2/issues/10395) -- REMOTE_IP gets saved partially when using IPV6 (fixed in [magento/magento2#14976](https://github.com/magento/magento2/pull/14976)) + * [#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/magento2#15020](https://github.com/magento/magento2/pull/15020)) + * [#15009](https://github.com/magento/magento2/issues/15009) -- [2.2.4] Gallery theme variables being ignored (fixed in [magento/magento2#15020](https://github.com/magento/magento2/pull/15020)) + * [#13460](https://github.com/magento/magento2/issues/13460) -- Allmethods config source model does not always report the full list of payment methods (fixed in [magento/magento2#15032](https://github.com/magento/magento2/pull/15032)) + * [#4301](https://github.com/magento/magento2/issues/4301) -- Hit fast twice F5 on checout page, customer loggs out automatically (fixed in [magento/magento2#14428](https://github.com/magento/magento2/pull/14428)) + * [#12362](https://github.com/magento/magento2/issues/12362) -- Concurrent (quick reload) requests on checkout cause cart to empty - related to session_regenerate_id (fixed in [magento/magento2#14428](https://github.com/magento/magento2/pull/14428)) + * [#13427](https://github.com/magento/magento2/issues/13427) -- [2.1.11] Add to cart, try to checkout, cart is empty but mini-cart has items. (fixed in [magento/magento2#14428](https://github.com/magento/magento2/pull/14428)) + * [#11354](https://github.com/magento/magento2/issues/11354) -- Merged CSS file name generation (fixed in [magento/magento2#15144](https://github.com/magento/magento2/pull/15144)) + * [#14104](https://github.com/magento/magento2/issues/14104) -- Admin Section is not visible in backend on production mode (fixed in [magento/magento2#15174](https://github.com/magento/magento2/pull/15174)) + * [#7399](https://github.com/magento/magento2/issues/7399) -- Modal UI: clickableOverlay option doesn't work (fixed in [magento/magento2#15172](https://github.com/magento/magento2/pull/15172)) + * [#14987](https://github.com/magento/magento2/issues/14987) -- Invisible breadcrumbs at product page when mageMenu widget is not used (fixed in [magento/magento2#15178](https://github.com/magento/magento2/pull/15178)) + * [#13530](https://github.com/magento/magento2/issues/13530) -- "Template file 'header.html' is not found" error while trying to save Design Configuration. (fixed in [magento/magento2#15137](https://github.com/magento/magento2/pull/15137)) + * [#14968](https://github.com/magento/magento2/issues/14968) -- Can't change the applied theme in 2.2.4 (fixed in [magento/magento2#15137](https://github.com/magento/magento2/pull/15137)) + * [#15121](https://github.com/magento/magento2/issues/15121) -- Magento 2.2.4 - Condition Category Chooser Crashes Page if Store has Several Nested Categories (fixed in [magento/magento2#15265](https://github.com/magento/magento2/pull/15265)) + * [#15334](https://github.com/magento/magento2/issues/15334) -- Purchased Order Form button should visible properly (fixed in [magento/magento2#15331](https://github.com/magento/magento2/pull/15331) and [magento/magento2#15372](https://github.com/magento/magento2/pull/15372)) + * [#15352](https://github.com/magento/magento2/issues/15352) -- Reformat the javascript code as per magento standards. (fixed in [magento/magento2#15343](https://github.com/magento/magento2/pull/15343)) + * [#15355](https://github.com/magento/magento2/issues/15355) -- Function is unnecessarily called multiple time (fixed in [magento/magento2#15346](https://github.com/magento/magento2/pull/15346)) + * [#15319](https://github.com/magento/magento2/issues/15319) -- misleading data-container in product list (fixed in [magento/magento2#15350](https://github.com/magento/magento2/pull/15350)) + * [#15354](https://github.com/magento/magento2/issues/15354) -- Refactor javascript code of button split widget call js component (fixed in [magento/magento2#15351](https://github.com/magento/magento2/pull/15351)) + * [#14941](https://github.com/magento/magento2/issues/14941) -- Unnecessary recalculation of product list pricing causes huge slowdowns (fixed in [magento/magento2#15089](https://github.com/magento/magento2/pull/15089)) + * [#14747](https://github.com/magento/magento2/issues/14747) -- Newsletter subscription confirmation message does not display after clicking link in email (fixed in [magento/magento2#15247](https://github.com/magento/magento2/pull/15247)) + * [#15037](https://github.com/magento/magento2/issues/15037) -- Product Details Page breadcrumbs cause syntax error on products containing quotes (fixed in [magento/magento2#15347](https://github.com/magento/magento2/pull/15347)) + * [#15118](https://github.com/magento/magento2/issues/15118) -- Responsive Design, Footers do not snap to bottom of screen on mobile devices (fixed in [magento/magento2#15353](https://github.com/magento/magento2/pull/15353) and [magento/magento2#17006](https://github.com/magento/magento2/pull/17006)) + * [#15192](https://github.com/magento/magento2/issues/15192) -- Module Manager module grid is not working Magento 2.2.4 (fixed in [magento/magento2#15211](https://github.com/magento/magento2/pull/15211)) + * [#13793](https://github.com/magento/magento2/issues/13793) -- Submitting search form (mini) with enter key fires event handlers bound by jquery twice (fixed in [magento/magento2#15340](https://github.com/magento/magento2/pull/15340)) + * [#15361](https://github.com/magento/magento2/issues/15361) -- Comments are not translated for Signifyd module. (fixed in [magento/magento2#15364](https://github.com/magento/magento2/pull/15364)) + * [#15356](https://github.com/magento/magento2/issues/15356) -- Refactore javascript for module URL rewrite (fixed in [magento/magento2#15422](https://github.com/magento/magento2/pull/15422)) + * [#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#15040](https://github.com/magento/magento2/pull/15040) and [magento/magento2#16599](https://github.com/magento/magento2/pull/16599)) + * [#4977](https://github.com/magento/magento2/issues/4977) -- Magnifier doesn't work with mode set to inner (fixed in [magento/magento2#15382](https://github.com/magento/magento2/pull/15382)) + * [#15469](https://github.com/magento/magento2/issues/15469) -- lib/web/mage/dropdowns.js fails when autoclose is set to true (fixed in [magento/magento2#15499](https://github.com/magento/magento2/pull/15499)) + * [#14153](https://github.com/magento/magento2/issues/14153) -- UI Component listing action column outside of screen when too many columns (fixed in [magento/magento2#15459](https://github.com/magento/magento2/pull/15459)) + * [#15467](https://github.com/magento/magento2/issues/15467) -- Cart does not load when Configuration product option is deleted and that option is in the cart (fixed in [magento/magento2#15468](https://github.com/magento/magento2/pull/15468)) + * [#15564](https://github.com/magento/magento2/issues/15564) -- 2.2.4 Created admin token has no access (fixed in [magento/magento2#15598](https://github.com/magento/magento2/pull/15598)) + * [#10346](https://github.com/magento/magento2/issues/10346) -- Deadlock occurs using REST API & OAuth 1.0a under high concurrency (fixed in [magento/magento2#13328](https://github.com/magento/magento2/pull/13328)) + * [#15348](https://github.com/magento/magento2/issues/15348) -- Multiple Payment Methods Enabled is giving error in console "Found 3 Elements with non - unique Id" (fixed in [magento/magento2#15349](https://github.com/magento/magento2/pull/15349)) + * [#13415](https://github.com/magento/magento2/issues/13415) -- Duplicated elements id in checkout page (fixed in [magento/magento2#15585](https://github.com/magento/magento2/pull/15585)) + * [#15590](https://github.com/magento/magento2/issues/15590) -- Typo in tests / setCateroryIds([]) (fixed in [magento/magento2#15621](https://github.com/magento/magento2/pull/15621)) + * [#7897](https://github.com/magento/magento2/issues/7897) -- Menu widget submenu alignment (fixed in [magento/magento2#15645](https://github.com/magento/magento2/pull/15645)) + * [#15565](https://github.com/magento/magento2/issues/15565) -- Getting wrong frontend-controller, when using storecodes in urls (fixed in [magento/magento2#15566](https://github.com/magento/magento2/pull/15566)) + * [#6058](https://github.com/magento/magento2/issues/6058) -- IE11 user login email validation fails if field has leading or trailing space (fixed in [magento/magento2#15365](https://github.com/magento/magento2/pull/15365) and [magento/magento2#16192](https://github.com/magento/magento2/pull/16192) and [magento/magento2#16564](https://github.com/magento/magento2/pull/16564) and [magento/magento2#16595](https://github.com/magento/magento2/pull/16595)) + * [#15210](https://github.com/magento/magento2/issues/15210) -- Advanced pricing pagination issue (fixed in [magento/magento2#15614](https://github.com/magento/magento2/pull/15614)) + * [#12221](https://github.com/magento/magento2/issues/12221) -- Google analytics pageview being triggered twice (fixed in [magento/magento2#15765](https://github.com/magento/magento2/pull/15765)) + * [#15510](https://github.com/magento/magento2/issues/15510) -- First PDF download / export after login (fixed in [magento/magento2#15539](https://github.com/magento/magento2/pull/15539)) + * [#15608](https://github.com/magento/magento2/issues/15608) -- Styling select by changing less variables in Luma theme doesn't work as expected (fixed in [magento/magento2#15734](https://github.com/magento/magento2/pull/15734)) + * [#14966](https://github.com/magento/magento2/issues/14966) -- Disabling product does not remove it from the flat index (fixed in [magento/magento2#15019](https://github.com/magento/magento2/pull/15019)) + * [#11477](https://github.com/magento/magento2/issues/11477) -- Magento REST API Schema (Swagger) is not compatible with Search Criteria (fixed in [magento/magento2#15322](https://github.com/magento/magento2/pull/15322)) + * [#14056](https://github.com/magento/magento2/issues/14056) -- Coupon API not working for guest user (fixed in [magento/magento2#15320](https://github.com/magento/magento2/pull/15320)) + * [#15660](https://github.com/magento/magento2/issues/15660) -- Wrong order amount on dashboard on Last orders listing when having more than one website with different currencies (fixed in [magento/magento2#15661](https://github.com/magento/magento2/pull/15661)) + * [#15588](https://github.com/magento/magento2/issues/15588) -- Images in XML sitemap are always linked to base store in multistore (fixed in [magento/magento2#15689](https://github.com/magento/magento2/pull/15689)) + * [#15822](https://github.com/magento/magento2/issues/15822) -- SQL Error: ambiguous column 'customer_group_id' in 'All customers' page in admin when extension attribute table is joined (fixed in [magento/magento2#15826](https://github.com/magento/magento2/pull/15826)) + * [#15323](https://github.com/magento/magento2/issues/15323) -- limiter float too generic (fixed in [magento/magento2#15878](https://github.com/magento/magento2/pull/15878)) + * [#14999](https://github.com/magento/magento2/issues/14999) -- Changing @tab-content__border variable has no effect in Blank theme (fixed in [magento/magento2#15914](https://github.com/magento/magento2/pull/15914)) + * [#15308](https://github.com/magento/magento2/issues/15308) -- extraneous margins on product list and product list items (fixed in [magento/magento2#15936](https://github.com/magento/magento2/pull/15936)) + * [#16047](https://github.com/magento/magento2/issues/16047) -- inline-block issue in name form (fixed in [magento/magento2#16048](https://github.com/magento/magento2/pull/16048)) + * [#15213](https://github.com/magento/magento2/issues/15213) -- Alignment & overlapping Issue on every Home page & category page of Hot Seller section (fixed in [magento/magento2#15893](https://github.com/magento/magento2/pull/15893)) + * [#15832](https://github.com/magento/magento2/issues/15832) -- No button-primary__font-weight (fixed in [magento/magento2#16012](https://github.com/magento/magento2/pull/16012)) + * [#13692](https://github.com/magento/magento2/issues/13692) -- In payment step of checkout I cannot unselect #billing-save-in-address-book checkbox in non-first payment method (fixed in [magento/magento2#15344](https://github.com/magento/magento2/pull/15344)) + * [#15255](https://github.com/magento/magento2/issues/15255) -- Customer who exceeded max login failures not able to login even after reset password (fixed in [magento/magento2#15534](https://github.com/magento/magento2/pull/15534)) + * [#15220](https://github.com/magento/magento2/issues/15220) -- 2.2.4: navigation dropdown caret icon missing (jQuery UI) (fixed in [magento/magento2#16082](https://github.com/magento/magento2/pull/16082)) + * [#16079](https://github.com/magento/magento2/issues/16079) -- Need information about translating issue (Magento Swatches Js) (fixed in [magento/magento2#16190](https://github.com/magento/magento2/pull/16190)) + * [#16184](https://github.com/magento/magento2/issues/16184) -- Argument 1 passed to Magento\Sales\Model\Order\Payment must be an instance of Magento\Framework\DataObject, none given (fixed in [magento/magento2#16194](https://github.com/magento/magento2/pull/16194)) + * [#8222](https://github.com/magento/magento2/issues/8222) -- Estimate Shipping and Tax Form not works due to js error in collapsible.js [proposed fix] (fixed in [magento/magento2#16213](https://github.com/magento/magento2/pull/16213)) + * [#15501](https://github.com/magento/magento2/issues/15501) -- M2.2.4 missing meta title tag and doesn't show product name if meta title is empty (fixed in [magento/magento2#15532](https://github.com/magento/magento2/pull/15532)) + * [#15627](https://github.com/magento/magento2/issues/15627) -- Product order in category changed after update to Magento 2.2.4 (fixed in [magento/magento2#15629](https://github.com/magento/magento2/pull/15629)) + * [#9307](https://github.com/magento/magento2/issues/9307) -- Color attribute taking swatch instead of Drop down option for configurable options, (fixed in [magento/magento2#12771](https://github.com/magento/magento2/pull/12771)) + * [#9923](https://github.com/magento/magento2/issues/9923) -- Upgrading to 2.1.7 changed dropdown attributes to swatches (fixed in [magento/magento2#12771](https://github.com/magento/magento2/pull/12771)) + * [#11403](https://github.com/magento/magento2/issues/11403) -- Product Attributes Not Updating on Frontend (fixed in [magento/magento2#12771](https://github.com/magento/magento2/pull/12771)) + * [#11703](https://github.com/magento/magento2/issues/11703) -- Changing Swatches to Drop-down does not remove swatches from existing products (fixed in [magento/magento2#12771](https://github.com/magento/magento2/pull/12771)) + * [#12695](https://github.com/magento/magento2/issues/12695) -- Unable to change attribute type from swatch to dropdown (fixed in [magento/magento2#12771](https://github.com/magento/magento2/pull/12771)) + * [#14895](https://github.com/magento/magento2/issues/14895) -- Change Password warning message appear two times (fixed in [magento/magento2#15774](https://github.com/magento/magento2/pull/15774)) + * [#15205](https://github.com/magento/magento2/issues/15205) -- Upgraded to Magento 2.2.4 from Magento 2.1.9 - Locale and Store Configuration issues 'Store View' Locale not being used on frontend, 'Default Config' Locale being used instead (fixed in [magento/magento2#15929](https://github.com/magento/magento2/pull/15929)) + * [#15245](https://github.com/magento/magento2/issues/15245) -- 2.2.4: Wrong home page loaded in multi store setup (fixed in [magento/magento2#15929](https://github.com/magento/magento2/pull/15929)) + * [#15345](https://github.com/magento/magento2/issues/15345) -- Template syntax in block file (fixed in [magento/magento2#15339](https://github.com/magento/magento2/pull/15339)) + * [#7379](https://github.com/magento/magento2/issues/7379) -- Calendar widget (jQuery UI DatePicker) with numberOfMonths = 2 or more (fixed in [magento/magento2#16279](https://github.com/magento/magento2/pull/16279)) + * [#16378](https://github.com/magento/magento2/issues/16378) -- Wrong placeholder for password field in the checkout page (fixed in [magento/magento2#16379](https://github.com/magento/magento2/pull/16379)) + * [#15218](https://github.com/magento/magento2/issues/15218) -- "Confirmation request" email is sent on customer's newsletter unsubscription (fixed in [magento/magento2#15464](https://github.com/magento/magento2/pull/15464)) + * [#14593](https://github.com/magento/magento2/issues/14593) -- Press Esc Key on modal generate a jquery UI error (fixed in [magento/magento2#16477](https://github.com/magento/magento2/pull/16477)) + * [#11717](https://github.com/magento/magento2/issues/11717) -- Wrong price amount on product page (fixed in [magento/magento2#15909](https://github.com/magento/magento2/pull/15909) and [magento/magento2#16590](https://github.com/magento/magento2/pull/16590)) + * [#16529](https://github.com/magento/magento2/issues/16529) -- Rewriting product listing widget block breaks its template rendering. (fixed in [magento/magento2#16530](https://github.com/magento/magento2/pull/16530)) + * [#15940](https://github.com/magento/magento2/issues/15940) -- Wrong end of month at Reports for Europe/Berlin time zone if month contains 31 day (fixed in [magento/magento2#16584](https://github.com/magento/magento2/pull/16584)) + * [#16174](https://github.com/magento/magento2/issues/16174) -- Admin tabs order not working properly (fixed in [magento/magento2#16175](https://github.com/magento/magento2/pull/16175)) + * [#16703](https://github.com/magento/magento2/issues/16703) -- User Agent Rules table headers do match content of rows. (fixed in [magento/magento2#16704](https://github.com/magento/magento2/pull/16704)) + * [#15848](https://github.com/magento/magento2/issues/15848) -- no navigation-level0-item__hover__color (fixed in [magento/magento2#16732](https://github.com/magento/magento2/pull/16732)) + * [#5067](https://github.com/magento/magento2/issues/5067) -- Custom option values do not save correctly (fixed in [magento/magento2#13569](https://github.com/magento/magento2/pull/13569)) + * [#14351](https://github.com/magento/magento2/issues/14351) -- Product import doesn't change `Enable Qty Increments` field (fixed in [magento/magento2#14379](https://github.com/magento/magento2/pull/14379)) + * [#16764](https://github.com/magento/magento2/issues/16764) -- Rating Star issue on Product detail Page. (fixed in [magento/magento2#16766](https://github.com/magento/magento2/pull/16766)) + * [#5316](https://github.com/magento/magento2/issues/5316) -- [2.1.0] HTML minification problem with php tag with a comment and no space at the end (fixed in [magento/magento2#16916](https://github.com/magento/magento2/pull/16916)) + * [#6264](https://github.com/magento/magento2/issues/6264) -- Error in Admin > products when module Reviews is disabled (fixed in [magento-partners/magento2ee#70](https://github.com/magento-partners/magento2ee/pull/70)) + * [#6504](https://github.com/magento/magento2/issues/6504) -- Magento 2.1 CE: Breadcrumbs on homepage and 404 in multistore (fixed in [magento-partners/magento2ee#72](https://github.com/magento-partners/magento2ee/pull/72)) + * [#16843](https://github.com/magento/magento2/issues/16843) -- Magento 2.2.5: Configurable Product with Only Size Options (No Color Options) Shows No Image in Cart (fixed in [magento/magento2#16863](https://github.com/magento/magento2/pull/16863)) + * [#8131](https://github.com/magento/magento2/issues/8131) -- Magento 2.1.3 - There is a bug in advanced search form regarding validation messages (fixed in [magento/magento2#16952](https://github.com/magento/magento2/pull/16952)) + * [#14476](https://github.com/magento/magento2/issues/14476) -- Mobile device style groups incorrect order in _responsive.less (fixed in [magento/magento2#16959](https://github.com/magento/magento2/pull/16959)) + * [#15393](https://github.com/magento/magento2/issues/15393) -- "Multiple Select" product attributes do not render HTML tags on the storefront view (fixed in [magento/magento2#15687](https://github.com/magento/magento2/pull/15687)) + * [#3535](https://github.com/magento/magento2/issues/3535) -- Print pdf don't delete file in var folder (fixed in [magento/magento2#16401](https://github.com/magento/magento2/pull/16401)) + * [#14517](https://github.com/magento/magento2/issues/14517) -- PDF invoices in /var folder (fixed in [magento/magento2#16401](https://github.com/magento/magento2/pull/16401)) + * [#16273](https://github.com/magento/magento2/issues/16273) -- Method $product->getUrlInStore() returning extremely long URLs, could be a bug (fixed in [magento/magento2#16468](https://github.com/magento/magento2/pull/16468)) +* GitHub pull requests: + * [magento/magento2#13397](https://github.com/magento/magento2/pull/13397) -- magento/magento2#13296: Category name with special characters brakes … (by @vinayshah) + * [magento/magento2#14338](https://github.com/magento/magento2/pull/14338) -- Fixing wrong sitemap product url #4788 (by @DenisSaltanahmedov) + * [magento/magento2#14715](https://github.com/magento/magento2/pull/14715) -- #14669 Css class "empty" is always present on minicart dropdown (by @Karlasa) + * [magento/magento2#14716](https://github.com/magento/magento2/pull/14716) -- [2.2] Fix - minicart label fixed size issue (by @Karlasa) + * [magento/magento2#12764](https://github.com/magento/magento2/pull/12764) -- magento/magento2#4389 Widget cache error (by @AlexandrKozyr) + * [magento/magento2#14314](https://github.com/magento/magento2/pull/14314) -- magento/magento2#13765 Excess requests 'customer data' on checkout cart page were fixed (by @andrewbess) + * [magento/magento2#14538](https://github.com/magento/magento2/pull/14538) -- [Forwardport] Fix HTML tags in meta description (by @davidwindell) + * [magento/magento2#14742](https://github.com/magento/magento2/pull/14742) -- Allow multiple tabs ui_components on a page (by @FreekVandeursen) + * [magento/magento2#14751](https://github.com/magento/magento2/pull/14751) -- Deleting CMS page via webapi/cron should remove related URL rewrites (by @unicoder88) + * [magento/magento2#14290](https://github.com/magento/magento2/pull/14290) -- CSS load order incorrect using default_head_blocks.xml #1821 (by @SergeyDmitruk) + * [magento/magento2#14707](https://github.com/magento/magento2/pull/14707) -- Catalog price rule save is too slow #13378 (by @chrom) + * [magento/magento2#14752](https://github.com/magento/magento2/pull/14752) -- Fix to allow use decimals less then 1 in subproducts qty. (by @likemusic) + * [magento/magento2#14769](https://github.com/magento/magento2/pull/14769) -- [Backport] Add expanded documentation to AdapterInterface::update (by @navarr) + * [magento/magento2#14790](https://github.com/magento/magento2/pull/14790) -- Update Readme file for magento2 repository (by @sidolov) + * [magento/magento2#12410](https://github.com/magento/magento2/pull/12410) -- Add argument on app:config:dump to skip dumping all system settings. (by @jalogut) + * [magento/magento2#14719](https://github.com/magento/magento2/pull/14719) -- Fixed setting of triggerRecollection flag (by @philippsander) + * [magento/magento2#14753](https://github.com/magento/magento2/pull/14753) -- [Backport] Fix bug with retry connect and custom db port (by @julienanquetil) + * [magento/magento2#14765](https://github.com/magento/magento2/pull/14765) -- Display Wrong Data On Cart Update Page (by @nit-it) + * [magento/magento2#14546](https://github.com/magento/magento2/pull/14546) -- Fix issue #13944. Show Store Views in Terms and Conditions grid. (by @afirlejczyk) + * [magento/magento2#14726](https://github.com/magento/magento2/pull/14726) -- Fix/navigation order function (by @luke-denton-aligent) + * [magento/magento2#14800](https://github.com/magento/magento2/pull/14800) -- #5726 - Fix reset password link with appropriate customer store (by @rodrigowebjump) + * [magento/magento2#14844](https://github.com/magento/magento2/pull/14844) -- Updated readme.md file 2.2-develop (by @sidolov) + * [magento/magento2#14795](https://github.com/magento/magento2/pull/14795) -- Invoice grid shows wrong shipping & handling for partial items invoice. It shows order's shipping & handling instead if invoiced shipping& handling charge (by @ankurvr) + * [magento/magento2#14833](https://github.com/magento/magento2/pull/14833) -- Fix a non well formed numeric value encountered on Magento/Directory/… (by @bmxmale) + * [magento/magento2#14627](https://github.com/magento/magento2/pull/14627) -- Fix: Datepicker problem when using non en-US locale. (by @tao-s) + * [magento/magento2#14836](https://github.com/magento/magento2/pull/14836) -- Use index sitemap name as prefix in split sitemaps (by @jameshalsall) + * [magento/magento2#14839](https://github.com/magento/magento2/pull/14839) -- Back port pull 14301 (by @julienanquetil) + * [magento/magento2#12566](https://github.com/magento/magento2/pull/12566) -- Move isAllowed method from AccessChangeQuoteControl to separate service (by @JeroenVanLeusden) + * [magento/magento2#14699](https://github.com/magento/magento2/pull/14699) -- [2.2] Optimize ID to SKU lookup of tier prices (by @toddbc) + * [magento/magento2#14829](https://github.com/magento/magento2/pull/14829) -- Add statement to 'beforeSave' method to allow app:config:import (by @bmxmale) + * [magento/magento2#12735](https://github.com/magento/magento2/pull/12735) -- magento/magento2#12193 Catalog not filtered by admin search bar (by @hannassy) + * [magento/magento2#14822](https://github.com/magento/magento2/pull/14822) -- Add default schedule config for sitemap_generate job (by @jameshalsall) + * [magento/magento2#14876](https://github.com/magento/magento2/pull/14876) -- Changed return type of addToCartPostParams to array (by @LordZardeck) + * [magento/magento2#14892](https://github.com/magento/magento2/pull/14892) -- Corrected @param in comment block (by @Yogeshks) + * [magento/magento2#14609](https://github.com/magento/magento2/pull/14609) -- Code cleanup, add more visibility (by @thomas-blackbird) + * [magento/magento2#14891](https://github.com/magento/magento2/pull/14891) -- Fix typo in doc for updateSpecificCoupons (by @sjb9774) + * [magento/magento2#14893](https://github.com/magento/magento2/pull/14893) -- [Backport] Fix aggregations use statements and return values (by @rogyar) + * [magento/magento2#14896](https://github.com/magento/magento2/pull/14896) -- Removed extra spaces from language file (by @Yogeshks) + * [magento/magento2#14905](https://github.com/magento/magento2/pull/14905) -- FIX for issue#14855 - Adding an * to do a customer search (by @phoenix128) + * [magento/magento2#14820](https://github.com/magento/magento2/pull/14820) -- Duplicate Order Confirmation Emails for PayPal Express checkout order (by @rocketweb) + * [magento/magento2#14904](https://github.com/magento/magento2/pull/14904) -- FIX for issue#14869 - Wrong price at backend after update (by @phoenix128) + * [magento/magento2#14928](https://github.com/magento/magento2/pull/14928) -- Removed extra close tag (by @Yogeshks) + * [magento/magento2#14886](https://github.com/magento/magento2/pull/14886) -- Fixed issue products grid operations in admin cart price rule edit page for user which has no access to CatalogRule module (by @Neos2007) + * [magento/magento2#14874](https://github.com/magento/magento2/pull/14874) -- Fix infinite checkout loader when some script wasn't loaded correctly because of network error (by @vovayatsyuk) + * [magento/magento2#14923](https://github.com/magento/magento2/pull/14923) -- Move customer.account.dashboard.info.extra block to contact information (by @JeroenVanLeusden) + * [magento/magento2#14939](https://github.com/magento/magento2/pull/14939) -- Renamed "Add Block Names to Hints" config setting to represent what it actually does (by @chris-pook) + * [magento/magento2#14935](https://github.com/magento/magento2/pull/14935) -- Change 'Update'-button visibility on change qty event. (by @likemusic) + * [magento/magento2#14963](https://github.com/magento/magento2/pull/14963) -- Fixed Overlay Problems (by @ArtiDjeims) + * [magento/magento2#14946](https://github.com/magento/magento2/pull/14946) -- use "Module_Name::template/path" format instead of using template/path i… (by @Jakhotiya) + * [magento/magento2#14976](https://github.com/magento/magento2/pull/14976) -- Changed the length of the remote_ip field to store ipv6 addresses (by @georgeschiopu) + * [magento/magento2#15015](https://github.com/magento/magento2/pull/15015) -- Fix typo in less button definition (by @shochdoerfer) + * [magento/magento2#15018](https://github.com/magento/magento2/pull/15018) -- chore: upgrade Node.js to 8 (by @DanielRuf) + * [magento/magento2#15023](https://github.com/magento/magento2/pull/15023) -- Fixed typos in .less files (by @kalpmehta) + * [magento/magento2#15002](https://github.com/magento/magento2/pull/15002) -- small optimization in if-condition (by @likemusic) + * [magento/magento2#15012](https://github.com/magento/magento2/pull/15012) -- fix: set message-success in setup if we already have the latest version (by @DanielRuf) + * [magento/magento2#15017](https://github.com/magento/magento2/pull/15017) -- chore: use random_int() in some places (by @DanielRuf) + * [magento/magento2#15016](https://github.com/magento/magento2/pull/15016) -- chore: checkout last 5 commits (by @DanielRuf) + * [magento/magento2#15020](https://github.com/magento/magento2/pull/15020) -- [2.2-develop] Update Gallery Template to handle boolean config Variables (by @gwharton) + * [magento/magento2#15032](https://github.com/magento/magento2/pull/15032) -- [TASK] Fix overriding of payment methods in getPaymentMethodList (by @mash1t) + * [magento/magento2#15053](https://github.com/magento/magento2/pull/15053) -- Fixes typo (by @jee1mr) + * [magento/magento2#14967](https://github.com/magento/magento2/pull/14967) -- Format the javascript code (by @Yogeshks) + * [magento/magento2#15067](https://github.com/magento/magento2/pull/15067) -- fixed documentation about viewModels. The key in xml should be view_m… (by @Jakhotiya) + * [magento/magento2#13904](https://github.com/magento/magento2/pull/13904) -- Add a link to the cart to the success message when adding a product (by @avstudnitz) + * [magento/magento2#14428](https://github.com/magento/magento2/pull/14428) -- Fix \Magento\Checkout\Controller\Index\Index::isSecureRequest method to take care of current request being secure and also from referer, as stated in phpdoc block (by @adrian-martinez-interactiv4) + * [magento/magento2#15129](https://github.com/magento/magento2/pull/15129) -- Add missing false-check to the ConfiguredRegularPrice price-model (by @tkotosz) + * [magento/magento2#15136](https://github.com/magento/magento2/pull/15136) -- [Backport] Add concrete type hints for product and category resources (by @rogyar) + * [magento/magento2#15162](https://github.com/magento/magento2/pull/15162) -- Fixed js error when product has double quote in its name (by @vovayatsyuk) + * [magento/magento2#15173](https://github.com/magento/magento2/pull/15173) -- Removed unused class declaration & code in comment (by @Yogeshks) + * [magento/magento2#15144](https://github.com/magento/magento2/pull/15144) -- Fixed Issue #11354 Merged CSS file name generation (by @sashas777) + * [magento/magento2#15174](https://github.com/magento/magento2/pull/15174) -- Restored app:config:status command after it was accidentally removed. (by @hostep) + * [magento/magento2#12324](https://github.com/magento/magento2/pull/12324) -- Simplified \Magento\Framework\Reflection\TypeProcessor (by @joni-jones) + * [magento/magento2#13185](https://github.com/magento/magento2/pull/13185) -- Fix negative basket total due to shipping tax residue (by @torreytsui) + * [magento/magento2#14614](https://github.com/magento/magento2/pull/14614) -- Add Parent Item to order item in repository (by @JeroenVanLeusden) + * [magento/magento2#15172](https://github.com/magento/magento2/pull/15172) -- 7399-clickableOverlay-less-fix - added pointer-events rule to .modal-… (by @virtua-pmakowski) + * [magento/magento2#15178](https://github.com/magento/magento2/pull/15178) -- Removed mageMenu widget dependency from breadcrumbs component (by @vovayatsyuk) + * [magento/magento2#15197](https://github.com/magento/magento2/pull/15197) -- Fix Magento_ImportExport not supporting unicode characters in column names (by @tdgroot) + * [magento/magento2#15202](https://github.com/magento/magento2/pull/15202) -- [Backport 2.2] Fix for displaying a negative price for a custom option. (by @dverkade) + * [magento/magento2#15137](https://github.com/magento/magento2/pull/15137) -- fix: do not forcefully set area in template if it is already set, fixes #14968, fixes #13530 (by @DanielRuf) + * [magento/magento2#15256](https://github.com/magento/magento2/pull/15256) -- Fixed typo in method name (by @olmer) + * [magento/magento2#14994](https://github.com/magento/magento2/pull/14994) -- Prevent not category links in breadcrumbs at product page (by @vovayatsyuk) + * [magento/magento2#15194](https://github.com/magento/magento2/pull/15194) -- Move buttons definition to separate file (by @jissereitsma) + * [magento/magento2#15249](https://github.com/magento/magento2/pull/15249) -- Removed non-existing argument (by @Yogeshks) + * [magento/magento2#15262](https://github.com/magento/magento2/pull/15262) -- Fix \Magento\Customer\Model\Customer\NotificationStorage class (by @adrian-martinez-interactiv4) + * [magento/magento2#15058](https://github.com/magento/magento2/pull/15058) -- Add 'const' type support to layout arguments (by @IgorVitol) + * [magento/magento2#15133](https://github.com/magento/magento2/pull/15133) -- Fix outdated address data when using Braintree's "Pay with PayPal" button (by @vovayatsyuk) + * [magento/magento2#15269](https://github.com/magento/magento2/pull/15269) -- Fix typo in Image::open exception message (by @t-richards) + * [magento/magento2#15282](https://github.com/magento/magento2/pull/15282) -- [fix] typo in private method name getUniq[ue]ImageIndex (by @mhauri) + * [magento/magento2#15291](https://github.com/magento/magento2/pull/15291) -- [Backport] Fix typo in database column comment (by @VitaliyBoyko) + * [magento/magento2#15292](https://github.com/magento/magento2/pull/15292) -- Fix typo in property name (by @dmytro-ch) + * [magento/magento2#15276](https://github.com/magento/magento2/pull/15276) -- [fix] typo in method name _getCharg[e]ableOptionPrice (by @mhauri) + * [magento/magento2#15293](https://github.com/magento/magento2/pull/15293) -- Fix typos in PHPDocs and comments (by @dmytro-ch) + * [magento/magento2#15302](https://github.com/magento/magento2/pull/15302) -- Fixed typo mistake in function comment (by @NamrataChangani) + * [magento/magento2#15294](https://github.com/magento/magento2/pull/15294) -- Fix typos in variable names (by @dmytro-ch) + * [magento/magento2#15386](https://github.com/magento/magento2/pull/15386) -- [Backport-2.2] Unused variable removed (by @VitaliyBoyko) + * [magento/magento2#15265](https://github.com/magento/magento2/pull/15265) -- declare var to fix scope error (by @keithbentrup) + * [magento/magento2#15333](https://github.com/magento/magento2/pull/15333) -- Added language translation for message string (by @Yogeshks) + * [magento/magento2#15331](https://github.com/magento/magento2/pull/15331) -- set alignment purchase order form and place order button (by @neeta-wagento) + * [magento/magento2#15341](https://github.com/magento/magento2/pull/15341) -- Refactored javascript code of admin notification modal popup (by @rahul-kachhadiya) + * [magento/magento2#15343](https://github.com/magento/magento2/pull/15343) -- Format the javascript code in Tax module (by @vgelani) + * [magento/magento2#15346](https://github.com/magento/magento2/pull/15346) -- Function is unnecessarily called multiple time (by @saurabh-aureate) + * [magento/magento2#15350](https://github.com/magento/magento2/pull/15350) -- 15319 : misleading data-container in product list (by @sunilit42) + * [magento/magento2#15351](https://github.com/magento/magento2/pull/15351) -- Refactor javascript code of button split widget (by @amittiwari024) + * [magento/magento2#15362](https://github.com/magento/magento2/pull/15362) -- Removed duplicate line and added comment on variable (by @vgelani) + * [magento/magento2#15411](https://github.com/magento/magento2/pull/15411) -- [Backport-2.2] Fixed abstract.js typo (by @VitaliyBoyko) + * [magento/magento2#15089](https://github.com/magento/magento2/pull/15089) -- Fix unnecessary recalculation of product list pricing (by @JeroenVanLeusden) + * [magento/magento2#15247](https://github.com/magento/magento2/pull/15247) -- ISSUE-14747 Newsletter subscription confirmation message does not dis… (by @KaushikChavda) + * [magento/magento2#15275](https://github.com/magento/magento2/pull/15275) -- [fix] typo in method name _exportAddress[s]es (by @mhauri) + * [magento/magento2#15332](https://github.com/magento/magento2/pull/15332) -- #14063 - Wrong invoice prefix in multistore setup due to default stor… (by @sanjay-wagento) + * [magento/magento2#15336](https://github.com/magento/magento2/pull/15336) -- #12820 - Wrong annotation in _toOptionArray - magento/framework/Data/… (by @sanjay-wagento) + * [magento/magento2#15347](https://github.com/magento/magento2/pull/15347) -- Fixed breadcrumb quote issue in product page #15037 (by @jignesh-baldha) + * [magento/magento2#15372](https://github.com/magento/magento2/pull/15372) -- Fixed Purchased Order Form button should visible properly (by @vgelani) + * [magento/magento2#15353](https://github.com/magento/magento2/pull/15353) -- Responsive Design Footers bottom of screen on mobile devices #15118 (by @chirag-wagento) + * [magento/magento2#15398](https://github.com/magento/magento2/pull/15398) -- Fixed set template syntax issue (by @vgelani) + * [magento/magento2#15431](https://github.com/magento/magento2/pull/15431) -- typo correction (by @AnshuMishra17) + * [magento/magento2#15010](https://github.com/magento/magento2/pull/15010) -- [BUGFIX] Added row_id to the flat action indexer so the value isn't s… (by @lewisvoncken) + * [magento/magento2#15211](https://github.com/magento/magento2/pull/15211) -- Error 500 in Module Manager (by @flancer64) + * [magento/magento2#15258](https://github.com/magento/magento2/pull/15258) -- [backport] fixes for instant purchase module from #15257 (by @mhauri) + * [magento/magento2#15340](https://github.com/magento/magento2/pull/15340) -- Submitting search form (mini) with enter key fires event handlers bound by jquery twice (by @amjadm61) + * [magento/magento2#15364](https://github.com/magento/magento2/pull/15364) -- Added language translation for comment tag (by @Yogeshks) + * [magento/magento2#15371](https://github.com/magento/magento2/pull/15371) -- Added language translation in template files (by @rahul-kachhadiya) + * [magento/magento2#15409](https://github.com/magento/magento2/pull/15409) -- Prevent multiple add-to-cart initializations in case of ajax loaded product listing (by @vovayatsyuk) + * [magento/magento2#15422](https://github.com/magento/magento2/pull/15422) -- Refactor JavsScript for UrlRewrite module edit page (by @patelnimesh1988) + * [magento/magento2#15421](https://github.com/magento/magento2/pull/15421) -- Updated font-size variable and standardize #ToDo UI (by @vgelani) + * [magento/magento2#15435](https://github.com/magento/magento2/pull/15435) -- [Backport] Removed redundant else statement (by @rogyar) + * [magento/magento2#15460](https://github.com/magento/magento2/pull/15460) -- Improvements to the CONTRIBUTING.md document (by @RebeccaBrocton) + * [magento/magento2#15040](https://github.com/magento/magento2/pull/15040) -- [2.2-develop] Transport variable can not be altered in email_invoice_set_template_vars_before Event (by @gwharton) + * [magento/magento2#15312](https://github.com/magento/magento2/pull/15312) -- [Fix] forgot to add lowercase conversion on grouped product assignation (by @jalogut) + * [magento/magento2#15454](https://github.com/magento/magento2/pull/15454) -- Fix HTML syntax in report.phtml error template (by @abcpremium) + * [magento/magento2#15416](https://github.com/magento/magento2/pull/15416) -- Moved css from media #TODO (by @vgelani) + * [magento/magento2#15462](https://github.com/magento/magento2/pull/15462) -- Adding manners to GitHub templates 2.2 (by @dmanners) + * [magento/magento2#15511](https://github.com/magento/magento2/pull/15511) -- Fixes in config module (by @mhauri) + * [magento/magento2#15513](https://github.com/magento/magento2/pull/15513) -- Fix typos in Multishipping and User module (by @avoelkl) + * [magento/magento2#15301](https://github.com/magento/magento2/pull/15301) -- Refactor JavsScript for customer logout (by @patelnimesh1988) + * [magento/magento2#15382](https://github.com/magento/magento2/pull/15382) -- Fix for Magnifier in inside mode (by @kacperchara) + * [magento/magento2#15499](https://github.com/magento/magento2/pull/15499) -- Issue 15469: Javascript error dropdowns.js (by @brian-labelle) + * [magento/magento2#15512](https://github.com/magento/magento2/pull/15512) -- Fixes in ui module (by @mhauri) + * [magento/magento2#15515](https://github.com/magento/magento2/pull/15515) -- [fix] dynamical assigned property in webapi (by @mhauri) + * [magento/magento2#15459](https://github.com/magento/magento2/pull/15459) -- [Resolved : UI Component listing action column outside of screen when… (by @hitesh-wagento) + * [magento/magento2#15468](https://github.com/magento/magento2/pull/15468) -- Issue 15467 where a configuration sku gets deleted but is still saved… (by @jonshipman) + * [magento/magento2#15514](https://github.com/magento/magento2/pull/15514) -- Fix method name (typo) (by @avoelkl) + * [magento/magento2#15517](https://github.com/magento/magento2/pull/15517) -- Use stored value of method instead of calling same method again. (by @saurabh-aureate) + * [magento/magento2#15519](https://github.com/magento/magento2/pull/15519) -- Typo correction (by @saurabh-aureate) + * [magento/magento2#15552](https://github.com/magento/magento2/pull/15552) -- Remove extra space and format the code in translation file (by @saurabh-aureate) + * [magento/magento2#15549](https://github.com/magento/magento2/pull/15549) -- Fixed typo error (by @vgelani) + * [magento/magento2#15097](https://github.com/magento/magento2/pull/15097) -- Add field to filter to collection (by @dverkade) + * [magento/magento2#15305](https://github.com/magento/magento2/pull/15305) -- chore: remove extraneous cursor property (by @DanielRuf) + * [magento/magento2#15477](https://github.com/magento/magento2/pull/15477) -- Variant product image in sidebar wishlist block (by @kishanpatadia) + * [magento/magento2#15598](https://github.com/magento/magento2/pull/15598) -- [BUGFIX] #15564 Generated admin API token expires immediately (by @krukas) + * [magento/magento2#15602](https://github.com/magento/magento2/pull/15602) -- set correct annotation (by @sanjay-wagento) + * [magento/magento2#13328](https://github.com/magento/magento2/pull/13328) -- Add indexes to timestamp field in oauth_nonce (by @KarlDeux) + * [magento/magento2#15349](https://github.com/magento/magento2/pull/15349) -- Resolve Knockout non-unique elements id in console error (by @neeta-wagento) + * [magento/magento2#15594](https://github.com/magento/magento2/pull/15594) -- Remove extra semicolon from the files (by @saurabh-aureate) + * [magento/magento2#15585](https://github.com/magento/magento2/pull/15585) -- Fix #13415 : Duplicated elements id (by @julienanquetil) + * [magento/magento2#15615](https://github.com/magento/magento2/pull/15615) -- [Backport] Removed comma(,) from translate attribute (by @dmytro-ch) + * [magento/magento2#15621](https://github.com/magento/magento2/pull/15621) -- fix typo for setCateroryIds (by @neeta-wagento) + * [magento/magento2#15645](https://github.com/magento/magento2/pull/15645) -- [Resolved : Menu widget submenu alignment #7897] (by @hitesh-wagento) + * [magento/magento2#15566](https://github.com/magento/magento2/pull/15566) -- Fixxes #15565 (by @EliasKotlyar) + * [magento/magento2#15715](https://github.com/magento/magento2/pull/15715) -- [BACKPORT 2.2 #15695] Fixed a couple of typos (by @dverkade) + * [magento/magento2#15718](https://github.com/magento/magento2/pull/15718) -- [Backport 2.2] Fixed return type of wishlist's getImageData in DocBlock (by @rogyar) + * [magento/magento2#15365](https://github.com/magento/magento2/pull/15365) -- Trim username on customer account login page (by @dankhrapiyush) + * [magento/magento2#15485](https://github.com/magento/magento2/pull/15485) -- fix: support multiple minisearch widget instances (by @DanielRuf) + * [magento/magento2#15614](https://github.com/magento/magento2/pull/15614) -- [Backport] Fixed product tier pricing pagination issue in admin (by @dmytro-ch) + * [magento/magento2#15765](https://github.com/magento/magento2/pull/15765) -- check if order data is available to incl ec (by @torhoehn) + * [magento/magento2#12314](https://github.com/magento/magento2/pull/12314) -- Prevent layout cache corruption in edge case (by @scottsb) + * [magento/magento2#15539](https://github.com/magento/magento2/pull/15539) -- FIX fo rissue #15510 - First PDF download / export after login (by @phoenix128) + * [magento/magento2#15694](https://github.com/magento/magento2/pull/15694) -- [Backport 2.2] Fix minor issues in ui export converter classes (by @dmytro-ch) + * [magento/magento2#15734](https://github.com/magento/magento2/pull/15734) -- [Resolved : Styling select by changing less variables in Luma theme (by @hitesh-wagento) + * [magento/magento2#15782](https://github.com/magento/magento2/pull/15782) -- [Backport 2.2]Fix translations (by @VitaliyBoyko) + * [magento/magento2#15791](https://github.com/magento/magento2/pull/15791) -- Removed unused class from forms less file. (by @chirag-wagento) + * [magento/magento2#15789](https://github.com/magento/magento2/pull/15789) -- Removed unnecessary css. (by @chirag-wagento) + * [magento/magento2#15795](https://github.com/magento/magento2/pull/15795) -- Remove double semicolon from the style sheets. (by @NamrataChangani) + * [magento/magento2#15825](https://github.com/magento/magento2/pull/15825) -- Fixed set template syntax issue (by @NamrataChangani) + * [magento/magento2#15840](https://github.com/magento/magento2/pull/15840) -- [Backport] Fix for issue 911 found on MSI project - Cannot read property source_… #14 (by @chirag-wagento) + * [magento/magento2#15854](https://github.com/magento/magento2/pull/15854) -- [Backport 2.2] Fixed return type hinting in DocBlocks for Wishlist module (by @rogyar) + * [magento/magento2#15871](https://github.com/magento/magento2/pull/15871) -- chore: remove unused less import (by @DanielRuf) + * [magento/magento2#12626](https://github.com/magento/magento2/pull/12626) -- Fixed condition with usage "hack" isPostRequest method (by @pusachev) + * [magento/magento2#12935](https://github.com/magento/magento2/pull/12935) -- Add Ability To Separate Frontend / Adminhtml in New Relic (by @mpchadwick) + * [magento/magento2#15019](https://github.com/magento/magento2/pull/15019) -- [TASK] Solve issue #14966 - Disabling product does not remove it from… (by @lewisvoncken) + * [magento/magento2#15297](https://github.com/magento/magento2/pull/15297) -- Fix typo in test method's name and test result (by @dmytro-ch) + * [magento/magento2#15320](https://github.com/magento/magento2/pull/15320) -- issue/14056 - Coupon API not working for guest user (by @Hypo386) + * [magento/magento2#15322](https://github.com/magento/magento2/pull/15322) -- ISSUE-11477 - fixed Swagger response for searchCriteria (by @idziakjakub) + * [magento/magento2#15661](https://github.com/magento/magento2/pull/15661) -- Fixed Wrong order amount on dashboard on Last orders listing when having more than one website with different currencies (by @ankurvr) + * [magento/magento2#15689](https://github.com/magento/magento2/pull/15689) -- #15588 Fixed incorrect image urls in multistore xml sitemap (by @StevenGuapaBV) + * [magento/magento2#15826](https://github.com/magento/magento2/pull/15826) -- Add missing table aliases to fields mapping for Customer Group filter… (by @Radio) + * [magento/magento2#13862](https://github.com/magento/magento2/pull/13862) -- Add compare list link to success message after adding a product (by @avstudnitz) + * [magento/magento2#15888](https://github.com/magento/magento2/pull/15888) -- Correct typo correction js files (by @saurabh-aureate) + * [magento/magento2#15892](https://github.com/magento/magento2/pull/15892) -- Wrong annotation in _toOptionArray : lib\internal\Magento\Framework\D… (by @NamrataChangani) + * [magento/magento2#15891](https://github.com/magento/magento2/pull/15891) -- Remove parameter from method calling (by @saurabh-aureate) + * [magento/magento2#15878](https://github.com/magento/magento2/pull/15878) -- [Resolved : limiter float too generic] (by @hitesh-wagento) + * [magento/magento2#15907](https://github.com/magento/magento2/pull/15907) -- fixed word typo (by @ledian-hymetllari) + * [magento/magento2#15914](https://github.com/magento/magento2/pull/15914) -- [Resolved : Changing @tab-content__border variable has no effect in B… (by @hitesh-wagento) + * [magento/magento2#15936](https://github.com/magento/magento2/pull/15936) -- #15308 removed extraneous margin (by @StevenGuapaBV) + * [magento/magento2#15991](https://github.com/magento/magento2/pull/15991) -- fix for dropdown toggle icon in cart (by @Karlasa) + * [magento/magento2#16001](https://github.com/magento/magento2/pull/16001) -- Extend default config instead overwrite (by @likemusic) + * [magento/magento2#16002](https://github.com/magento/magento2/pull/16002) -- bugfix checkout page cart icon color (by @Karlasa) + * [magento/magento2#16023](https://github.com/magento/magento2/pull/16023) -- [Backport 2.2] Wishlist: Remove unnecessary parameter from invoking toHtml() method (by @rogyar) + * [magento/magento2#16048](https://github.com/magento/magento2/pull/16048) -- fix: prevent inline-block issue in name form due to space and font-size (by @DanielRuf) + * [magento/magento2#15647](https://github.com/magento/magento2/pull/15647) -- [Backport] Fixes in widget component (by @mhauri) + * [magento/magento2#15811](https://github.com/magento/magento2/pull/15811) -- [Correct code formatting] (by @hitesh-wagento) + * [magento/magento2#15893](https://github.com/magento/magento2/pull/15893) -- Solve overlapping Issue on every Home page & category page of Hot Sel… (by @chirag-wagento) + * [magento/magento2#15902](https://github.com/magento/magento2/pull/15902) -- Complete the fix for cache issue due to the currencies with no symbol (by @dmytro-ch) + * [magento/magento2#15913](https://github.com/magento/magento2/pull/15913) -- [Backport] Fixes in catalog component blocks [2.3-develop] (by @chirag-wagento) + * [magento/magento2#16012](https://github.com/magento/magento2/pull/16012) -- Fix issue #15832 (by @Karlasa) + * [magento/magento2#16010](https://github.com/magento/magento2/pull/16010) -- Small refactoring to better code readability (by @likemusic) + * [magento/magento2#16053](https://github.com/magento/magento2/pull/16053) -- Improve retrieval of first array element (by @thomas-blackbird) + * [magento/magento2#16052](https://github.com/magento/magento2/pull/16052) -- Disabling sorting in glob and scandir functions for better performance (by @lfluvisotto) + * [magento/magento2#16065](https://github.com/magento/magento2/pull/16065) -- [Backport 2.2] Added unit test for captcha string resolver (by @rogyar) + * [magento/magento2#16080](https://github.com/magento/magento2/pull/16080) -- Adding support for variadic arguments fro method in generated proxy c… (by @vgelani) + * [magento/magento2#15344](https://github.com/magento/magento2/pull/15344) -- FIXED - appended payment code to ID field to make it unique (by @rakesh-gangani) + * [magento/magento2#15534](https://github.com/magento/magento2/pull/15534) -- magento/magento2#15255 unlock customer after password reset (by @andreagaspardo) + * [magento/magento2#15604](https://github.com/magento/magento2/pull/15604) -- [Backport] Removed unused translation for comment tag (by @rogyar) + * [magento/magento2#15870](https://github.com/magento/magento2/pull/15870) -- chore: prefer woff and woff2 (by @DanielRuf) + * [magento/magento2#15272](https://github.com/magento/magento2/pull/15272) -- DOBISSUE date format changed after customer tries to register with sa… (by @KaushikChavda) + * [magento/magento2#15993](https://github.com/magento/magento2/pull/15993) -- Correct return type of methods and typo correction. (by @saurabh-aureate) + * [magento/magento2#16082](https://github.com/magento/magento2/pull/16082) -- Navigation dropdown caret icon. (by @tejash-wagento) + * [magento/magento2#16091](https://github.com/magento/magento2/pull/16091) -- Replaced @escapeNotVerified annotations (by @istiahailo) + * [magento/magento2#16144](https://github.com/magento/magento2/pull/16144) -- array_push(...) calls behaving as '$array[] = ...', $array[] = works faster than invoking functions in PHP (by @lfluvisotto) + * [magento/magento2#16160](https://github.com/magento/magento2/pull/16160) -- [Backport 2.2] Captcha: Added unit test for CheckRegisterCheckoutObserver (by @rogyar) + * [magento/magento2#16181](https://github.com/magento/magento2/pull/16181) -- Fixed syntax for before-after operators in less files. (by @NamrataChangani) + * [magento/magento2#16182](https://github.com/magento/magento2/pull/16182) -- Removed double occurrence of keywords from sentences. (by @NamrataChangani) + * [magento/magento2#16183](https://github.com/magento/magento2/pull/16183) -- Correct sentence in comment section in class file. (by @NamrataChangani) + * [magento/magento2#16190](https://github.com/magento/magento2/pull/16190) -- #16079 translation possibility for moreButtonText (by @Karlasa) + * [magento/magento2#16194](https://github.com/magento/magento2/pull/16194) -- magento/magento2#16184: Fix type error in payment void method (by @xpoback) + * [magento/magento2#16192](https://github.com/magento/magento2/pull/16192) -- Trim email address in customer account create and login form (by @dankhrapiyush) + * [magento/magento2#16206](https://github.com/magento/magento2/pull/16206) -- Declare module namespace before template path name(Magento_Sales::order/info.phtml). (by @ronak2ram) + * [magento/magento2#16211](https://github.com/magento/magento2/pull/16211) -- Setting deploy mode to production with --skip-compilation flag should not clear generated code (by @platformvaimo) + * [magento/magento2#16213](https://github.com/magento/magento2/pull/16213) -- Fix for #8222 (by @0m3r) + * [magento/magento2#16216](https://github.com/magento/magento2/pull/16216) -- 15863: [Forwardport] Refactored javascript code of admin notification modal popup (by @IvanPletnyov) + * [magento/magento2#16220](https://github.com/magento/magento2/pull/16220) -- Incorrect value NULL was passed to DataObject constructor. It caused … (by @Jakhotiya) + * [magento/magento2#16230](https://github.com/magento/magento2/pull/16230) -- Correct spelling mistakes in Model and library files. (by @NamrataChangani) + * [magento/magento2#15521](https://github.com/magento/magento2/pull/15521) -- Move breadcrumb json configuration to viewmodel (by @diedburn) + * [magento/magento2#15532](https://github.com/magento/magento2/pull/15532) -- FIX for issue #15501 - M2.2.4 missing meta title tag and doesn't show… (by @phoenix128) + * [magento/magento2#15629](https://github.com/magento/magento2/pull/15629) -- Fix #15627: Product order in category changed in Magento 2.2.4 (by @dverkade) + * [magento/magento2#15637](https://github.com/magento/magento2/pull/15637) -- Create ability to set is_visible_on_front to order status history comment (by @markoshust) + * [magento/magento2#16141](https://github.com/magento/magento2/pull/16141) -- Fix case mismatch call (class/method) (by @lfluvisotto) + * [magento/magento2#16215](https://github.com/magento/magento2/pull/16215) -- PHPDoc (by @lfluvisotto) + * [magento/magento2#16247](https://github.com/magento/magento2/pull/16247) -- Fixed typo error (by @vgelani) + * [magento/magento2#16240](https://github.com/magento/magento2/pull/16240) -- Removed double occurrence of 'it' from sentences. (by @NamrataChangani) + * [magento/magento2#16250](https://github.com/magento/magento2/pull/16250) -- Update Israeli ZIP code mask: 7 digits instead of 5 (by @itaymesh) + * [magento/magento2#12771](https://github.com/magento/magento2/pull/12771) -- magento/magento2#12695: Unable to change attribute type from swatch (by @eugene-shab) + * [magento/magento2#15774](https://github.com/magento/magento2/pull/15774) -- [Backport] Fix issue #14895 - Change Password warning message appear two times (by @sanjay-wagento) + * [magento/magento2#15872](https://github.com/magento/magento2/pull/15872) -- Fix missing PHPDocs hinting for AdvancedPricingImportExport module (by @dmytro-ch) + * [magento/magento2#15845](https://github.com/magento/magento2/pull/15845) -- Update webapi.xml to fix typo (by @mhaack) + * [magento/magento2#15929](https://github.com/magento/magento2/pull/15929) -- Postpone instantiation of session config by using a proxy (by @fmarangi) + * [magento/magento2#16286](https://github.com/magento/magento2/pull/16286) -- Add UpdatedAtListProvider to NotSyncedDataProvider for invoice grid (by @JeroenVanLeusden) + * [magento/magento2#16300](https://github.com/magento/magento2/pull/16300) -- Captcha: Added integration test for checking admin login attempts cleanup (by @rogyar) + * [magento/magento2#16306](https://github.com/magento/magento2/pull/16306) -- Captcha: Added integration tests for checking customer login attempts cleanup (by @rogyar) + * [magento/magento2#13509](https://github.com/magento/magento2/pull/13509) -- Use constant time string comparison in FormKey validator (by @p0pr0ck5) + * [magento/magento2#15339](https://github.com/magento/magento2/pull/15339) -- Fixed set template syntax in block file (by @NamrataChangani) + * [magento/magento2#16093](https://github.com/magento/magento2/pull/16093) -- When searching for the title if search for all the segments that has … (by @rsantellan) + * [magento/magento2#16217](https://github.com/magento/magento2/pull/16217) -- Admin controller product set save refactor (by @AnshuMishra17) + * [magento/magento2#16279](https://github.com/magento/magento2/pull/16279) -- MAGETWO-61209: Backport - Fixed issue #7379 with mage/calendar when setting `numberOfM… (by @vasilii-b) + * [magento/magento2#16333](https://github.com/magento/magento2/pull/16333) -- Add metadata title in unit test (by @slackerzz) + * [magento/magento2#16379](https://github.com/magento/magento2/pull/16379) -- [Changed password placeholder text in checkout page] (by @hitesh-wagento) + * [magento/magento2#16389](https://github.com/magento/magento2/pull/16389) -- [Backport 2.2] Use correct error message for duplicate error key in product import (by @gelanivishal) + * [magento/magento2#15464](https://github.com/magento/magento2/pull/15464) -- Fix "Confirmation request" email is sent on customer's newsletter unsubscribe action (by @nuzil) + * [magento/magento2#16009](https://github.com/magento/magento2/pull/16009) -- fix: change "My Dashboard" to "My Account", fixes #16007 (by @DanielRuf) + * [magento/magento2#16086](https://github.com/magento/magento2/pull/16086) -- Fix false cache_lifetime usage in xml layouts (by @yuriyDne) + * [magento/magento2#16372](https://github.com/magento/magento2/pull/16372) -- Wishlist update item issue (by @eduard13) + * [magento/magento2#16386](https://github.com/magento/magento2/pull/16386) -- Login with wishlist raise report after logout. (by @swnsma) + * [magento/magento2#16438](https://github.com/magento/magento2/pull/16438) -- Credit memo email template file: fixing incorrect object type error (by @JosephMaxwell) + * [magento/magento2#16458](https://github.com/magento/magento2/pull/16458) -- Add missing showInStore attributes (by @aschrammel) + * [magento/magento2#16477](https://github.com/magento/magento2/pull/16477) -- Fix for #14593 (second try #16431) (by @0m3r) + * [magento/magento2#15543](https://github.com/magento/magento2/pull/15543) -- Enhancements to module:status command (by @jissereitsma) + * [magento/magento2#16472](https://github.com/magento/magento2/pull/16472) -- Improve comment message (by @gelanivishal) + * [magento/magento2#16489](https://github.com/magento/magento2/pull/16489) -- Properly hyphenate "third-party" (by @erikhansen) + * [magento/magento2#16495](https://github.com/magento/magento2/pull/16495) -- Fixed spell issue in library (by @sanganinamrata) + * [magento/magento2#15909](https://github.com/magento/magento2/pull/15909) -- [Backport] Fix for Wrong price amount on product page (by @gelanivishal) + * [magento/magento2#16090](https://github.com/magento/magento2/pull/16090) -- Added and removed unnecessary translation for label/comment tags (by @Yogeshks) + * [magento/magento2#16393](https://github.com/magento/magento2/pull/16393) -- Rework for PR #16222 . (by @phoenix128) + * [magento/magento2#16517](https://github.com/magento/magento2/pull/16517) -- Fix responsive tables showing broken heading (by @LordZardeck) + * [magento/magento2#16524](https://github.com/magento/magento2/pull/16524) -- Clear converted file data (by @gelanivishal) + * [magento/magento2#16549](https://github.com/magento/magento2/pull/16549) -- Corrected function comment (by @sanganinamrata) + * [magento/magento2#16553](https://github.com/magento/magento2/pull/16553) -- Update mini-cart checkout translations (by @JeroenVanLeusden) + * [magento/magento2#16557](https://github.com/magento/magento2/pull/16557) -- Updated SynonymGroup.xml (by @sanganinamrata) + * [magento/magento2#16576](https://github.com/magento/magento2/pull/16576) -- [Backport] Declare module namespace before template path name (by @mageprince) + * [magento/magento2#16581](https://github.com/magento/magento2/pull/16581) -- Removed double occurrences from files. (by @sanganinamrata) + * [magento/magento2#16143](https://github.com/magento/magento2/pull/16143) -- Variable as a method parameter might be overridden by the loop (by @lfluvisotto) + * [magento/magento2#16254](https://github.com/magento/magento2/pull/16254) -- Customer group extension attributes not carried over on save (by @JosephMaxwell) + * [magento/magento2#16474](https://github.com/magento/magento2/pull/16474) -- [FIX] dev:di:info duplicates plugin info (by @Coderimus) + * [magento/magento2#16564](https://github.com/magento/magento2/pull/16564) -- Trim email address in newsletter, forgot password, checkout login and email to a friend form (by @dankhrapiyush) + * [magento/magento2#11554](https://github.com/magento/magento2/pull/11554) -- Improve attribute checking (by @FreekVandeursen) + * [magento/magento2#16271](https://github.com/magento/magento2/pull/16271) -- Covered Magento\Checkout\Model\Cart\CollectQuote by Unit Test (by @eduard13) + * [magento/magento2#16540](https://github.com/magento/magento2/pull/16540) -- Fix zero price simple failed to resolve as default (by @torreytsui) + * [magento/magento2#16530](https://github.com/magento/magento2/pull/16530) -- Fixed widget template rendering issue while rewriting widget block. (by @sanganinamrata) + * [magento/magento2#16559](https://github.com/magento/magento2/pull/16559) -- fix icon color variable naming (by @Karlasa) + * [magento/magento2#16584](https://github.com/magento/magento2/pull/16584) -- [Backport] Remove the timezone from the date when retrieving the current month from a UTC timestamp. (by @mageprince) + * [magento/magento2#16590](https://github.com/magento/magento2/pull/16590) -- Fix of invalid price for integer currencies when amount less than group size (by @vkublytskyi) + * [magento/magento2#16626](https://github.com/magento/magento2/pull/16626) -- [Backport] Fix type hints and add undefined property in Webapi [2.3-develop] (by @mageprince) + * [magento/magento2#16644](https://github.com/magento/magento2/pull/16644) -- Removed double occurrences from Magento modules. (by @sanganinamrata) + * [magento/magento2#16645](https://github.com/magento/magento2/pull/16645) -- Updated Magento_Newsletter's block file. (by @sanganinamrata) + * [magento/magento2#16646](https://github.com/magento/magento2/pull/16646) -- Corrected Magento_Framework's test xml file. (by @sanganinamrata) + * [magento/magento2#16669](https://github.com/magento/magento2/pull/16669) -- Prevent servers being slammed from many search suggestion requests (by @LordZardeck) + * [magento/magento2#16678](https://github.com/magento/magento2/pull/16678) -- Improved code and remove unnecessary space (by @ronak2ram) + * [magento/magento2#16675](https://github.com/magento/magento2/pull/16675) -- Prevent running SQL query on every item in the database when the quote is empty (by @LordZardeck) + * [magento/magento2#16689](https://github.com/magento/magento2/pull/16689) -- Added 'title' attribute to 'a' link. (by @sanganinamrata) + * [magento/magento2#16690](https://github.com/magento/magento2/pull/16690) -- Added translation function for Magento_Braintree module's template file. (by @sanganinamrata) + * [magento/magento2#16691](https://github.com/magento/magento2/pull/16691) -- Added 'title' attribute to 'img' tag in knockout template files. (by @sanganinamrata) + * [magento/magento2#16711](https://github.com/magento/magento2/pull/16711) -- Fixed typo in SynonymGroupRepositoryInterface (by @AnshuMishra17) + * [magento/magento2#15479](https://github.com/magento/magento2/pull/15479) -- Fix newsletter subscription behaviour for registered customer. (by @nuzil) + * [magento/magento2#16175](https://github.com/magento/magento2/pull/16175) -- Admin tabs order not working properly (by @tiagosampaio) + * [magento/magento2#16408](https://github.com/magento/magento2/pull/16408) -- Fixed type hints and docs for Downloadable Samples block (by @phoenix-bjoern) + * [magento/magento2#16414](https://github.com/magento/magento2/pull/16414) -- Fixing a Mistype Error (by @tiagosampaio) + * [magento/magento2#16554](https://github.com/magento/magento2/pull/16554) -- Fix docBlock for hasInvoices(), hasShipments(), hasCreditmemos() (by @nuzil) + * [magento/magento2#16566](https://github.com/magento/magento2/pull/16566) -- Smallest codestyle fix in Option/Type/Text.php (by @likemusic) + * [magento/magento2#16680](https://github.com/magento/magento2/pull/16680) -- Captcha: Added unit test for CheckGuestCheckoutObserver (by @rogyar) + * [magento/magento2#16693](https://github.com/magento/magento2/pull/16693) -- 'Allowed Countries' - get countries for scope 'default'. (by @swnsma) + * [magento/magento2#16685](https://github.com/magento/magento2/pull/16685) -- Updated security issues details (by @quisse) + * [magento/magento2#16704](https://github.com/magento/magento2/pull/16704) -- Add sort order to user agent rules table headers (by @JRhyne) + * [magento/magento2#16717](https://github.com/magento/magento2/pull/16717) -- Removed space before ending sentence. (by @sanganinamrata) + * [magento/magento2#16716](https://github.com/magento/magento2/pull/16716) -- fix _utilities.less font-size issue (by @Karlasa) + * [magento/magento2#16721](https://github.com/magento/magento2/pull/16721) -- Corrected return message from ProductRuleTest.php (by @sanganinamrata) + * [magento/magento2#16732](https://github.com/magento/magento2/pull/16732) -- Resolved : no navigation-level0-item__hover__color #15848 (by @hitesh-wagento) + * [magento/magento2#16726](https://github.com/magento/magento2/pull/16726) -- [Backport 2.3] Add spelling correction: formatedPrice to formattedPrice (by @arnoudhgz) + * [magento/magento2#13569](https://github.com/magento/magento2/pull/13569) -- Correctly save Product Custom Option values (by @JeroenVanLeusden) + * [magento/magento2#14379](https://github.com/magento/magento2/pull/14379) -- [Backport 2.2] Issue 14351: Product import doesn't change `Enable Qty Increments` field (by @simpleadm) + * [magento/magento2#16599](https://github.com/magento/magento2/pull/16599) -- Fixed backwards incompatible change to Transport variable event parameters (by @gwharton) + * [magento/magento2#16748](https://github.com/magento/magento2/pull/16748) -- Remove commented code & remove space (by @ronak2ram) + * [magento/magento2#16766](https://github.com/magento/magento2/pull/16766) -- fix #16764 Rating Star issue on Product detail Page. (by @Karlasa) + * [magento/magento2#16821](https://github.com/magento/magento2/pull/16821) -- Code improvement (by @mage2pratik) + * [magento/magento2#16831](https://github.com/magento/magento2/pull/16831) -- [Backport] Magento_Sales integration tests: fix invoice_list fixture var tags (by @ronak2ram) + * [magento/magento2#16435](https://github.com/magento/magento2/pull/16435) -- Add generated code to the psr-0 autoloader section so when optimizing… (by @hostep) + * [magento/magento2#16595](https://github.com/magento/magento2/pull/16595) -- Trim issue on customer confirmation form (by @gelanivishal) + * [magento/magento2#16845](https://github.com/magento/magento2/pull/16845) -- [Backport] Add @api annotation to Filter Group & Sort Order (by @ronak2ram) + * [magento/magento2#16861](https://github.com/magento/magento2/pull/16861) -- Add Confirm Modal Width (by @hryvinskyi) + * [magento/magento2#16872](https://github.com/magento/magento2/pull/16872) -- Remove extra spaces from Magento/Ui (by @ronak2ram) + * [magento/magento2#16873](https://github.com/magento/magento2/pull/16873) -- Improve "Invalid country code" error message on tax import (by @adampmoss) + * [magento/magento2#16916](https://github.com/magento/magento2/pull/16916) -- [Backport] Issue 5316 (by @ronak2ram) + * [magento/magento2#16579](https://github.com/magento/magento2/pull/16579) -- removed _responsive.less import from gallery.less (by @Karlasa) + * [magento/magento2#16707](https://github.com/magento/magento2/pull/16707) -- Update regex in ControllerAclTest (by @aleron75) + * [magento/magento2#16785](https://github.com/magento/magento2/pull/16785) -- Avoid undefined index warning when using uppercase reserved word (by @FreekVandeursen) + * [magento/magento2#16841](https://github.com/magento/magento2/pull/16841) -- Clean code (by @GraysonChiang) + * [magento/magento2#16840](https://github.com/magento/magento2/pull/16840) -- Log when Magento is in maintenance mode (by @Ethan3600) + * [magento/magento2#16851](https://github.com/magento/magento2/pull/16851) -- Remove direct use of object manager (by @AnshuMishra17) + * [magento/magento2#16882](https://github.com/magento/magento2/pull/16882) -- Remove duplicated string. (by @likemusic) + * [magento/magento2#16880](https://github.com/magento/magento2/pull/16880) -- Array short syntax (by @lfluvisotto) + * [magento/magento2#16889](https://github.com/magento/magento2/pull/16889) -- Microrefactoring in product gallery block helper (by @likemusic) + * [magento/magento2#16891](https://github.com/magento/magento2/pull/16891) -- Remove commented code (by @mage2pratik) + * [magento/magento2#16890](https://github.com/magento/magento2/pull/16890) -- hide cookie notice instead of reloading site (by @torhoehn) + * [magento/magento2#16899](https://github.com/magento/magento2/pull/16899) -- Fixing annotations for some methods. (by @tiagosampaio) + * [magento/magento2#16903](https://github.com/magento/magento2/pull/16903) -- Fixes white color coding standard. (by @chirag-wagento) + * [magento/magento2#16924](https://github.com/magento/magento2/pull/16924) -- Replacing Usage of Deprecated Methods for Message Manager. (by @tiagosampaio) + * [magento/magento2#16937](https://github.com/magento/magento2/pull/16937) -- Revert changing file permissions in #15144 (by @ihor-sviziev) + * [magento/magento2#16928](https://github.com/magento/magento2/pull/16928) -- Reduce lengthy code of LoginPost (by @GlennCheng) + * [magento/magento2#16978](https://github.com/magento/magento2/pull/16978) -- Wrong namespace defined in compare.phtml (by @ronak2ram) + * [magento/magento2#16977](https://github.com/magento/magento2/pull/16977) -- Removed double occurrences from Magento modules (by @mage2pratik) + * [magento/magento2#16980](https://github.com/magento/magento2/pull/16980) -- Fixed a couple of spelling mistakes (by @mage2pratik) + * [magento/magento2#17002](https://github.com/magento/magento2/pull/17002) -- [Backport] Remove unused comments from _initDiscount() function (by @mageprince) + * [magento/magento2#16560](https://github.com/magento/magento2/pull/16560) -- Admin user auth controller refactor (by @AnshuMishra17) + * [magento/magento2#16863](https://github.com/magento/magento2/pull/16863) -- Configurable Product with Only Size Options (No Color Options) Shows … (by @ronak2ram) + * [magento/magento2#16883](https://github.com/magento/magento2/pull/16883) -- Update nginx.config.sample to exclude php5-fpm (by @sean-wcb) + * [magento/magento2#16900](https://github.com/magento/magento2/pull/16900) -- Add Clean Code (by @hryvinskyi) + * [magento/magento2#16921](https://github.com/magento/magento2/pull/16921) -- Slight Changes to Code (by @tiagosampaio) + * [magento/magento2#16946](https://github.com/magento/magento2/pull/16946) -- Delete all unused imports of lib/internal/Magento (by @osrecio) + * [magento/magento2#16965](https://github.com/magento/magento2/pull/16965) -- fix: add hasrequired notice for create account form and password forg… (by @DanielRuf) + * [magento/magento2#17019](https://github.com/magento/magento2/pull/17019) -- Fixes Black color coding standard. (by @chirag-wagento) + * [magento/magento2#16952](https://github.com/magento/magento2/pull/16952) -- Issue 8131 - Use Redirect Factory to Allow Error Message Display on Advanced Search (by @brobie) + * [magento/magento2#16959](https://github.com/magento/magento2/pull/16959) -- Resolved : Mobile device style groups incorrect order (by @tejash-wagento) + * [magento/magento2#16971](https://github.com/magento/magento2/pull/16971) -- Fix misprint ('_requesetd' > '_requested') (by @likemusic) + * [magento/magento2#16988](https://github.com/magento/magento2/pull/16988) -- Correct return type of methods (by @mage2pratik) + * [magento/magento2#16984](https://github.com/magento/magento2/pull/16984) -- Categories > Left menu > Item title space fix (by @rafaelstz) + * [magento/magento2#17006](https://github.com/magento/magento2/pull/17006) -- Adjust page-main container height for sticky footer; fixes #15118 (by @denistrator) + * [magento/magento2#17027](https://github.com/magento/magento2/pull/17027) -- Remove spaces around amount span. (by @likemusic) + * [magento/magento2#17063](https://github.com/magento/magento2/pull/17063) -- Added unit test for DB model in backup module (by @rogyar) + * [magento/magento2#17077](https://github.com/magento/magento2/pull/17077) -- Remove commented code (by @mage2pratik) + * [magento/magento2#17097](https://github.com/magento/magento2/pull/17097) -- [Backport] Magento UI - Cleanup of undefined mixins parameters and usage of "leaking" variables scope (by @mageprince) + * [magento/magento2#17099](https://github.com/magento/magento2/pull/17099) -- [Backport] Fix app/code/Magento/Backend/Block/Media/Uploader.php getConfigJson() method (by @mageprince) + * [magento/magento2#17098](https://github.com/magento/magento2/pull/17098) -- [Backport] testGetIgnoresFirstSlash method in ObjectManagerTest has lost its purpose (dummy test) (by @mageprince) + * [magento/magento2#17114](https://github.com/magento/magento2/pull/17114) -- Disable autocomplete for captcha inputs (by @denistrator) + * [magento/magento2#17129](https://github.com/magento/magento2/pull/17129) -- Update template.js (by @angelomaragna) + * [magento/magento2#17137](https://github.com/magento/magento2/pull/17137) -- GoogleAnalytics: Added unit test for order success observer (by @rogyar) + * [magento/magento2#17151](https://github.com/magento/magento2/pull/17151) -- Fixed a grammatical error on the vault tooltip (by @kreativedev) + * [magento/magento2#15687](https://github.com/magento/magento2/pull/15687) -- Fixes for #15393 (by @simonjanguapa) + * [magento/magento2#16401](https://github.com/magento/magento2/pull/16401) -- Remove PDF files after generation (by @rogyar) + * [magento/magento2#16468](https://github.com/magento/magento2/pull/16468) -- #16273: Fix bug in method getUrlInStore() of product model (by @vasilii-b) + * [magento/magento2#17124](https://github.com/magento/magento2/pull/17124) -- Using interface instead of model directly (by @woutersamaey) + * [magento/magento2#17163](https://github.com/magento/magento2/pull/17163) -- Add meta NOINDEX,NOFOLLOW to admin scope to avoid accidental crawling (by @cmtickle) + * [magento/magento2#17035](https://github.com/magento/magento2/pull/17035) -- Replaced deprecated methods. (by @tiagosampaio) + * [magento/magento2#17227](https://github.com/magento/magento2/pull/17227) -- Replaced deprecated methods. (by @tiagosampaio) + 2.2.5 ============= * GitHub issues: diff --git a/README.md b/README.md index 99fe14cbe33df..d64ac8061528f 100644 --- a/README.md +++ b/README.md @@ -41,24 +41,12 @@ Magento is thankful for any contribution that can improve our code base, documen

Labels applied by the Magento team

- -| Label | Description | -| ------------- |-------------| -| ![DOC](http://devdocs.magento.com/common/images/github_DOC.png) | Affects Documentation domain. | -| ![PROD](http://devdocs.magento.com/common/images/github_PROD.png) | Affects the Product team (mostly feature requests or business logic change). | -| ![TECH](http://devdocs.magento.com/common/images/github_TECH.png) | Affects Architect Group (mostly to make decisions around technology changes). | -| ![accept](http://devdocs.magento.com/common/images/github_accept.png) | The pull request has been accepted and will be merged into mainline code. | -| ![reject](http://devdocs.magento.com/common/images/github_reject.png) | The pull request has been rejected and will not be merged into mainline code. Possible reasons can include but are not limited to: issue has already been fixed in another code contribution, or there is an issue with the code contribution. | -| ![bug report](http://devdocs.magento.com/common/images/github_bug.png) | The Magento Team has confirmed that this issue contains the minimum required information to reproduce. | -| ![acknowledged](http://devdocs.magento.com/common/images/gitHub_acknowledged.png) | The Magento Team has validated the issue and an internal ticket has been created. | -| ![in progress](http://devdocs.magento.com/common/images/github_inProgress.png) | The internal ticket is currently in progress, fix is scheduled to be delivered. | -| ![needs update](http://devdocs.magento.com/common/images/github_needsUpdate.png) | The Magento Team needs additional information from the reporter to properly prioritize and process the issue or pull request. | - -To learn more about issue gate labels click [here](https://github.com/magento/magento2/wiki/Magento-Issue-Gates) +We apply labels to public Pull Requests and Issues to help other participants retrieve additional information about current progress, component assignments, Magento release lines, and much more. +Please review the Code Contributions guide for detailed information on labels used in Magento 2 repositories.

Reporting security issues

-To report security vulnerabilities in Magento software or web sites, please e-mail security@magento.com. Please do not report security issues using GitHub. Be sure to encrypt your e-mail with our encryption key if it includes sensitive information. Learn more about reporting security issues here. +To report security vulnerabilities in Magento software or web sites, please create a Bugcrowd researcher account there to submit and follow-up your issue. Learn more about reporting security issues here. Stay up-to-date on the latest security news and patches for Magento by signing up for Security Alert Notifications. diff --git a/app/bootstrap.php b/app/bootstrap.php index e77c6d432c816..8e901cac9bfb8 100644 --- a/app/bootstrap.php +++ b/app/bootstrap.php @@ -31,8 +31,6 @@ // Sets default autoload mappings, may be overridden in Bootstrap::create \Magento\Framework\App\Bootstrap::populateAutoloader(BP, []); -require_once BP . '/app/functions.php'; - /* Custom umask value may be provided in optional mage_umask file in root */ $umaskFile = BP . '/magento_umask'; $mask = file_exists($umaskFile) ? octdec(file_get_contents($umaskFile)) : 002; @@ -54,12 +52,16 @@ && isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'text/html') !== false ) { - $profilerFlag = isset($_SERVER['MAGE_PROFILER']) && strlen($_SERVER['MAGE_PROFILER']) + $profilerConfig = isset($_SERVER['MAGE_PROFILER']) && strlen($_SERVER['MAGE_PROFILER']) ? $_SERVER['MAGE_PROFILER'] : trim(file_get_contents(BP . '/var/profiler.flag')); - \Magento\Framework\Profiler::applyConfig( - $profilerFlag, + if ($profilerConfig) { + $profilerConfig = json_decode($profilerConfig, true) ?: $profilerConfig; + } + + Magento\Framework\Profiler::applyConfig( + $profilerConfig, BP, !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ); diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php index 79f69ab5da88d..6b5e0681139cf 100644 --- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php +++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MarkAsRead.php @@ -28,11 +28,11 @@ public function execute() )->markAsRead( $notificationId ); - $this->messageManager->addSuccess(__('The message has been marked as Read.')); + $this->messageManager->addSuccessMessage(__('The message has been marked as Read.')); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException( + $this->messageManager->addExceptionMessage( $e, __("We couldn't mark the notification as Read because of an error.") ); diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php index 9e61b8ff4b83c..9ae4a7cdac0b9 100644 --- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php +++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassMarkAsRead.php @@ -23,7 +23,7 @@ public function execute() { $ids = $this->getRequest()->getParam('notification'); if (!is_array($ids)) { - $this->messageManager->addError(__('Please select messages.')); + $this->messageManager->addErrorMessage(__('Please select messages.')); } else { try { foreach ($ids as $id) { @@ -32,13 +32,13 @@ public function execute() $model->setIsRead(1)->save(); } } - $this->messageManager->addSuccess( + $this->messageManager->addSuccessMessage( __('A total of %1 record(s) have been marked as Read.', count($ids)) ); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException( + $this->messageManager->addExceptionMessage( $e, __("We couldn't mark the notification as Read because of an error.") ); diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php index 94c7d955f592b..f4cafa09c7e45 100644 --- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php +++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/MassRemove.php @@ -23,7 +23,7 @@ public function execute() { $ids = $this->getRequest()->getParam('notification'); if (!is_array($ids)) { - $this->messageManager->addError(__('Please select messages.')); + $this->messageManager->addErrorMessage(__('Please select messages.')); } else { try { foreach ($ids as $id) { @@ -32,11 +32,12 @@ public function execute() $model->setIsRemove(1)->save(); } } - $this->messageManager->addSuccess(__('Total of %1 record(s) have been removed.', count($ids))); + $this->messageManager->addSuccessMessage(__('Total of %1 record(s) have been removed.', count($ids))); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __("We couldn't remove the messages because of an error.")); + $this->messageManager + ->addExceptionMessage($e, __("We couldn't remove the messages because of an error.")); } } $this->_redirect('adminhtml/*/'); diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php index 17f911339cb61..bec101fc27d48 100644 --- a/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php +++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/Notification/Remove.php @@ -31,11 +31,12 @@ public function execute() try { $model->setIsRemove(1)->save(); - $this->messageManager->addSuccess(__('The message has been removed.')); + $this->messageManager->addSuccessMessage(__('The message has been removed.')); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __("We couldn't remove the messages because of an error.")); + $this->messageManager + ->addExceptionMessage($e, __("We couldn't remove the messages because of an error.")); } $this->_redirect('adminhtml/*/'); diff --git a/app/code/Magento/AdminNotification/Test/Mftf/composer.json b/app/code/Magento/AdminNotification/Test/Mftf/composer.json deleted file mode 100644 index 3389ce971f4cc..0000000000000 --- a/app/code/Magento/AdminNotification/Test/Mftf/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "magento/functional-test-module-admin-notification", - "description": "N/A", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.0.13|~7.1.0", - "magento/functional-test-module-store": "100.0.0-dev", - "magento/functional-test-module-backend": "100.0.0-dev", - "magento/functional-test-module-media-storage": "100.0.0-dev", - "magento/magento2-functional-testing-framework": "2.2.0", - "magento/functional-test-module-ui": "100.0.0-dev" - }, - "type": "magento2-test", - "license": [ - "OSL-3.0", - "AFL-3.0" - ] -} diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json index 0ecdca6bb1d05..ae1b8dc7d14ff 100644 --- a/app/code/Magento/AdminNotification/composer.json +++ b/app/code/Magento/AdminNotification/composer.json @@ -11,7 +11,7 @@ "lib-libxml": "*" }, "type": "magento2-module", - "version": "100.2.3", + "version": "100.2.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/AdminNotification/etc/adminhtml/menu.xml b/app/code/Magento/AdminNotification/etc/adminhtml/menu.xml index fbed5c0960b73..04d700b9f90ce 100644 --- a/app/code/Magento/AdminNotification/etc/adminhtml/menu.xml +++ b/app/code/Magento/AdminNotification/etc/adminhtml/menu.xml @@ -7,6 +7,6 @@ --> - + diff --git a/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php b/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php index 02413a1899cd7..818bcda1da65f 100644 --- a/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php +++ b/app/code/Magento/AdvancedPricingImportExport/Controller/Adminhtml/Export/GetFilter.php @@ -37,10 +37,10 @@ public function execute() ); return $resultLayout; } catch (\Exception $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } } else { - $this->messageManager->addError(__('Please correct the data sent.')); + $this->messageManager->addErrorMessage(__('Please correct the data sent.')); } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); diff --git a/app/code/Magento/AdvancedPricingImportExport/Test/Mftf/composer.json b/app/code/Magento/AdvancedPricingImportExport/Test/Mftf/composer.json deleted file mode 100644 index 3fe88ad6f6443..0000000000000 --- a/app/code/Magento/AdvancedPricingImportExport/Test/Mftf/composer.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "magento/functional-test-module-advanced-pricing-import-export", - "description": "N/A", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.0.13|~7.1.0", - "magento/functional-test-module-catalog": "100.0.0-dev", - "magento/functional-test-module-catalog-inventory": "100.0.0-dev", - "magento/functional-test-module-eav": "100.0.0-dev", - "magento/functional-test-module-import-export": "100.0.0-dev", - "magento/functional-test-module-catalog-import-export": "100.0.0-dev", - "magento/functional-test-module-customer": "100.0.0-dev", - "magento/functional-test-module-store": "100.0.0-dev", - "magento/magento2-functional-testing-framework": "2.2.0" - }, - "type": "magento2-test", - "license": [ - "OSL-3.0", - "AFL-3.0" - ] -} diff --git a/app/code/Magento/AdvancedPricingImportExport/composer.json b/app/code/Magento/AdvancedPricingImportExport/composer.json index 49a6f5379d1c0..458827b9ab18a 100644 --- a/app/code/Magento/AdvancedPricingImportExport/composer.json +++ b/app/code/Magento/AdvancedPricingImportExport/composer.json @@ -13,7 +13,7 @@ "magento/framework": "101.0.*" }, "type": "magento2-module", - "version": "100.2.3", + "version": "100.2.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php b/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php index 4e5a1940773b1..17f2392758de8 100644 --- a/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php +++ b/app/code/Magento/Analytics/ReportXml/DB/SelectBuilder.php @@ -87,11 +87,13 @@ public function getJoins() * Set joins conditions * * @param array $joins - * @return void + * @return $this */ public function setJoins($joins) { $this->joins = $joins; + + return $this; } /** @@ -108,11 +110,13 @@ public function getConnectionName() * Set connection name * * @param string $connectionName - * @return void + * @return $this */ public function setConnectionName($connectionName) { $this->connectionName = $connectionName; + + return $this; } /** @@ -129,11 +133,13 @@ public function getColumns() * Set columns * * @param array $columns - * @return void + * @return $this */ public function setColumns($columns) { $this->columns = $columns; + + return $this; } /** @@ -150,11 +156,13 @@ public function getFilters() * Set filters * * @param array $filters - * @return void + * @return $this */ public function setFilters($filters) { $this->filters = $filters; + + return $this; } /** @@ -171,11 +179,13 @@ public function getFrom() * Set from condition * * @param array $from - * @return void + * @return $this */ public function setFrom($from) { $this->from = $from; + + return $this; } /** @@ -238,11 +248,13 @@ public function getGroup() * Set group * * @param array $group - * @return void + * @return $this */ public function setGroup($group) { $this->group = $group; + + return $this; } /** @@ -259,11 +271,13 @@ public function getParams() * Set parameters * * @param array $params - * @return void + * @return $this */ public function setParams($params) { $this->params = $params; + + return $this; } /** @@ -280,10 +294,12 @@ public function getHaving() * Set having condition * * @param array $having - * @return void + * @return $this */ public function setHaving($having) { $this->having = $having; + + return $this; } } diff --git a/app/code/Magento/Analytics/ReportXml/ReportProvider.php b/app/code/Magento/Analytics/ReportXml/ReportProvider.php index 3ebe5941108bc..247be5fa8e4ca 100644 --- a/app/code/Magento/Analytics/ReportXml/ReportProvider.php +++ b/app/code/Magento/Analytics/ReportXml/ReportProvider.php @@ -57,7 +57,7 @@ public function __construct( private function getIteratorName(Query $query) { $config = $query->getConfig(); - return isset($config['iterator']) ? $config['iterator'] : null; + return $config['iterator'] ?? null; } /** diff --git a/app/code/Magento/Analytics/Test/Mftf/composer.json b/app/code/Magento/Analytics/Test/Mftf/composer.json deleted file mode 100644 index 86afb4e675a04..0000000000000 --- a/app/code/Magento/Analytics/Test/Mftf/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "magento/functional-test-module-analytics", - "description": "N/A", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.0.13|~7.1.0", - "magento/functional-test-module-backend": "100.0.0-dev", - "magento/functional-test-module-config": "100.0.0-dev", - "magento/functional-test-module-integration": "100.0.0-dev", - "magento/functional-test-module-store": "100.0.0-dev", - "magento/magento2-functional-testing-framework": "2.2.0" - }, - "type": "magento2-test", - "license": [ - "OSL-3.0", - "AFL-3.0" - ] -} diff --git a/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php b/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php index a82a187cdb3f8..1c60822aca795 100644 --- a/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php +++ b/app/code/Magento/Analytics/Test/Unit/ReportXml/DB/SelectBuilderTest.php @@ -67,12 +67,12 @@ public function testCreate() ['link-type' => 'right', 'table' => 'attribute', 'condition' => 'neq'], ]; $groups = ['id', 'name']; - $this->selectBuilder->setConnectionName($connectionName); - $this->selectBuilder->setFrom($from); - $this->selectBuilder->setColumns($columns); - $this->selectBuilder->setFilters([$filter]); - $this->selectBuilder->setJoins($joins); - $this->selectBuilder->setGroup($groups); + $this->selectBuilder->setConnectionName($connectionName) + ->setFrom($from) + ->setColumns($columns) + ->setFilters([$filter]) + ->setJoins($joins) + ->setGroup($groups); $this->resourceConnectionMock->expects($this->once()) ->method('getConnection') ->with($connectionName) diff --git a/app/code/Magento/Analytics/composer.json b/app/code/Magento/Analytics/composer.json index f69960e082f84..7edb72db45e52 100644 --- a/app/code/Magento/Analytics/composer.json +++ b/app/code/Magento/Analytics/composer.json @@ -10,7 +10,7 @@ "magento/framework": "101.0.*" }, "type": "magento2-module", - "version": "100.2.2", + "version": "100.2.3", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Authorization/Test/Mftf/composer.json b/app/code/Magento/Authorization/Test/Mftf/composer.json deleted file mode 100644 index 3f9189dfcf360..0000000000000 --- a/app/code/Magento/Authorization/Test/Mftf/composer.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "magento/functional-test-module-authorization", - "description": "Authorization module provides access to Magento ACL functionality.", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.0.13|~7.1.0", - "magento/functional-test-module-backend": "100.0.0-dev", - "magento/magento2-functional-testing-framework": "2.2.0" - }, - "type": "magento2-test", - "license": [ - "OSL-3.0", - "AFL-3.0" - ] -} diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json index a3f9f5da95a04..35063d1516784 100644 --- a/app/code/Magento/Authorization/composer.json +++ b/app/code/Magento/Authorization/composer.json @@ -7,7 +7,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/Authorizenet/Model/Directpost/Request.php b/app/code/Magento/Authorizenet/Model/Directpost/Request.php index d9a403e5c991e..fc78d836b6080 100644 --- a/app/code/Magento/Authorizenet/Model/Directpost/Request.php +++ b/app/code/Magento/Authorizenet/Model/Directpost/Request.php @@ -112,50 +112,50 @@ public function setDataFromOrder( sprintf('%.2F', $order->getBaseShippingAmount()) ); - //need to use strval() because NULL values IE6-8 decodes as "null" in JSON in JavaScript, + //need to use (string) because NULL values IE6-8 decodes as "null" in JSON in JavaScript, //but we need "" for null values. $billing = $order->getBillingAddress(); if (!empty($billing)) { - $this->setXFirstName(strval($billing->getFirstname())) - ->setXLastName(strval($billing->getLastname())) - ->setXCompany(strval($billing->getCompany())) - ->setXAddress(strval($billing->getStreetLine(1))) - ->setXCity(strval($billing->getCity())) - ->setXState(strval($billing->getRegion())) - ->setXZip(strval($billing->getPostcode())) - ->setXCountry(strval($billing->getCountryId())) - ->setXPhone(strval($billing->getTelephone())) - ->setXFax(strval($billing->getFax())) - ->setXCustId(strval($billing->getCustomerId())) - ->setXCustomerIp(strval($order->getRemoteIp())) - ->setXCustomerTaxId(strval($billing->getTaxId())) - ->setXEmail(strval($order->getCustomerEmail())) - ->setXEmailCustomer(strval($paymentMethod->getConfigData('email_customer'))) - ->setXMerchantEmail(strval($paymentMethod->getConfigData('merchant_email'))); + $this->setXFirstName((string)$billing->getFirstname()) + ->setXLastName((string)$billing->getLastname()) + ->setXCompany((string)$billing->getCompany()) + ->setXAddress((string)$billing->getStreetLine(1)) + ->setXCity((string)$billing->getCity()) + ->setXState((string)$billing->getRegion()) + ->setXZip((string)$billing->getPostcode()) + ->setXCountry((string)$billing->getCountryId()) + ->setXPhone((string)$billing->getTelephone()) + ->setXFax((string)$billing->getFax()) + ->setXCustId((string)$billing->getCustomerId()) + ->setXCustomerIp((string)$order->getRemoteIp()) + ->setXCustomerTaxId((string)$billing->getTaxId()) + ->setXEmail((string)$order->getCustomerEmail()) + ->setXEmailCustomer((string)$paymentMethod->getConfigData('email_customer')) + ->setXMerchantEmail((string)$paymentMethod->getConfigData('merchant_email')); } $shipping = $order->getShippingAddress(); if (!empty($shipping)) { $this->setXShipToFirstName( - strval($shipping->getFirstname()) + (string)$shipping->getFirstname() )->setXShipToLastName( - strval($shipping->getLastname()) + (string)$shipping->getLastname() )->setXShipToCompany( - strval($shipping->getCompany()) + (string)$shipping->getCompany() )->setXShipToAddress( - strval($shipping->getStreetLine(1)) + (string)$shipping->getStreetLine(1) )->setXShipToCity( - strval($shipping->getCity()) + (string)$shipping->getCity() )->setXShipToState( - strval($shipping->getRegion()) + (string)$shipping->getRegion() )->setXShipToZip( - strval($shipping->getPostcode()) + (string)$shipping->getPostcode() )->setXShipToCountry( - strval($shipping->getCountryId()) + (string)$shipping->getCountryId() ); } - $this->setXPoNum(strval($payment->getPoNumber())); + $this->setXPoNum((string)$payment->getPoNumber()); return $this; } diff --git a/app/code/Magento/Authorizenet/Test/Mftf/composer.json b/app/code/Magento/Authorizenet/Test/Mftf/composer.json deleted file mode 100644 index 68bf6b42ac8f1..0000000000000 --- a/app/code/Magento/Authorizenet/Test/Mftf/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "magento/functional-test-module-authorizenet", - "description": "N/A", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.0.13|~7.1.0", - "magento/functional-test-module-sales": "100.0.0-dev", - "magento/functional-test-module-store": "100.0.0-dev", - "magento/functional-test-module-quote": "100.0.0-dev", - "magento/functional-test-module-checkout": "100.0.0-dev", - "magento/functional-test-module-backend": "100.0.0-dev", - "magento/functional-test-module-payment": "100.0.0-dev", - "magento/functional-test-module-catalog": "100.0.0-dev", - "magento/magento2-functional-testing-framework": "2.2.0" - }, - "suggest": { - "magento/functional-test-module-config": "100.0.0-dev" - }, - "type": "magento2-test", - "license": [ - "proprietary" - ] -} diff --git a/app/code/Magento/Authorizenet/composer.json b/app/code/Magento/Authorizenet/composer.json index 0046ba01adbe8..90f19e36777b2 100644 --- a/app/code/Magento/Authorizenet/composer.json +++ b/app/code/Magento/Authorizenet/composer.json @@ -16,7 +16,7 @@ "magento/module-config": "101.0.*" }, "type": "magento2-module", - "version": "100.2.1", + "version": "100.2.2", "license": [ "proprietary" ], diff --git a/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js b/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js index 8edc38dce6f60..8c4c90bf111de 100644 --- a/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js +++ b/app/code/Magento/Authorizenet/view/frontend/requirejs-config.js @@ -6,7 +6,8 @@ var config = { map: { '*': { - transparent: 'Magento_Payment/transparent' + transparent: 'Magento_Payment/js/transparent', + 'Magento_Payment/transparent': 'Magento_Payment/js/transparent' } } }; diff --git a/app/code/Magento/Backend/App/Action/Plugin/Authentication.php b/app/code/Magento/Backend/App/Action/Plugin/Authentication.php index 68506a521c1cf..4b25e9921e404 100644 --- a/app/code/Magento/Backend/App/Action/Plugin/Authentication.php +++ b/app/code/Magento/Backend/App/Action/Plugin/Authentication.php @@ -160,7 +160,7 @@ protected function _processNotLoggedInUser(\Magento\Framework\App\RequestInterfa } else { $this->_actionFlag->set('', \Magento\Framework\App\ActionInterface::FLAG_NO_DISPATCH, true); $this->_response->setRedirect($this->_url->getCurrentUrl()); - $this->messageManager->addError(__('Invalid Form Key. Please refresh the page.')); + $this->messageManager->addErrorMessage(__('Invalid Form Key. Please refresh the page.')); $isRedirectNeeded = true; } } @@ -205,7 +205,7 @@ protected function _performLogin(\Magento\Framework\App\RequestInterface $reques $this->_auth->login($username, $password); } catch (AuthenticationException $e) { if (!$request->getParam('messageSent')) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); $request->setParam('messageSent', true); $outputValue = false; } diff --git a/app/code/Magento/Backend/App/Config.php b/app/code/Magento/Backend/App/Config.php index bb60a1e69dd47..e0983139a690d 100644 --- a/app/code/Magento/Backend/App/Config.php +++ b/app/code/Magento/Backend/App/Config.php @@ -68,6 +68,6 @@ public function isSetFlag($path) if ($path) { $configPath .= '/' . $path; } - return (bool) $this->appConfig->get(System::CONFIG_TYPE, $configPath); + return (bool)$this->appConfig->get(System::CONFIG_TYPE, $configPath); } } diff --git a/app/code/Magento/Backend/App/DefaultPath.php b/app/code/Magento/Backend/App/DefaultPath.php index df8b718389741..b790a2edc3fab 100644 --- a/app/code/Magento/Backend/App/DefaultPath.php +++ b/app/code/Magento/Backend/App/DefaultPath.php @@ -42,6 +42,6 @@ public function __construct(\Magento\Backend\App\ConfigInterface $config) */ public function getPart($code) { - return isset($this->_parts[$code]) ? $this->_parts[$code] : null; + return $this->_parts[$code] ?? null; } } diff --git a/app/code/Magento/Backend/Block/Dashboard/Bar.php b/app/code/Magento/Backend/Block/Dashboard/Bar.php index 29557f12c1093..7ccb2d51ccd1b 100644 --- a/app/code/Magento/Backend/Block/Dashboard/Bar.php +++ b/app/code/Magento/Backend/Block/Dashboard/Bar.php @@ -38,14 +38,6 @@ public function getTotals() */ public function addTotal($label, $value, $isQuantity = false) { - /*if (!$isQuantity) { - $value = $this->format($value); - $decimals = substr($value, -2); - $value = substr($value, 0, -2); - } else { - $value = ($value != '')?$value:0; - $decimals = ''; - }*/ if (!$isQuantity) { $value = $this->format($value); } diff --git a/app/code/Magento/Backend/Block/Media/Uploader.php b/app/code/Magento/Backend/Block/Media/Uploader.php index 4987cb248bd0b..7e1ad03470720 100644 --- a/app/code/Magento/Backend/Block/Media/Uploader.php +++ b/app/code/Magento/Backend/Block/Media/Uploader.php @@ -3,8 +3,14 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Backend\Block\Media; +use Magento\Framework\App\ObjectManager; +use Magento\Framework\Serialize\Serializer\Json; +use Magento\Framework\Image\Adapter\ConfigInterface; + /** * Adminhtml media library uploader * @api @@ -27,17 +33,34 @@ class Uploader extends \Magento\Backend\Block\Widget */ protected $_fileSizeService; + /** + * @var Json + */ + private $jsonEncoder; + + /** + * @var ConfigInterface + */ + private $imageConfig; + /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\File\Size $fileSize * @param array $data + * @param Json $jsonEncoder + * @param ConfigInterface $imageConfig */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\File\Size $fileSize, - array $data = [] + array $data = [], + Json $jsonEncoder = null, + ConfigInterface $imageConfig = null ) { $this->_fileSizeService = $fileSize; + $this->jsonEncoder = $jsonEncoder ?: ObjectManager::getInstance()->get(Json::class); + $this->imageConfig = $imageConfig ?: ObjectManager::getInstance()->get(ConfigInterface::class); + parent::__construct($context, $data); } @@ -79,6 +102,26 @@ public function getFileSizeService() return $this->_fileSizeService; } + /** + * Get Image Upload Maximum Width Config + * + * @return int + */ + public function getImageUploadMaxWidth() + { + return $this->imageConfig->getMaxWidth(); + } + + /** + * Get Image Upload Maximum Height Config + * + * @return int + */ + public function getImageUploadMaxHeight() + { + return $this->imageConfig->getMaxHeight(); + } + /** * Prepares layout and set element renderer * @@ -107,7 +150,7 @@ public function getJsObjectName() */ public function getConfigJson() { - return $this->_coreData->jsonEncode($this->getConfig()->getData()); + return $this->jsonEncoder->encode($this->getConfig()->getData()); } /** diff --git a/app/code/Magento/Backend/Block/Menu.php b/app/code/Magento/Backend/Block/Menu.php index bb239d31b1779..eae066b07ac38 100644 --- a/app/code/Magento/Backend/Block/Menu.php +++ b/app/code/Magento/Backend/Block/Menu.php @@ -76,6 +76,11 @@ class Menu extends \Magento\Backend\Block\Template */ private $anchorRenderer; + /** + * @var ConfigInterface + */ + private $routeConfig; + /** * @param Template\Context $context * @param \Magento\Backend\Model\UrlInterface $url @@ -83,9 +88,11 @@ class Menu extends \Magento\Backend\Block\Template * @param \Magento\Backend\Model\Auth\Session $authSession * @param \Magento\Backend\Model\Menu\Config $menuConfig * @param \Magento\Framework\Locale\ResolverInterface $localeResolver + * @param \Magento\Framework\App\Route\ConfigInterface $routeConfig * @param array $data * @param MenuItemChecker|null $menuItemChecker * @param AnchorRenderer|null $anchorRenderer + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Backend\Block\Template\Context $context, @@ -96,7 +103,8 @@ public function __construct( \Magento\Framework\Locale\ResolverInterface $localeResolver, array $data = [], MenuItemChecker $menuItemChecker = null, - AnchorRenderer $anchorRenderer = null + AnchorRenderer $anchorRenderer = null, + \Magento\Framework\App\Route\ConfigInterface $routeConfig = null ) { $this->_url = $url; $this->_iteratorFactory = $iteratorFactory; @@ -105,6 +113,9 @@ public function __construct( $this->_localeResolver = $localeResolver; $this->menuItemChecker = $menuItemChecker; $this->anchorRenderer = $anchorRenderer; + $this->routeConfig = $routeConfig ?: + \Magento\Framework\App\ObjectManager::getInstance() + ->get(\Magento\Framework\App\Route\ConfigInterface::class); parent::__construct($context, $data); } @@ -203,8 +214,9 @@ protected function _afterToHtml($html) */ protected function _callbackSecretKey($match) { + $routeId = $this->routeConfig->getRouteByFrontName($match[1]); return \Magento\Backend\Model\UrlInterface::SECRET_KEY_PARAM_NAME . '/' . $this->_url->getSecretKey( - $match[1], + $routeId, $match[2], $match[3] ); diff --git a/app/code/Magento/Backend/Block/Widget/Button/ButtonList.php b/app/code/Magento/Backend/Block/Widget/Button/ButtonList.php index 94af9a1d7578f..e2d71d171cf15 100644 --- a/app/code/Magento/Backend/Block/Widget/Button/ButtonList.php +++ b/app/code/Magento/Backend/Block/Widget/Button/ButtonList.php @@ -127,12 +127,6 @@ public function getItems() */ public function sortButtons(Item $itemA, Item $itemB) { - $sortOrderA = intval($itemA->getSortOrder()); - $sortOrderB = intval($itemB->getSortOrder()); - - if ($sortOrderA == $sortOrderB) { - return 0; - } - return ($sortOrderA < $sortOrderB) ? -1 : 1; + return (int)$itemA->getSortOrder() <=> (int)$itemB->getSortOrder(); } } diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php index a5e4a34389671..1d8d658267020 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/Datetime.php @@ -26,7 +26,6 @@ public function getValue($index = null) { if ($index) { if ($data = $this->getData('value', 'orig_' . $index)) { - // date('Y-m-d', strtotime($data)); return $data; } return null; @@ -154,7 +153,7 @@ public function getEscapedValue($index = null) if (is_string($value)) { return $this->escapeHtml($value); } - + return $value; } diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/AbstractRenderer.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/AbstractRenderer.php index b8a2e283b29a0..9df8c532adfdd 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/AbstractRenderer.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/AbstractRenderer.php @@ -58,7 +58,7 @@ public function render(DataObject $row) $result .= $this->getColumn()->getEditOnly() ? '' : '' . $this->_getValue($row) . ''; - return $result . $this->_getInputValueElement($row) . '' ; + return $result . $this->_getInputValueElement($row) . ''; } return $this->_getValue($row); } 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 b3f467ce37c88..03566bce3fc34 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 @@ -82,7 +82,7 @@ public function render(\Magento\Framework\DataObject $row) { if ($data = (string)$this->_getValue($row)) { $currency_code = $this->_getCurrencyCode($row); - $data = floatval($data) * $this->_getRate($row); + $data = (float)$data * $this->_getRate($row); $sign = (bool)(int)$this->getColumn()->getShowNumberSign() && $data > 0 ? '+' : ''; $data = sprintf("%f", $data); $data = $this->_localeCurrency->getCurrency($currency_code)->toCurrency($data); @@ -118,10 +118,10 @@ protected function _getCurrencyCode($row) protected function _getRate($row) { if ($rate = $this->getColumn()->getRate()) { - return floatval($rate); + return (float)$rate; } if ($rate = $row->getData($this->getColumn()->getRateField())) { - return floatval($rate); + return (float)$rate; } return $this->_defaultBaseCurrency->getRate($this->_getCurrencyCode($row)); } diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Price.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Price.php index e4300c63485f5..9da23af83f036 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Price.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Price.php @@ -60,7 +60,7 @@ public function render(\Magento\Framework\DataObject $row) return $data; } - $data = floatval($data) * $this->_getRate($row); + $data = (float)$data * $this->_getRate($row); $data = sprintf("%f", $data); $data = $this->_localeCurrency->getCurrency($currencyCode)->toCurrency($data); return $data; @@ -94,10 +94,10 @@ protected function _getCurrencyCode($row) protected function _getRate($row) { if ($rate = $this->getColumn()->getRate()) { - return floatval($rate); + return (float)$rate; } if ($rate = $row->getData($this->getColumn()->getRateField())) { - return floatval($rate); + return (float)$rate; } return 1; } diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Massaction/AbstractMassaction.php b/app/code/Magento/Backend/Block/Widget/Grid/Massaction/AbstractMassaction.php index e790cbfa69d8a..99b9bb41ba1a1 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Massaction/AbstractMassaction.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Massaction/AbstractMassaction.php @@ -276,13 +276,13 @@ public function getGridIdsJson() } /** @var \Magento\Framework\Data\Collection $allIdsCollection */ $allIdsCollection = clone $this->getParentBlock()->getCollection(); - + if ($this->getMassactionIdField()) { $massActionIdField = $this->getMassactionIdField(); } else { $massActionIdField = $this->getParentBlock()->getMassactionIdField(); } - + $gridIds = $allIdsCollection->setPageSize(0)->getColumnValues($massActionIdField); if (!empty($gridIds)) { return join(",", $gridIds); diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Extended.php b/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Extended.php index eae1a137e927d..ca9799f390120 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Extended.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Extended.php @@ -273,13 +273,13 @@ public function getGridIdsJson() /** @var \Magento\Framework\Data\Collection $allIdsCollection */ $allIdsCollection = clone $this->getParentBlock()->getCollection(); - + if ($this->getMassactionIdField()) { $massActionIdField = $this->getMassactionIdField(); } else { $massActionIdField = $this->getParentBlock()->getMassactionIdField(); } - + $gridIds = $allIdsCollection->setPageSize(0)->getColumnValues($massActionIdField); if (!empty($gridIds)) { diff --git a/app/code/Magento/Backend/Block/Widget/Tabs.php b/app/code/Magento/Backend/Block/Widget/Tabs.php index ec3628d2fcb43..f913098378634 100644 --- a/app/code/Magento/Backend/Block/Widget/Tabs.php +++ b/app/code/Magento/Backend/Block/Widget/Tabs.php @@ -117,6 +117,7 @@ public function addTab($tabId, $tab) if (empty($tabId)) { throw new \Exception(__('Please correct the tab configuration and try again. Tab Id should be not empty')); } + if (is_array($tab)) { $this->_tabs[$tabId] = new \Magento\Framework\DataObject($tab); } elseif ($tab instanceof \Magento\Framework\DataObject) { @@ -126,6 +127,7 @@ public function addTab($tabId, $tab) } } elseif (is_string($tab)) { $this->_addTabByName($tab, $tabId); + if (!$this->_tabs[$tabId] instanceof TabInterface) { unset($this->_tabs[$tabId]); return $this; @@ -133,6 +135,7 @@ public function addTab($tabId, $tab) } else { throw new \Exception(__('Please correct the tab configuration and try again.')); } + if ($this->_tabs[$tabId]->getUrl() === null) { $this->_tabs[$tabId]->setUrl('#'); } @@ -143,10 +146,7 @@ public function addTab($tabId, $tab) $this->_tabs[$tabId]->setId($tabId); $this->_tabs[$tabId]->setTabId($tabId); - - if ($this->_activeTab === null) { - $this->_activeTab = $tabId; - } + if (true === $this->_tabs[$tabId]->getActive()) { $this->setActiveTab($tabId); } @@ -235,33 +235,108 @@ protected function _setActiveTab($tabId) */ protected function _beforeToHtml() { + $this->_tabs = $this->reorderTabs(); + if ($activeTab = $this->getRequest()->getParam('active_tab')) { $this->setActiveTab($activeTab); } elseif ($activeTabId = $this->_authSession->getActiveTabId()) { $this->_setActiveTab($activeTabId); } - $_new = []; + if ($this->_activeTab === null && !empty($this->_tabs)) { + /** @var TabInterface $tab */ + $this->_activeTab = (reset($this->_tabs))->getId(); + } + + $this->assign('tabs', $this->_tabs); + return parent::_beforeToHtml(); + } + + /** + * Reorder the tabs. + * + * @return array + */ + private function reorderTabs() + { + $orderByIdentity = []; + $orderByPosition = []; + $position = 100; + + /** + * Set the initial positions for each tab. + * + * @var string $key + * @var TabInterface $tab + */ foreach ($this->_tabs as $key => $tab) { - foreach ($this->_tabs as $k => $t) { - if ($t->getAfter() == $key) { - $_new[$key] = $tab; - $_new[$k] = $t; - } else { - if (!$tab->getAfter() || !in_array($tab->getAfter(), array_keys($this->_tabs))) { - $_new[$key] = $tab; - } - } - } + $tab->setPosition($position); + + $orderByIdentity[$key] = $tab; + $orderByPosition[$position] = $tab; + + $position += 100; } - $this->_tabs = $_new; - unset($_new); + return $this->applyTabsCorrectOrder($orderByPosition, $orderByIdentity); + } + + /** + * @param array $orderByPosition + * @param array $orderByIdentity + * + * @return array + */ + private function applyTabsCorrectOrder(array $orderByPosition, array $orderByIdentity) + { + $positionFactor = 1; + + /** + * Rearrange the positions by using the after tag for each tab. + * + * @var integer $position + * @var TabInterface $tab + */ + foreach ($orderByPosition as $position => $tab) { + if (!$tab->getAfter() || !in_array($tab->getAfter(), array_keys($orderByIdentity))) { + $positionFactor = 1; + continue; + } + + $grandPosition = $orderByIdentity[$tab->getAfter()]->getPosition(); + $newPosition = $grandPosition + $positionFactor; - $this->assign('tabs', $this->_tabs); - return parent::_beforeToHtml(); + unset($orderByPosition[$position]); + $orderByPosition[$newPosition] = $tab; + $tab->setPosition($newPosition); + + $positionFactor++; + } + + return $this->finalTabsSortOrder($orderByPosition); } + /** + * Apply the last sort order to tabs. + * + * @param array $orderByPosition + * + * @return array + */ + private function finalTabsSortOrder(array $orderByPosition) + { + ksort($orderByPosition); + + $ordered = []; + + /** @var TabInterface $tab */ + foreach ($orderByPosition as $tab) { + $ordered[$tab->getId()] = $tab; + } + + return $ordered; + } + /** * @return string */ diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php index 41e32c929287a..e55c449a0e5bb 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Auth/Logout.php @@ -16,7 +16,7 @@ class Logout extends \Magento\Backend\Controller\Adminhtml\Auth public function execute() { $this->_auth->logout(); - $this->messageManager->addSuccess(__('You have logged out.')); + $this->messageManager->addSuccessMessage(__('You have logged out.')); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php index 7a926b1c09c3e..888ce11313b8a 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanImages.php @@ -28,11 +28,11 @@ public function execute() try { $this->_objectManager->create(\Magento\Catalog\Model\Product\Image::class)->clearCache(); $this->_eventManager->dispatch('clean_catalog_images_cache_after'); - $this->messageManager->addSuccess(__('The image cache was cleaned.')); + $this->messageManager->addSuccessMessage(__('The image cache was cleaned.')); } catch (LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('An error occurred while clearing the image cache.')); + $this->messageManager->addExceptionMessage($e, __('An error occurred while clearing the image cache.')); } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php index 72f23ab65cf8a..5df0a7779c4c1 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanMedia.php @@ -28,11 +28,12 @@ public function execute() try { $this->_objectManager->get(\Magento\Framework\View\Asset\MergeService::class)->cleanMergedJsCss(); $this->_eventManager->dispatch('clean_media_cache_after'); - $this->messageManager->addSuccess(__('The JavaScript/CSS cache has been cleaned.')); + $this->messageManager->addSuccessMessage(__('The JavaScript/CSS cache has been cleaned.')); } catch (LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('An error occurred while clearing the JavaScript/CSS cache.')); + $this->messageManager + ->addExceptionMessage($e, __('An error occurred while clearing the JavaScript/CSS cache.')); } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php index 27ae2fc31e150..489eb5799a5e7 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/CleanStaticFiles.php @@ -26,7 +26,7 @@ public function execute() { $this->_objectManager->get(\Magento\Framework\App\State\CleanupFiles::class)->clearMaterializedViewFiles(); $this->_eventManager->dispatch('clean_static_files_cache_after'); - $this->messageManager->addSuccess(__('The static files cache has been cleaned.')); + $this->messageManager->addSuccessMessage(__('The static files cache has been cleaned.')); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php index ca89ea58fa6f3..a2f18b4baf53d 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushAll.php @@ -27,7 +27,7 @@ public function execute() foreach ($this->_cacheFrontendPool as $cacheFrontend) { $cacheFrontend->getBackend()->clean(); } - $this->messageManager->addSuccess(__("You flushed the cache storage.")); + $this->messageManager->addSuccessMessage(__("You flushed the cache storage.")); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); return $resultRedirect->setPath('adminhtml/*'); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php index f0fed159e0f22..90ed3432fa87b 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/FlushSystem.php @@ -27,7 +27,7 @@ public function execute() $cacheFrontend->clean(); } $this->_eventManager->dispatch('adminhtml_cache_flush_system'); - $this->messageManager->addSuccess(__("The Magento cache storage has been flushed.")); + $this->messageManager->addSuccessMessage(__("The Magento cache storage has been flushed.")); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); return $resultRedirect->setPath('adminhtml/*'); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php index 2bfa937b06b77..03b88ca1d3f47 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassDisable.php @@ -67,12 +67,12 @@ private function disableCache() } if ($updatedTypes > 0) { $this->_cacheState->persist(); - $this->messageManager->addSuccess(__("%1 cache type(s) disabled.", $updatedTypes)); + $this->messageManager->addSuccessMessage(__("%1 cache type(s) disabled.", $updatedTypes)); } } catch (LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('An error occurred while disabling cache.')); + $this->messageManager->addExceptionMessage($e, __('An error occurred while disabling cache.')); } } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php index 113e0f2d8961b..1b98a00d4bf35 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassEnable.php @@ -66,12 +66,12 @@ private function enableCache() } if ($updatedTypes > 0) { $this->_cacheState->persist(); - $this->messageManager->addSuccess(__("%1 cache type(s) enabled.", $updatedTypes)); + $this->messageManager->addSuccessMessage(__("%1 cache type(s) enabled.", $updatedTypes)); } } catch (LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('An error occurred while enabling cache.')); + $this->messageManager->addExceptionMessage($e, __('An error occurred while enabling cache.')); } } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php index 3843b030afb3d..bde211debcf72 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Cache/MassRefresh.php @@ -37,12 +37,12 @@ public function execute() $updatedTypes++; } if ($updatedTypes > 0) { - $this->messageManager->addSuccess(__("%1 cache type(s) refreshed.", $updatedTypes)); + $this->messageManager->addSuccessMessage(__("%1 cache type(s) refreshed.", $updatedTypes)); } } catch (LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('An error occurred while refreshing cache.')); + $this->messageManager->addExceptionMessage($e, __('An error occurred while refreshing cache.')); } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php index f831fa67f4bb0..c10d1a77997b7 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/RefreshStatistics.php @@ -34,9 +34,9 @@ public function execute() foreach ($collectionsNames as $collectionName) { $this->_objectManager->create($collectionName)->aggregate(); } - $this->messageManager->addSuccess(__('We updated lifetime statistic.')); + $this->messageManager->addSuccessMessage(__('We updated lifetime statistic.')); } catch (\Exception $e) { - $this->messageManager->addError(__('We can\'t refresh lifetime statistics.')); + $this->messageManager->addErrorMessage(__('We can\'t refresh lifetime statistics.')); $this->logger->critical($e); } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php index 1b10c151a9d21..d95b0541c2c76 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Account/Save.php @@ -76,12 +76,12 @@ public function execute() $errors = $user->validate(); if ($errors !== true && !empty($errors)) { foreach ($errors as $error) { - $this->messageManager->addError($error); + $this->messageManager->addErrorMessage($error); } } else { $user->save(); $user->sendNotificationEmailsIfRequired(); - $this->messageManager->addSuccess(__('You saved the account.')); + $this->messageManager->addSuccessMessage(__('You saved the account.')); } } catch (UserLockedException $e) { $this->_auth->logout(); @@ -91,12 +91,12 @@ public function execute() } catch (ValidatorException $e) { $this->messageManager->addMessages($e->getMessages()); if ($e->getMessage()) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } } catch (LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addError(__('An error occurred while saving account.')); + $this->messageManager->addErrorMessage(__('An error occurred while saving account.')); } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php index 76402169f269e..21f28188cf874 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Delete.php @@ -19,11 +19,11 @@ public function execute() try { $design->delete(); - $this->messageManager->addSuccess(__('You deleted the design change.')); + $this->messageManager->addSuccessMessage(__('You deleted the design change.')); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __("You can't delete the design change.")); + $this->messageManager->addExceptionMessage($e, __("You can't delete the design change.")); } } /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php index 1f478604ced7d..0228b48f7f11e 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php @@ -50,9 +50,9 @@ public function execute() try { $design->save(); $this->_eventManager->dispatch('theme_save_after'); - $this->messageManager->addSuccess(__('You saved the design change.')); + $this->messageManager->addSuccessMessage(__('You saved the design change.')); } catch (\Exception $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); $this->_objectManager->get(\Magento\Backend\Model\Session::class)->setDesignData($data); return $resultRedirect->setPath('adminhtml/*/', ['id' => $design->getId()]); } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php index 4fbae6abb423a..0beeb5168b6d1 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php @@ -103,12 +103,12 @@ protected function _backupDatabase() ->setType('db') ->setPath($filesystem->getDirectoryRead(DirectoryList::VAR_DIR)->getAbsolutePath('backups')); $backupDb->createBackup($backup); - $this->messageManager->addSuccess(__('The database was backed up.')); + $this->messageManager->addSuccessMessage(__('The database was backed up.')); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); return false; } catch (\Exception $e) { - $this->messageManager->addException( + $this->messageManager->addExceptionMessage( $e, __('We can\'t create a backup right now. Please try again later.') ); @@ -125,7 +125,7 @@ protected function _backupDatabase() */ protected function _addDeletionNotice($typeTitle) { - $this->messageManager->addNotice( + $this->messageManager->addNoticeMessage( __( 'Deleting a %1 will not delete the information associated with the %1 (e.g. categories, products, etc.)' . ', but the %1 will not be able to be restored. It is suggested that you create a database backup ' diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php index 925ae4c69ee8e..4e323be709ae1 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroup.php @@ -15,13 +15,13 @@ public function execute() { $itemId = $this->getRequest()->getParam('item_id', null); if (!($model = $this->_objectManager->create(\Magento\Store\Model\Group::class)->load($itemId))) { - $this->messageManager->addError(__('Something went wrong. Please try again.')); + $this->messageManager->addErrorMessage(__('Something went wrong. Please try again.')); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ $redirectResult = $this->resultRedirectFactory->create(); return $redirectResult->setPath('adminhtml/*/'); } if (!$model->isCanDelete()) { - $this->messageManager->addError(__('This store cannot be deleted.')); + $this->messageManager->addErrorMessage(__('This store cannot be deleted.')); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ $redirectResult = $this->resultRedirectFactory->create(); return $redirectResult->setPath('adminhtml/*/editGroup', ['group_id' => $itemId]); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php index b6fbd88c7669c..75d285b139483 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteGroupPost.php @@ -7,25 +7,34 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store; use Magento\Framework\Controller\ResultFactory; +use Magento\Framework\App\Request\Http as HttpRequest; +use Magento\Framework\Exception\NotFoundException; class DeleteGroupPost extends \Magento\Backend\Controller\Adminhtml\System\Store { /** * @return \Magento\Backend\Model\View\Result\Redirect + * @throws NotFoundException */ public function execute() { - $itemId = $this->getRequest()->getParam('item_id'); - + /** @var HttpRequest $request */ + $request = $this->getRequest(); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ - $redirectResult = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $redirectResult = $this->resultFactory->create( + ResultFactory::TYPE_REDIRECT + ); + if (!$request->isPost()) { + throw new NotFoundException(__('Page not found.')); + } + $itemId = $request->getParam('item_id'); if (!($model = $this->_objectManager->create(\Magento\Store\Model\Group::class)->load($itemId))) { - $this->messageManager->addError(__('Something went wrong. Please try again.')); + $this->messageManager->addErrorMessage(__('Something went wrong. Please try again.')); return $redirectResult->setPath('adminhtml/*/'); } if (!$model->isCanDelete()) { - $this->messageManager->addError(__('This store cannot be deleted.')); + $this->messageManager->addErrorMessage(__('This store cannot be deleted.')); return $redirectResult->setPath('adminhtml/*/editGroup', ['group_id' => $model->getId()]); } @@ -35,12 +44,12 @@ public function execute() try { $model->delete(); - $this->messageManager->addSuccess(__('You deleted the store.')); + $this->messageManager->addSuccessMessage(__('You deleted the store.')); return $redirectResult->setPath('adminhtml/*/'); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('Unable to delete the store. Please try again later.')); + $this->messageManager->addExceptionMessage($e, __('Unable to delete the store. Please try again later.')); } return $redirectResult->setPath('adminhtml/*/editGroup', ['group_id' => $itemId]); } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php index b31de6cacc5ff..c340b1ec53aa5 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStore.php @@ -15,13 +15,13 @@ public function execute() { $itemId = $this->getRequest()->getParam('item_id', null); if (!($model = $this->_objectManager->create(\Magento\Store\Model\Store::class)->load($itemId))) { - $this->messageManager->addError(__('Something went wrong. Please try again.')); + $this->messageManager->addErrorMessage(__('Something went wrong. Please try again.')); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ $redirectResult = $this->resultRedirectFactory->create(); return $redirectResult->setPath('adminhtml/*/'); } if (!$model->isCanDelete()) { - $this->messageManager->addError(__('This store view cannot be deleted.')); + $this->messageManager->addErrorMessage(__('This store view cannot be deleted.')); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ $redirectResult = $this->resultRedirectFactory->create(); return $redirectResult->setPath('adminhtml/*/editStore', ['store_id' => $itemId]); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php index 13b104c5ec4c0..d39ad6e005d8c 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteStorePost.php @@ -6,7 +6,9 @@ */ namespace Magento\Backend\Controller\Adminhtml\System\Store; +use Magento\Framework\App\Request\Http as HttpRequest; use Magento\Framework\Controller\ResultFactory; +use Magento\Framework\Exception\NotFoundException; class DeleteStorePost extends \Magento\Backend\Controller\Adminhtml\System\Store { @@ -14,19 +16,27 @@ class DeleteStorePost extends \Magento\Backend\Controller\Adminhtml\System\Store * Delete store view post action * * @return \Magento\Backend\Model\View\Result\Redirect + * @throws NotFoundException */ public function execute() { - $itemId = $this->getRequest()->getParam('item_id'); - + /** @var HttpRequest $request */ + $request = $this->getRequest(); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ - $redirectResult = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $redirectResult = $this->resultFactory->create( + ResultFactory::TYPE_REDIRECT + ); + if (!$request->isPost()) { + throw new NotFoundException(__('Page not found.')); + } + + $itemId = $request->getParam('item_id'); if (!($model = $this->_objectManager->create(\Magento\Store\Model\Store::class)->load($itemId))) { - $this->messageManager->addError(__('Something went wrong. Please try again.')); + $this->messageManager->addErrorMessage(__('Something went wrong. Please try again.')); return $redirectResult->setPath('adminhtml/*/'); } if (!$model->isCanDelete()) { - $this->messageManager->addError(__('This store view cannot be deleted.')); + $this->messageManager->addErrorMessage(__('This store view cannot be deleted.')); return $redirectResult->setPath('adminhtml/*/editStore', ['store_id' => $model->getId()]); } @@ -37,12 +47,13 @@ public function execute() try { $model->delete(); - $this->messageManager->addSuccess(__('You deleted the store view.')); + $this->messageManager->addSuccessMessage(__('You deleted the store view.')); return $redirectResult->setPath('adminhtml/*/'); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('Unable to delete the store view. Please try again later.')); + $this->messageManager + ->addExceptionMessage($e, __('Unable to delete the store view. Please try again later.')); } return $redirectResult->setPath('adminhtml/*/editStore', ['store_id' => $itemId]); } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php index 1f2ec4b2ba4b1..d86f57daa396c 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsite.php @@ -15,13 +15,13 @@ public function execute() { $itemId = $this->getRequest()->getParam('item_id', null); if (!($model = $this->_objectManager->create(\Magento\Store\Model\Website::class)->load($itemId))) { - $this->messageManager->addError(__('Something went wrong. Please try again.')); + $this->messageManager->addErrorMessage(__('Something went wrong. Please try again.')); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ $redirectResult = $this->resultRedirectFactory->create(); return $redirectResult->setPath('adminhtml/*/'); } if (!$model->isCanDelete()) { - $this->messageManager->addError(__('This website cannot be deleted.')); + $this->messageManager->addErrorMessage(__('This website cannot be deleted.')); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ $redirectResult = $this->resultRedirectFactory->create(); return $redirectResult->setPath('adminhtml/*/editWebsite', ['website_id' => $itemId]); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php index c2d24b8c41a8c..aa9ac5dc7a437 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/DeleteWebsitePost.php @@ -7,27 +7,36 @@ namespace Magento\Backend\Controller\Adminhtml\System\Store; use Magento\Framework\Controller\ResultFactory; +use Magento\Framework\App\Request\Http as HttpRequest; +use Magento\Framework\Exception\NotFoundException; class DeleteWebsitePost extends \Magento\Backend\Controller\Adminhtml\System\Store { /** * @return \Magento\Backend\Model\View\Result\Redirect + * @throws NotFoundException */ public function execute() { - $itemId = $this->getRequest()->getParam('item_id'); - $model = $this->_objectManager->create(\Magento\Store\Model\Website::class); - $model->load($itemId); - + /** @var HttpRequest $request */ + $request = $this->getRequest(); /** @var \Magento\Backend\Model\View\Result\Redirect $redirectResult */ - $redirectResult = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); + $redirectResult = $this->resultFactory->create( + ResultFactory::TYPE_REDIRECT + ); + if (!$request->isPost()) { + throw new NotFoundException(__('Page not found.')); + } + $itemId = $request->getParam('item_id'); + $model = $this->_objectManager->create(\Magento\Store\Model\Website::class); + $model->load($itemId); if (!$model) { - $this->messageManager->addError(__('Something went wrong. Please try again.')); + $this->messageManager->addErrorMessage(__('Something went wrong. Please try again.')); return $redirectResult->setPath('adminhtml/*/'); } if (!$model->isCanDelete()) { - $this->messageManager->addError(__('This website cannot be deleted.')); + $this->messageManager->addErrorMessage(__('This website cannot be deleted.')); return $redirectResult->setPath('adminhtml/*/editWebsite', ['website_id' => $model->getId()]); } @@ -37,12 +46,12 @@ public function execute() try { $model->delete(); - $this->messageManager->addSuccess(__('You deleted the website.')); + $this->messageManager->addSuccessMessage(__('You deleted the website.')); return $redirectResult->setPath('adminhtml/*/'); } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { - $this->messageManager->addException($e, __('Unable to delete the website. Please try again later.')); + $this->messageManager->addExceptionMessage($e, __('Unable to delete the website. Please try again later.')); } return $redirectResult->setPath('*/*/editWebsite', ['website_id' => $itemId]); } diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php index cbc068a480865..a8651984cfa63 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/EditStore.php @@ -57,7 +57,7 @@ public function execute() if ($model->getId() || $this->_coreRegistry->registry('store_action') == 'add') { $this->_coreRegistry->register('store_data', $model); if ($this->_coreRegistry->registry('store_action') == 'edit' && $codeBase && !$model->isReadOnly()) { - $this->messageManager->addNotice($codeBase); + $this->messageManager->addNoticeMessage($codeBase); } $resultPage = $this->createPage(); if ($this->_coreRegistry->registry('store_action') == 'add') { @@ -71,7 +71,7 @@ public function execute() )); return $resultPage; } else { - $this->messageManager->addError($notExists); + $this->messageManager->addErrorMessage($notExists); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); return $resultRedirect->setPath('adminhtml/*/'); diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php index 8ca783f887ec4..910511c2b275e 100644 --- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php +++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store/Save.php @@ -32,7 +32,7 @@ private function processWebsiteSave($postData) } $websiteModel->save(); - $this->messageManager->addSuccess(__('You saved the website.')); + $this->messageManager->addSuccessMessage(__('You saved the website.')); return $postData; } @@ -68,7 +68,7 @@ private function processStoreSave($postData) ); } $storeModel->save(); - $this->messageManager->addSuccess(__('You saved the store view.')); + $this->messageManager->addSuccessMessage(__('You saved the store view.')); return $postData; } @@ -98,7 +98,7 @@ private function processGroupSave($postData) ); } $groupModel->save(); - $this->messageManager->addSuccess(__('You saved the store.')); + $this->messageManager->addSuccessMessage(__('You saved the store.')); return $postData; } @@ -134,10 +134,10 @@ public function execute() $redirectResult->setPath('adminhtml/*/'); return $redirectResult; } catch (\Magento\Framework\Exception\LocalizedException $e) { - $this->messageManager->addError($e->getMessage()); + $this->messageManager->addErrorMessage($e->getMessage()); $this->_getSession()->setPostData($postData); } catch (\Exception $e) { - $this->messageManager->addException( + $this->messageManager->addExceptionMessage( $e, __('Something went wrong while saving. Please review the error log.') ); diff --git a/app/code/Magento/Backend/Helper/Dashboard/Order.php b/app/code/Magento/Backend/Helper/Dashboard/Order.php index 9fc2c2cdb4e6f..c19c28b6e33eb 100644 --- a/app/code/Magento/Backend/Helper/Dashboard/Order.php +++ b/app/code/Magento/Backend/Helper/Dashboard/Order.php @@ -13,7 +13,7 @@ * @api * @since 100.0.2 */ -class Order extends \Magento\Backend\Helper\Dashboard\AbstractDashboard +class Order extends AbstractDashboard { /** * @var \Magento\Reports\Model\ResourceModel\Order\Collection @@ -29,32 +29,25 @@ class Order extends \Magento\Backend\Helper\Dashboard\AbstractDashboard /** * @param \Magento\Framework\App\Helper\Context $context * @param \Magento\Reports\Model\ResourceModel\Order\Collection $orderCollection + * @param \Magento\Store\Model\StoreManagerInterface $storeManager */ public function __construct( \Magento\Framework\App\Helper\Context $context, - \Magento\Reports\Model\ResourceModel\Order\Collection $orderCollection + \Magento\Reports\Model\ResourceModel\Order\Collection $orderCollection, + \Magento\Store\Model\StoreManagerInterface $storeManager = null ) { $this->_orderCollection = $orderCollection; - parent::__construct($context); - } + $this->_storeManager = $storeManager ?: ObjectManager::getInstance() + ->get(\Magento\Store\Model\StoreManagerInterface::class); - /** - * The getter function to get the new StoreManager dependency - * - * @return \Magento\Store\Model\StoreManagerInterface - * - * @deprecated 100.1.0 - */ - private function getStoreManager() - { - if ($this->_storeManager === null) { - $this->_storeManager = ObjectManager::getInstance()->get(\Magento\Store\Model\StoreManagerInterface::class); - } - return $this->_storeManager; + parent::__construct($context); } /** * @return void + * + * @throws \Magento\Framework\Exception\LocalizedException + * @throws \Magento\Framework\Exception\NoSuchEntityException */ protected function _initCollection() { @@ -65,15 +58,15 @@ protected function _initCollection() if ($this->getParam('store')) { $this->_collection->addFieldToFilter('store_id', $this->getParam('store')); } elseif ($this->getParam('website')) { - $storeIds = $this->getStoreManager()->getWebsite($this->getParam('website'))->getStoreIds(); + $storeIds = $this->_storeManager->getWebsite($this->getParam('website'))->getStoreIds(); $this->_collection->addFieldToFilter('store_id', ['in' => implode(',', $storeIds)]); } elseif ($this->getParam('group')) { - $storeIds = $this->getStoreManager()->getGroup($this->getParam('group'))->getStoreIds(); + $storeIds = $this->_storeManager->getGroup($this->getParam('group'))->getStoreIds(); $this->_collection->addFieldToFilter('store_id', ['in' => implode(',', $storeIds)]); } elseif (!$this->_collection->isLive()) { $this->_collection->addFieldToFilter( 'store_id', - ['eq' => $this->getStoreManager()->getStore(\Magento\Store\Model\Store::ADMIN_CODE)->getId()] + ['eq' => $this->_storeManager->getStore(\Magento\Store\Model\Store::ADMIN_CODE)->getId()] ); } $this->_collection->load(); diff --git a/app/code/Magento/Backend/Model/Menu.php b/app/code/Magento/Backend/Model/Menu.php index 22110cf52de2b..b86ea0c082956 100644 --- a/app/code/Magento/Backend/Model/Menu.php +++ b/app/code/Magento/Backend/Model/Menu.php @@ -83,7 +83,7 @@ public function add(Item $item, $parentId = null, $index = null) } $parentItem->getChildren()->add($item, null, $index); } else { - $index = intval($index); + $index = (int)$index; if (!isset($this[$index])) { $this->offsetSet($index, $item); $this->_logger->info( diff --git a/app/code/Magento/Backend/Model/Menu/Builder.php b/app/code/Magento/Backend/Model/Menu/Builder.php index ae572deab53d9..1c6e900bc5cfc 100644 --- a/app/code/Magento/Backend/Model/Menu/Builder.php +++ b/app/code/Magento/Backend/Model/Menu/Builder.php @@ -102,6 +102,6 @@ public function getResult(\Magento\Backend\Model\Menu $menu) */ protected function _getParam($params, $paramName, $defaultValue = null) { - return isset($params[$paramName]) ? $params[$paramName] : $defaultValue; + return $params[$paramName] ?? $defaultValue; } } diff --git a/app/code/Magento/Backend/Test/Mftf/ActionGroup/ConfigurationActionGroup.xml b/app/code/Magento/Backend/Test/Mftf/ActionGroup/ConfigurationActionGroup.xml new file mode 100644 index 0000000000000..1f6b992df61e6 --- /dev/null +++ b/app/code/Magento/Backend/Test/Mftf/ActionGroup/ConfigurationActionGroup.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/code/Magento/Backend/Test/Mftf/Page/AdminConfigurationGeneralSectionPage.xml b/app/code/Magento/Backend/Test/Mftf/Page/AdminConfigurationGeneralSectionPage.xml new file mode 100644 index 0000000000000..c0c4f4bd9d3a5 --- /dev/null +++ b/app/code/Magento/Backend/Test/Mftf/Page/AdminConfigurationGeneralSectionPage.xml @@ -0,0 +1,11 @@ + + + +
+ + diff --git a/app/code/Magento/Sales/Test/Mftf/Page/InvoiceNewPage.xml b/app/code/Magento/Backend/Test/Mftf/Page/AdminDashboardPage.xml similarity index 74% rename from app/code/Magento/Sales/Test/Mftf/Page/InvoiceNewPage.xml rename to app/code/Magento/Backend/Test/Mftf/Page/AdminDashboardPage.xml index cda0c7ca34b2a..8c258accdf06c 100644 --- a/app/code/Magento/Sales/Test/Mftf/Page/InvoiceNewPage.xml +++ b/app/code/Magento/Backend/Test/Mftf/Page/AdminDashboardPage.xml @@ -8,7 +8,7 @@ - -
+ +
diff --git a/app/code/Magento/Backend/Test/Mftf/Section/AdminConfigurationGeneralSectionCountryOptionsGroupSection.xml b/app/code/Magento/Backend/Test/Mftf/Section/AdminConfigurationGeneralSectionCountryOptionsGroupSection.xml new file mode 100644 index 0000000000000..e6f5e599c605d --- /dev/null +++ b/app/code/Magento/Backend/Test/Mftf/Section/AdminConfigurationGeneralSectionCountryOptionsGroupSection.xml @@ -0,0 +1,11 @@ + + +
+ +
+
diff --git a/app/code/Magento/Backend/Test/Mftf/Section/AdminMainActionsSection.xml b/app/code/Magento/Backend/Test/Mftf/Section/AdminMainActionsSection.xml index f8d259cc8e490..c56a8768b0adf 100644 --- a/app/code/Magento/Backend/Test/Mftf/Section/AdminMainActionsSection.xml +++ b/app/code/Magento/Backend/Test/Mftf/Section/AdminMainActionsSection.xml @@ -11,5 +11,6 @@
+
diff --git a/app/code/Magento/Backend/Test/Mftf/Section/AdminMenuSection.xml b/app/code/Magento/Backend/Test/Mftf/Section/AdminMenuSection.xml new file mode 100644 index 0000000000000..9d3182b6236a4 --- /dev/null +++ b/app/code/Magento/Backend/Test/Mftf/Section/AdminMenuSection.xml @@ -0,0 +1,19 @@ + + + + +
+ + + + + + +
+
diff --git a/app/code/Magento/Backend/Test/Mftf/Section/AdminMessagesSection.xml b/app/code/Magento/Backend/Test/Mftf/Section/AdminMessagesSection.xml index e9ee821e23bcf..72a00ed6db9b6 100644 --- a/app/code/Magento/Backend/Test/Mftf/Section/AdminMessagesSection.xml +++ b/app/code/Magento/Backend/Test/Mftf/Section/AdminMessagesSection.xml @@ -10,5 +10,6 @@
+
diff --git a/app/code/Magento/Backend/Test/Mftf/Section/AdminPromptModalSection.xml b/app/code/Magento/Backend/Test/Mftf/Section/AdminPromptModalSection.xml new file mode 100644 index 0000000000000..ec351e0d98fe5 --- /dev/null +++ b/app/code/Magento/Backend/Test/Mftf/Section/AdminPromptModalSection.xml @@ -0,0 +1,15 @@ + + + + +
+ + +
+
diff --git a/app/code/Magento/Backend/Test/Mftf/composer.json b/app/code/Magento/Backend/Test/Mftf/composer.json deleted file mode 100644 index c77f5a21f37fd..0000000000000 --- a/app/code/Magento/Backend/Test/Mftf/composer.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "magento/functional-test-module-backend", - "description": "N/A", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.0.13|~7.1.0", - "magento/functional-test-module-store": "100.0.0-dev", - "magento/functional-test-module-directory": "100.0.0-dev", - "magento/functional-test-module-developer": "100.0.0-dev", - "magento/functional-test-module-eav": "100.0.0-dev", - "magento/functional-test-module-reports": "100.0.0-dev", - "magento/functional-test-module-sales": "100.0.0-dev", - "magento/functional-test-module-quote": "100.0.0-dev", - "magento/functional-test-module-catalog": "100.0.0-dev", - "magento/functional-test-module-user": "100.0.0-dev", - "magento/functional-test-module-security": "100.0.0-dev", - "magento/functional-test-module-backup": "100.0.0-dev", - "magento/functional-test-module-customer": "100.0.0-dev", - "magento/functional-test-module-translation": "100.0.0-dev", - "magento/functional-test-module-require-js": "100.0.0-dev", - "magento/functional-test-module-config": "100.0.0-dev", - "magento/magento2-functional-testing-framework": "2.2.0" - }, - "suggest": { - "magento/functional-test-module-theme": "100.0.0-dev" - }, - "type": "magento2-test", - "license": [ - "OSL-3.0", - "AFL-3.0" - ] -} diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php index b1911da024227..ac0f4a2f467c8 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanMediaTest.php @@ -38,7 +38,7 @@ public function testExecute() $messageManagerParams = $helper->getConstructArguments(\Magento\Framework\Message\Manager::class); $messageManagerParams['exceptionMessageFactory'] = $exceptionMessageFactory; $messageManager = $this->getMockBuilder(\Magento\Framework\Message\Manager::class) - ->setMethods(['addSuccess']) + ->setMethods(['addSuccessMessage']) ->setConstructorArgs($messageManagerParams) ->getMock(); @@ -86,7 +86,7 @@ public function testExecute() $mergeService->expects($this->once())->method('cleanMergedJsCss'); $messageManager->expects($this->once()) - ->method('addSuccess') + ->method('addSuccessMessage') ->with('The JavaScript/CSS cache has been cleaned.'); $valueMap = [ diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php index 40d9ca1aa8996..fc457cd9681e6 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/CleanStaticFilesTest.php @@ -76,7 +76,7 @@ public function testExecute() ->with('clean_static_files_cache_after'); $this->messageManagerMock->expects($this->once()) - ->method('addSuccess') + ->method('addSuccessMessage') ->with('The static files cache has been cleaned.'); $resultRedirect = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class) diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassDisableTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassDisableTest.php index 556db311748bd..9a42d0acdba89 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassDisableTest.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassDisableTest.php @@ -155,7 +155,7 @@ public function testExecuteInvalidTypeCache() ->willReturn(['someCache']); $this->messageManagerMock->expects($this->once()) - ->method('addError') + ->method('addErrorMessage') ->with('Specified cache type(s) don\'t exist: someCache') ->willReturnSelf(); @@ -175,7 +175,7 @@ public function testExecuteWithException() ->willThrowException($exception); $this->messageManagerMock->expects($this->once()) - ->method('addException') + ->method('addExceptionMessage') ->with($exception, 'An error occurred while disabling cache.') ->willReturnSelf(); @@ -215,7 +215,7 @@ public function testExecuteSuccess() ->method('persist'); $this->messageManagerMock->expects($this->once()) - ->method('addSuccess') + ->method('addSuccessMessage') ->with('1 cache type(s) disabled.') ->willReturnSelf(); diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassEnableTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassEnableTest.php index ad622ca69757a..23cf6a9a0a70a 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassEnableTest.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Cache/MassEnableTest.php @@ -155,7 +155,7 @@ public function testExecuteInvalidTypeCache() ->willReturn(['someCache']); $this->messageManagerMock->expects($this->once()) - ->method('addError') + ->method('addErrorMessage') ->with('Specified cache type(s) don\'t exist: someCache') ->willReturnSelf(); @@ -175,7 +175,7 @@ public function testExecuteWithException() ->willThrowException($exception); $this->messageManagerMock->expects($this->once()) - ->method('addException') + ->method('addExceptionMessage') ->with($exception, 'An error occurred while enabling cache.') ->willReturnSelf(); @@ -215,7 +215,7 @@ public function testExecuteSuccess() ->method('persist'); $this->messageManagerMock->expects($this->once()) - ->method('addSuccess') + ->method('addSuccessMessage') ->with('1 cache type(s) enabled.') ->willReturnSelf(); diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php index dbd1cbe5ec8ec..6049ef76fb183 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/AbstractTestCase.php @@ -21,8 +21,7 @@ protected function assertExecute($controllerName, $blockName) { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $outPut = "data"; - $resultRawMock = $this->createPartialMock(\Magento\Framework\Controller\Result\Raw::class, ['setContents']) - ; + $resultRawMock = $this->createPartialMock(\Magento\Framework\Controller\Result\Raw::class, ['setContents']); $resultRawFactoryMock = $this->createPartialMock(\Magento\Framework\Controller\Result\RawFactory::class, ['create']); $layoutFactoryMock = $this->createPartialMock(\Magento\Framework\View\LayoutFactory::class, ['create']); diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php index e8dcc00345fc6..a985681919f0b 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/Dashboard/RefreshStatisticsTest.php @@ -107,7 +107,7 @@ public function testExecute() $this->resultRedirectFactory->expects($this->any())->method('create')->willReturn($this->resultRedirect); $this->messageManager->expects($this->once()) - ->method('addSuccess') + ->method('addSuccessMessage') ->with(__('We updated lifetime statistic.')); $this->objectManager->expects($this->any()) diff --git a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php index 844a821df1c20..a8490d6ba2e58 100644 --- a/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php +++ b/app/code/Magento/Backend/Test/Unit/Controller/Adminhtml/System/Account/SaveTest.php @@ -71,7 +71,7 @@ protected function setUp() ->getMock(); $this->_messagesMock = $this->getMockBuilder(\Magento\Framework\Message\Manager::class) ->disableOriginalConstructor() - ->setMethods(['addSuccess']) + ->setMethods(['addSuccessMessage']) ->getMockForAbstractClass(); $this->_authSessionMock = $this->getMockBuilder(\Magento\Backend\Model\Auth\Session::class) @@ -221,7 +221,7 @@ public function testSaveAction() $this->_requestMock->setParams($requestParams); - $this->_messagesMock->expects($this->once())->method('addSuccess')->with($this->equalTo($testedMessage)); + $this->_messagesMock->expects($this->once())->method('addSuccessMessage')->with($this->equalTo($testedMessage)); $this->_controller->execute(); } diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json index 4494e51b9337c..845bc4ec87402 100644 --- a/app/code/Magento/Backend/composer.json +++ b/app/code/Magento/Backend/composer.json @@ -24,7 +24,7 @@ "magento/module-theme": "100.2.*" }, "type": "magento2-module", - "version": "100.2.5", + "version": "100.2.6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Backend/etc/adminhtml/system.xml b/app/code/Magento/Backend/etc/adminhtml/system.xml index 3da59d72c118a..ecf11ac601861 100644 --- a/app/code/Magento/Backend/etc/adminhtml/system.xml +++ b/app/code/Magento/Backend/etc/adminhtml/system.xml @@ -218,6 +218,7 @@ Magento\Directory\Model\Config\Source\Country + 1 @@ -319,6 +320,19 @@ + + + + + validate-greater-than-zero validate-number required-entry + Maximum allowed width for uploaded image. + + + + validate-greater-than-zero validate-number required-entry + Maximum allowed height for uploaded image. + +
diff --git a/app/code/Magento/Backend/etc/config.xml b/app/code/Magento/Backend/etc/config.xml index b7aaf8bf20dba..45d283ad3ff22 100644 --- a/app/code/Magento/Backend/etc/config.xml +++ b/app/code/Magento/Backend/etc/config.xml @@ -28,6 +28,10 @@ 1 + + 1920 + 1200 + diff --git a/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml b/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml index 805e9783f3f18..52d5dd6d114ee 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml @@ -43,7 +43,7 @@ data-validate="{required:true}" value="" placeholder="" - autocomplete="new-password" + autocomplete="off" /> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml b/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml index 1e14dd837634a..966372773f295 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml @@ -13,8 +13,8 @@ data-mage-init='{ "Magento_Backend/js/media-uploader" : { "maxFileSize": getFileSizeService()->getMaxFileSize() ?>, - "maxWidth": , - "maxHeight": + "maxWidth":getImageUploadMaxWidth() ?> , + "maxHeight": getImageUploadMaxHeight() ?> } }' > diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml index 8feccc9cf1b8f..f952001f5e2ff 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml @@ -17,7 +17,7 @@ class="logo"> <?= $block->escapeHtml(__('Magento Admin Panel')) ?> + alt="escapeHtml(__('Magento Admin Panel')) ?>" title="escapeHtml(__('Magento Admin Panel')) ?>"/> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml index 3c65c0358eb57..978d338c3993b 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml @@ -39,7 +39,7 @@ <% if (data.items.length) { %> <% _.each(data.items, function(value){ %>
  • + <%= data.optionData(value) %> > <%- value.name %> <%- value.type %> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml index 4f8d9a56a38a3..e11c0efc123ff 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml @@ -34,7 +34,7 @@ getValues()->getAttributeBackend()->getImageTypes() as $type): ?> - <?= /* @escapeNotVerified */ $image->getValue() ?>
    + <?= /* @escapeNotVerified */ $image->getValue() ?>
    diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/grid.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/grid.phtml index c99759a60d1bf..07b4ba0af0a3e 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/grid.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/grid.phtml @@ -107,7 +107,7 @@ $numColumns = sizeof($block->getColumns()); ' . $block->getCollection()->getLastPageNumber() . '') ?> -