diff --git a/src/_data/codebase/v2_4/mrg/b2b/RequisitionList.yml b/src/_data/codebase/v2_4/mrg/b2b/RequisitionList.yml
index 1e849c021fe..fe396a9278b 100644
--- a/src/_data/codebase/v2_4/mrg/b2b/RequisitionList.yml
+++ b/src/_data/codebase/v2_4/mrg/b2b/RequisitionList.yml
@@ -7,7 +7,7 @@ last_modified_at: '2017-02-15 17:02:23 +0300'
content: "## Overview\n\nThe Magento_RequisitionList module allows a customer to create
multiple lists of frequently-purchased items and use those lists for order placement.
This feature is available for both logged-in users and guests.\n \nRequisitionList
- functionality is similiar to wish lists, but it has the following differences: \n\n*
+ functionality is similar to wish lists, but it has the following differences: \n\n*
A requisition list is not purged after sending items to the shopping cart. It can
be used to place multiple orders.\n\n* The UI for requisition lists has been modified
to a compact view in order to display large number of items. \n\nThe merchant can
diff --git a/src/_data/whats-new.yml b/src/_data/whats-new.yml
index 663e92ec85e..b079c4cd6fa 100644
--- a/src/_data/whats-new.yml
+++ b/src/_data/whats-new.yml
@@ -526,7 +526,7 @@ entries:
contributor: jeff-matthews
profile: https://github.com/jeff-matthews
- description: Standardized [release terminology](https://devdocs.magento.com/release/policy/)
- related to patch releases, hotfixes, invdividual fixes, and custom patches.
+ related to patch releases, hotfixes, individual fixes, and custom patches.
versions: 2.4.0
type: Major Update
date: July 27, 2020
diff --git a/src/cloud/cdn/fastly-vcl-allowlist.md b/src/cloud/cdn/fastly-vcl-allowlist.md
index a88aa908e84..fcca4541c17 100644
--- a/src/cloud/cdn/fastly-vcl-allowlist.md
+++ b/src/cloud/cdn/fastly-vcl-allowlist.md
@@ -114,7 +114,7 @@ After reviewing and updating the code for your environment, use either of the fo
- Add the **VCL** snippet content:
```conf
- if ((req.url ~ "^/admin") && !(client.ip ~ allowlist) && !req.http.Fastly-FF) { error 403 "Forbidden"}
+ if ((req.url ~ "^/admin") && !(client.ip ~ allowlist) && !req.http.Fastly-FF) { error 403 "Forbidden";}
```
1. Click **Create** to generate the VCL snippet file with the name pattern `type_priority_name.vcl`, for example `recv_5_allowlist.vcl`
diff --git a/src/cloud/project/project-patch.md b/src/cloud/project/project-patch.md
index 05d8ed27eff..b6db5acc5c5 100644
--- a/src/cloud/project/project-patch.md
+++ b/src/cloud/project/project-patch.md
@@ -29,7 +29,7 @@ When you update `{{ site.data.var.ct }}` or the {{ site.data.var.mcp-prod }} pac
{% include cloud/note-upgrade.md %}
-The Magento Quality Patches package is a dependency for the {{ site.data.var.mcp-prod }} and {{site.data.var.ct}} packages. To apply the latest patches, you must have [the latest version of {{ site.data.var.ct }}]({{site.baseurl}}/cloud/project/ece-tools-update.html) installed.
+The Magento Quality Patches package is a dependency for the {{ site.data.var.mcp-prod }} and {{site.data.var.ct}} packages. To apply the latest patches, you must have [the latest version of {{ site.data.var.ct }}]({{site.baseurl}}/cloud/project/ece-tools-update.html) installed. The minimum required version of {{site.data.var.ct}} is 2002.1.2.
## View available patches and status
diff --git a/src/guides/v2.3/config-guide/deployment/pipeline/technical-details.md b/src/guides/v2.3/config-guide/deployment/pipeline/technical-details.md
index 9654d813000..2d1915cdde8 100644
--- a/src/guides/v2.3/config-guide/deployment/pipeline/technical-details.md
+++ b/src/guides/v2.3/config-guide/deployment/pipeline/technical-details.md
@@ -309,4 +309,4 @@ Next steps
* [Set up your development systems]({{ page.baseurl }}/config-guide/deployment/pipeline/development-system.html)
* [Set up your build system]({{ page.baseurl }}/config-guide/deployment/pipeline/build-system.html)
* [Set up your production system]({{ page.baseurl }}/config-guide/deployment/pipeline/production-system.html)
-* [config-cli-config-set]: {{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-set.html#config-cli-config-set
+* [Set configuration values]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-config-mgmt-set.html#config-cli-config-set)
diff --git a/src/guides/v2.3/config-guide/redis/redis-session.md b/src/guides/v2.3/config-guide/redis/redis-session.md
index f6462989bdc..e0e5597b92f 100644
--- a/src/guides/v2.3/config-guide/redis/redis-session.md
+++ b/src/guides/v2.3/config-guide/redis/redis-session.md
@@ -50,7 +50,7 @@ where
|session-save-redis-sentinel-master|sentinel_master|Redis Sentinel master name|empty|
|session-save-redis-sentinel-servers|sentinel_servers|List of Redis Sentinel servers, comma separated|empty|
|session-save-redis-sentinel-verify-master|sentinel_verify_master|Verify Redis Sentinel master status flag|0 (false)|
-|session-save-redis-sentinel-connect-retires|sentinel_connect_retries|Connection retries for sentinels|5|
+|session-save-redis-sentinel-connect-retries|sentinel_connect_retries|Connection retries for sentinels|5|
### Example command
diff --git a/src/guides/v2.3/extension-dev-guide/attributes.md b/src/guides/v2.3/extension-dev-guide/attributes.md
index 63c33c5a3ef..e403dda86b8 100644
--- a/src/guides/v2.3/extension-dev-guide/attributes.md
+++ b/src/guides/v2.3/extension-dev-guide/attributes.md
@@ -58,13 +58,25 @@ use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\Patch\PatchVersionInterface;
+/**
+ * Class add customer example attribute to customer
+ */
class AddCustomerExampleAttribute implements DataPatchInterface
{
-
+ /**
+ * @var ModuleDataSetupInterface
+ */
private $moduleDataSetup;
+ /**
+ * @var CustomerSetupFactory
+ */
private $customerSetupFactory;
+ /**
+ * @param ModuleDataSetupInterface $moduleDataSetup
+ * @param CustomerSetupFactory $customerSetupFactory
+ */
public function __construct(
ModuleDataSetupInterface $moduleDataSetup,
CustomerSetupFactory $customerSetupFactory
@@ -73,6 +85,9 @@ class AddCustomerExampleAttribute implements DataPatchInterface
$this->customerSetupFactory = $customerSetupFactory;
}
+ /**
+ * @inheritdoc
+ */
public function apply()
{
$customerSetup = $this->customerSetupFactory->create(['setup' => $this->moduleDataSetup]);
@@ -82,7 +97,7 @@ class AddCustomerExampleAttribute implements DataPatchInterface
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public static function getDependencies()
{
@@ -91,6 +106,9 @@ class AddCustomerExampleAttribute implements DataPatchInterface
];
}
+ /**
+ * @inheritdoc
+ */
public function getAliases()
{
return [];
diff --git a/src/guides/v2.3/extension-dev-guide/indexing.md b/src/guides/v2.3/extension-dev-guide/indexing.md
index e44fb77e811..876feb65465 100644
--- a/src/guides/v2.3/extension-dev-guide/indexing.md
+++ b/src/guides/v2.3/extension-dev-guide/indexing.md
@@ -82,11 +82,15 @@ The following figure shows the logic for partial reindexing.
### Indexer status {#m2devgde-indexing-status}
-Depending on whether an index data is up to date, an indexer status value is one of the following:
+Depending on whether index data is up to date, an indexer status value is one of the following:
-* valid - data is synchronized, no reindex required
-* invalid - the original data was changed, the index should be updated
-* working - indexing is in progress
+Database Status|Admin Status|Description
+`valid`|Ready|Data is synchronized, no reindex required
+`invalid`|Reindex Required|The original data was changed, the index should be updated
+`working`|Processing|Indexing is in progress
+
+The database status can be seen when viewing the SQL table `indexer_state`.
+The admin status can be seen when viewing the indexer grid in Magento Admin or when running the index status from the CLI.
The Magento indexing mechanism uses the status value in reindex triggering process. You can check the status of an indexer in the [Admin](https://glossary.magento.com/admin) panel in **System >** Tools **> Index Management** or manually using the [command line]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-index.html#view-indexer-status).
diff --git a/src/guides/v2.3/extension-dev-guide/price-adjustments.md b/src/guides/v2.3/extension-dev-guide/price-adjustments.md
index 5dc8b43cf4a..503af259b62 100644
--- a/src/guides/v2.3/extension-dev-guide/price-adjustments.md
+++ b/src/guides/v2.3/extension-dev-guide/price-adjustments.md
@@ -98,8 +98,7 @@ class Adjustment implements AdjustmentInterface
*/
public function applyAdjustment($amount, SaleableInterface $saleableItem, $context = [])
{
- $return = $amount + self::ADJUSTMENT_VALUE;
- return $return;
+ return $amount + self::ADJUSTMENT_VALUE;
}
/**
diff --git a/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md b/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md
index cc754dbc7ee..23ab412eb86 100644
--- a/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md
+++ b/src/guides/v2.3/payments-integrations/payment-gateway/command-pool.md
@@ -26,7 +26,7 @@ Following is an example of the command pool configuring for the Braintree paymen
```xml
...
-
+
@@ -38,7 +38,7 @@ Following is an example of the command pool configuring for the Braintree paymen
...
-
+
...
diff --git a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md
index 4233d4ada98..73f50357982 100644
--- a/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md
+++ b/src/guides/v2.3/ui_comp_guide/components/wysiwyg/add-custom-editor/index.md
@@ -101,7 +101,7 @@ If you are integrating Magento entities such as variable and widget as plugins,
After loading, modifying, and merging all configurations, Magento serializes the result into a JSON object and passes it to the UI component.
-In your module's `view/base/requirejs-config.php` file, add a shim configuration entry for your editor in order to have RequireJS load it correctly.
+In your module's `view/base/requirejs-config.js` file, add a shim configuration entry for your editor in order to have RequireJS load it correctly.
**Example:** CKEditor\CKEditor4\view\base\requirejs-config.js
diff --git a/src/guides/v2.4/extension-dev-guide/searching-with-repositories.md b/src/guides/v2.4/extension-dev-guide/searching-with-repositories.md
index b639eefd7c3..f3270617ce3 100644
--- a/src/guides/v2.4/extension-dev-guide/searching-with-repositories.md
+++ b/src/guides/v2.4/extension-dev-guide/searching-with-repositories.md
@@ -227,12 +227,11 @@ class ProductCategoryFilter implements CustomFilterInterface
{
$value = $filter->getValue();
$conditionType = $filter->getConditionType() ?: 'in';
+ $filterValue = [$value];
if (($conditionType === 'in' || $conditionType === 'nin') && is_string($value)) {
- $value = explode(',', $value);
- } else {
- $value = [$value];
+ $filterValue = explode(',', $value);
}
- $categoryFilter = [$conditionType => $value];
+ $categoryFilter = [$conditionType => $filterValue];
/** @var Collection $collection */
$collection->addCategoriesFilter($categoryFilter);
diff --git a/src/guides/v2.4/graphql/mutations/generate-customer-token.md b/src/guides/v2.4/graphql/mutations/generate-customer-token.md
deleted file mode 120000
index 636ef189054..00000000000
--- a/src/guides/v2.4/graphql/mutations/generate-customer-token.md
+++ /dev/null
@@ -1 +0,0 @@
-../../../v2.3/graphql/mutations/generate-customer-token.md
\ No newline at end of file
diff --git a/src/guides/v2.4/graphql/mutations/generate-customer-token.md b/src/guides/v2.4/graphql/mutations/generate-customer-token.md
new file mode 100644
index 00000000000..fe634a936b1
--- /dev/null
+++ b/src/guides/v2.4/graphql/mutations/generate-customer-token.md
@@ -0,0 +1,80 @@
+---
+group: graphql
+title: generateCustomerToken mutation
+---
+
+Use the `generateCustomerToken` mutation to create a new customer token.
+
+To return or modify information about a customer, Magento recommends you use customer tokens in the header of your GraphQL calls. However, you also can use [session authentication]({{ page.baseurl }}/get-started/authentication/gs-authentication-session.html).
+
+## Syntax
+
+```graphql
+mutation {
+ generateCustomerToken(
+ email: String!
+ password: String!
+ ) {
+ CustomerToken
+ }
+}
+```
+
+## Example usage
+
+The following call creates a new customer token.
+
+**Request:**
+
+```graphql
+mutation {
+ generateCustomerToken(
+ email: "bobloblaw@example.com"
+ password: "b0bl0bl@w"
+ ) {
+ token
+ }
+}
+```
+
+**Response:**
+
+```json
+{
+ "data": {
+ "generateCustomerToken": {
+ "token": "ar4116zozoagxty1xjn4lj13kim36r6x"
+ }
+ }
+}
+```
+
+## Input attributes
+
+The `generateCustomerToken` mutation requires the following inputs:
+
+Attribute | Data Type | Description
+--- | --- | ---
+`email` | String | The customer's email address
+`password` | String | The customer's password
+
+## Output attributes
+
+The `generateCustomerToken` mutation returns a valid token for the customer.
+
+Attribute | Data Type | Description
+--- | --- | ---
+`token` | String | The customer token
+
+## Errors
+
+Error | Description
+--- | ---
+`Specify the "email" value.` | The value specified in the `email` argument is empty.
+`Specify the "password" value.` | The value specified value in the `password` argument is empty.
+`The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.` | Authentication error. The email or password is incorrect, or the customer account is locked.
+
+## Related topics
+
+* [customer query]({{page.baseurl}}/graphql/queries/customer.html)
+* [revokeCustomerToken mutation]({{page.baseurl}}/graphql/mutations/revoke-customer-token.html)
diff --git a/src/guides/v2.4/performance-best-practices/configuration.md b/src/guides/v2.4/performance-best-practices/configuration.md
index 0ab92a0dbac..e2599c9041f 100644
--- a/src/guides/v2.4/performance-best-practices/configuration.md
+++ b/src/guides/v2.4/performance-best-practices/configuration.md
@@ -63,6 +63,9 @@ The **Developer** tab and options are only available in [Developer mode]({{ page
When you activate the **Enable JavaScript Bundling** option, you allow Magento to merge all JS resources into one or a set of bundles that are loaded in storefront pages. Bundling JS results in fewer requests to the server, which improves page performance. It also helps the browser cache JS resources on the first call and reuse them for all further browsing. This option also brings lazy evaluation, as all JS is loaded as text. It initiates analysis and evaluation of code only after specific actions are triggered on the page. However, this setting is not recommended for stores where the first page load time is extremely critical, because all JS content will be loaded on the first call.
+{:.bs-callout-info}
+See [CSS and Javascript file optimization on Magento Commerce Cloud and Magento Commerce](https://support.magento.com/hc/en-us/articles/360044482152) in the _Magento Help Center_ for more information about optimizing CSS and Javascript.
+
### Bundling tips
* Magento recommends that you use third-party tools for minification and bundling (like [r.js](http://requirejs.org/)). Magento built-in mechanisms are not optimal and are shipped as fallback alternatives.
diff --git a/src/guides/v2.4/security/security-txt.md b/src/guides/v2.4/security/security-txt.md
index 6ad563c677d..c0bb8a56105 100644
--- a/src/guides/v2.4/security/security-txt.md
+++ b/src/guides/v2.4/security/security-txt.md
@@ -12,7 +12,7 @@ When security vulnerabilities are discovered by researchers, proper reporting ch
Magento merchants can enter their contact information for [security issue reporting](https://docs.magento.com/user-guide/stores/security-issue-reporting.html) from the Magento _Admin_. For developers, the `Magento_Securitytxt` module provides the following functionality:
- Allows security configurations to be saved from the _Admin_.
-- Contains a router to match application action class for requests to the `well-known/security.txt` and `.well-known/security.txt.sig` files.
+- Contains a router to match application action class for requests to the `.well-known/security.txt` and `.well-known/security.txt.sig` files.
- Serves the content of the `.well-known/security.txt` and `.well-known/security.txt.sig` files.
A valid `security.txt` file might look like the following:
diff --git a/src/marketplace/sellers/extension-create.md b/src/marketplace/sellers/extension-create.md
index 9126076665b..7f09cb6eb2d 100644
--- a/src/marketplace/sellers/extension-create.md
+++ b/src/marketplace/sellers/extension-create.md
@@ -25,7 +25,7 @@ Magento Marketplace does not support encrypted extensions at this time.
Testing your extension in advance reduces the time it takes to pass Technical Review. For a list of code sniffer rules, see [Magento Extension Quality Program Coding Standard][2].
-1. Prepare, validate, and zip your extension as described in Packaging a Component for Magento version [2.x]({{ site.baseurl }}/guides/v2.3/extension-dev-guide/package/package_module.html) or [1.x]({{ site.baseurl }}/marketplace/sellers/packaging-v1x-extensions.html).
+1. Prepare, validate, and zip your extension as described in [Packaging a Component]({{site.baseurl}}/guides/v2.4/extension-dev-guide/package/package_module.html).
1. Prepare the following preliminary documentation: