Status:
Investigating
Submitted on
08-30-2016
12:31 PM
Submitted by
apiuser
on
08-30-2016
12:31 PM
Feature request from mc388, posted on GitHub Nov 27, 2015
Hi,
I just installed magento 2 with sample data and try to search for a product. After starting the search, mysql has a query which now is running over 27 minutes and it is still running.
Here the query:
INSERT INTO `search_tmp_5658146c0b72c8_28632618` SELECT `main_select`.`entity_id`, MAX(score) AS `relevance` FROM (SELECT `search_index`.`entity_id`, ((0) + LEAST((MATCH (data_index) AGAINST ('back*' IN BOOLEAN MODE)), 1000000) * POW(2, search_weight)) AS `score` FROM `catalogsearch_fulltext_scope1` AS `search_index`
LEFT JOIN `catalog_eav_attribute` AS `cea` ON search_index.attribute_id = cea.attribute_id
LEFT JOIN `cataloginventory_stock_status` AS `stock_index` ON search_index.entity_id = stock_index.product_id AND stock_index.website_id = '1' WHERE (stock_index.stock_status = 1) AND (MATCH (data_index) AGAINST ('back*' IN BOOLEAN MODE))) AS `main_select` GROUP BY `entity_id` ORDER BY `relevance` DESC LIMIT 10000 /* statement may be truncated */
... View more
Status:
Investigating
Submitted on
08-30-2016
12:31 PM
Submitted by
apiuser
on
08-30-2016
12:31 PM
Feature request from arunkasyakar, posted on GitHub Dec 04, 2015
i am trying to add shipment information for an order but i am getting internal error
URL(POST): http://MYHOST/rest/default/V1/shipment/
payload:
{
"entity": {
"billingAddressId": 24,
"customerId": 8,
"emailSent": 0,
"orderId": 12,
"packages": [
{
"extensionAttributes": {}
}
],
"shippingAddressId": 23,
"storeId": 1,
"items": [
{
"orderItemId": 20,
"qty": 1,
"extensionAttributes": {}
}
],
"extensionAttributes": {}
}
}
response:
{
"messages": {
"error": [
{
"code": 500,
"message": "Server internal error. See details in report api/266657385283"
}
]
}
}
api/266657385283:
s:200:"Fatal Error: 'Cannot instantiate interface Magento\Sales\Api\Data\ShipmentPackageInterface' in '/var/www/html/MYPROJECT/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php' on line 73";
... View more
Status:
Investigating
Submitted on
08-30-2016
12:31 PM
Submitted by
apiuser
on
08-30-2016
12:31 PM
Feature request from keithbentrup, posted on GitHub Jan 19, 2016
Steps to reproduce
1) Install the reference store with a sample data
2) Configure js minification and deploy static assets
3) Visit a product page
Expected result:
Product page loads with product image and no js error in the js console
Actual result:
Product pages with no product image and a js error
Root cause:
JShrink munges lib/web/fotorama/fotorama.js. In my tests, JShrink 1.0.1 and JShrink 1.1.0 both munge the javascript when minifying.
This is a common problem with javascript minifiers. I've found yuicompressor to be much better, and when I minified with fotorama.js with yuicompressor, it worked.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:31 PM
Submitted by
apiuser
on
08-30-2016
12:31 PM
Feature request from webkul, posted on GitHub Dec 14, 2015
cloudflare / CDN issue - product grid does not load - We are getting a very random issue whenever we supply the cloudlare on our server magento2 catalog grid does not load also throw an error related to backbone.js in admin product add at browser console.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from fooman, posted on GitHub Feb 14, 2016
This code
private function load()
{
if ($this->packageModuleMap === null) {
$jsonData = $this->reader->getComposerJsonFiles()->toArray();
foreach ($this->componentRegistrar->getPaths(ComponentRegistrar::MODULE) as $moduleName => $moduleDir) {
$key = $moduleDir . '/composer.json';
assumes that the registered path also holds the composer.json file which is not necessarily the case (for example https://github.com/fooman/sameorderinvoicenumber-m2/tree/v2.0.2/src). I am hoping there is a way to query composer itself for all packages of type magento2-module.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from wozniakm, posted on GitHub Mar 14, 2016
Steps to reproduce
Create configurable product
Call REST API to get products, for example GET /rest/V1/products?searchCriteria[page_size]=3
Expected result
Returned array should contain your added product with extension_attributes key inside
Actual result
The extension_attributes is not present
In ProductRepository there is a line $this->extensionAttributesJoinProcessor->process($collection); which calls method responsible for extension_attributes, but despite that they are not included into product. If you request product details by calling GET /rest/V1/products/:sku the extension_attributes array is present.
It really makes no sense to call API once to get products, then call API to get configurable product details and then, finally, call API to get values and labels for configurable options. Is there easier way?
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from ruby10, posted on GitHub Feb 19, 2016
Here we have two scenarios to observer
1) order created for bundle-product which has value "separately" set for "Ship Bundle Items" field in it's settings : As shown in picture
If we create shipment record for child items via api "POST /V1/shipment/" it creating shipment record but with no data under "Items Shipped" block on shipment record, as shown in screenshot
Also , we are able to create shipment for entire bundle product perfectly , which should not be the case since we have opted "seperatey" for shipping in items settings.
2) order created for bundle-product which has value "together" set for "Ship Bundle Items" field:
The behavior is same here as it happening in scenario 1. Point to be noted here is for bundle product with "together" shipping setting, we should not be able to create shipments record for child items even if it is with blank data for "Items Shipment" record on shipment record.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from sameasterling, posted on GitHub Mar 26, 2016
if a configurable product has an only one variation, this variation should be preselected.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from stefandoorn, posted on GitHub Mar 16, 2016
I just stumbled into the fact that module-shipping requires zendframework/zend-http for its unit tests. So basically if I just want to do the tests of that module isolated (my module depends on that module again), I can't do that now as the requirements are not met.
So my proposal is that every module composer.json should specify the requirements needed to use that module stand-alone (the tests e.g.).
Probably has some impact, but it will improve module development imo.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from gamort, posted on GitHub Apr 20, 2016
The current documentation/implementation of composer allows for a large number of attack surfaces.
A "deployed" website[ie a website either installed using composer or a website which is installed from a downloaded zip file] should not have any need for the various development requirements - such as phpunit and other dev tools. Instead of requiring installers to remember to pass --no-dev to the commands - these options can be defined in the composer.json file [ie have a composer.json.dev and a composer.json.prod file - leave composer.json as it is in the github repository, but during the build process swap for the production/safer composer file].
By the same token, using the development version of vendor libraries adds yet more insecurity. A quick search for $_GET variables shows a large number of unsafe usages in the folder lusitanian/oauth/examples - with no fault to the library author. Examples and demo code do not need to be secure - it is expected that implementors would not deploy such code.
For the oath examples, they are protected by the htaccess files from direct access - however if Magento2 can be tricked into loading one that leads to security issues. Due to the reliance on the composer autoloading mechanisms such mischief is possible in theory.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:30 PM
Submitted by
apiuser
on
08-30-2016
12:30 PM
Feature request from benchmarky, posted on GitHub May 14, 2016
Steps to reproduce
Create Simple Product, fill details and set price to $10.
Go to Advanced Settings > Advanced Pricing > Tier Price
Set Tier Price for customer group "NOT LOGGED IN", qty "1", price $15.
*point is to set tier pricing higher than regular price
Flush cache
Visit front end store
Expected result
See price for "NOT LOGGED IN" users as $15
Actual result
Price appears as $10 for "NOT LOGGED IN" users
--
This function is important due to the removal of the group pricing feature. For B2B stores this is a simple feature that would prevent the need for additional extensions for managing different pricing for different groups.
This would of course mean adjusting the logic of how pricing is shown in the front end, to only show that price and not do a crazy: $10, as low as $15 in the front end.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:29 PM
Submitted by
apiuser
on
08-30-2016
12:29 PM
Feature request from kassner, posted on GitHub May 23, 2016
Hi,
I have an email template with this:
<strong>Comments:</strong> {{var comments|nl2br}}
So, if the user adds an HTML tag, it is not escaped in the email template. The thing is that is not possible to combine escape and nl2br at the same time. Is there a way to achieve this without a plugin?
Thanks!
... View more
Status:
Investigating
Submitted on
08-30-2016
12:29 PM
Submitted by
apiuser
on
08-30-2016
12:29 PM
Feature request from bgkavinga, posted on GitHub May 23, 2016
In module-catalog/Model/Layer/Filter/AbstractFilter.php::isOptionReducesResults() checks whether the resulting option count is greater than products count. There could be an option that applies to all the products. Since this logic does not check equality, the option that applies to all the products in that category will not be shown.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:29 PM
Submitted by
apiuser
on
08-30-2016
12:29 PM
Feature request from pynej, posted on GitHub Jun 03, 2016
If you set up multiple Magneto installs and varnish and get everything working. When you clear the Page Cache on one site it clears all magneto instances cache. The command passed to varnish should include a host header to allow the vcl file to filter ban's on that header.
This adds the current domain to the purge request.
--- vendor/magento/module-cache-invalidate/Model/PurgeCache.php.old 2016-06-03 14:14:45.320427000 -0400
+++ vendor/magento/module-cache-invalidate/Model/PurgeCache.php 2016-06-03 14:32:58.908971000 -0400
@@ -7,10 +7,12 @@
use Magento\Framework\Cache\InvalidateLogger;
use Magento\Framework\App\DeploymentConfig;
+use Magento\Framework\App\RequestInterface;
class PurgeCache
{
const HEADER_X_MAGENTO_TAGS_PATTERN = 'X-Magento-Tags-Pattern';
+ const HEADER_HOST = 'host';
/**
* @var \Magento\PageCache\Model\Cache\Server
@@ -28,6 +30,11 @@
private $logger;
/**
+ * @var RequestInterface
+ */
+ private $request;
+
+ /**
* Constructor
*
* @param \Magento\PageCache\Model\Cache\Server $cacheServer
@@ -37,11 +44,13 @@
public function __construct(
\Magento\PageCache\Model\Cache\Server $cacheServer,
\Magento\CacheInvalidate\Model\SocketFactory $socketAdapterFactory,
- InvalidateLogger $logger
+ InvalidateLogger $logger,
+ RequestInterface $request
) {
$this->cacheServer = $cacheServer;
$this->socketAdapterFactory = $socketAdapterFactory;
$this->logger = $logger;
+ $this->request = $request;
}
/**
@@ -55,7 +64,7 @@
{
$socketAdapter = $this->socketAdapterFactory->create();
$servers = $this->cacheServer->getUris();
- $headers = [self::HEADER_X_MAGENTO_TAGS_PATTERN => $tagsPattern];
+ $headers = [self::HEADER_X_MAGENTO_TAGS_PATTERN => $tagsPattern, self::HEADER_HOST => $this->request->getHttpHost()];
$socketAdapter->setOptions(['timeout' => 10]);
foreach ($servers as $server) {
try {
Then the vcl files can be updated to optionally filter on the domain.
--- vendor/magento/module-page-cache/etc/varnish4.vcl.old 2016-05-16 16:18:20.000000000 -0400
+++ vendor/magento/module-page-cache/etc/varnish4.vcl 2016-06-03 15:10:56.629687000 -0400
@@ -21,6 +21,8 @@
return (synth(400, "X-Magento-Tags-Pattern header required"));
}
ban("obj.http.X-Magento-Tags ~ " + req.http.X-Magento-Tags-Pattern);
+ # or only for the current domain
+ # ban("obj.http.X-Magento-Tags ~ " + req.http.X-Magento-Tags-Pattern + " && obj.http.X-Req-Host == " + req.http.host);
return (synth(200, "Purged"));
}
@@ -75,6 +77,8 @@
if (bereq.url ~ "\.js$" || beresp.http.content-type ~ "text") {
set beresp.do_gzip = true;
}
+
+ set beresp.http.X-Req-Host = bereq.http.host;
# cache only successfully responses and 404s
if (beresp.status != 200 && beresp.status != 404) {
@@ -123,4 +127,5 @@
unset resp.http.X-Varnish;
unset resp.http.Via;
unset resp.http.Link;
+ unset resp.http.X-Req-Host;
}
--- vendor/magento/module-page-cache/etc/varnish3.vcl.old 2016-05-16 16:18:20.000000000 -0400
+++ vendor/magento/module-page-cache/etc/varnish3.vcl 2016-06-03 15:05:46.033544000 -0400
@@ -28,6 +28,8 @@
error 400 "X-Magento-Tags-Pattern header required";
}
ban("obj.http.X-Magento-Tags ~ " + req.http.X-Magento-Tags-Pattern);
+ # or only for the current domain
+ # ban("obj.http.X-Magento-Tags ~ " + req.http.X-Magento-Tags-Pattern + " && obj.http.X-Req-Host == " + req.http.host);
error 200 "Purged";
}
@@ -85,6 +87,8 @@
set beresp.do_gzip = true;
}
+ set beresp.http.X-Req-Host = bereq.http.host;
+
# cache only successfully responses and 404s
if (beresp.status != 200 && beresp.status != 404) {
set beresp.ttl = 0s;
@@ -128,4 +132,5 @@
unset resp.http.X-Varnish;
unset resp.http.Via;
unset resp.http.Link;
+ unset resp.http.X-Req-Host;
}
In short this tell magento to pass the host name onto varnish they the user can choose to use this in the varnish config. In multi-domain sites it may cause more problems that it solves, but when running multiple sites on the same server one will not clear the cache of all others.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:28 PM
Submitted by
apiuser
on
08-30-2016
12:28 PM
Feature request from MidnightDesign, posted on GitHub Jun 27, 2016
What is the correct way to associate an existing simple product with an existing configurable product?
I've been struggling with this for a couple of weeks now. I somehow got it to work im 2.0 using the API classes in Magento\ConfigurableProduct\Api , but that's broken in 2.1. The added products don't show up in the configurable's admin page.
I found some blog posts and Stack Overflow questions related to this, but they either don't work or they don't use the API interfaces.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:28 PM
Submitted by
apiuser
on
08-30-2016
12:28 PM
Feature request from flecxie, posted on GitHub Aug 03, 2016
I can't process KRW payments with Braintree on CE 2.1.0, getting the following error message in debug.log: Amount is an invalid format.
Steps to reproduce
Create Braintree Sandbox account + additional Korean Wong Merchant Account ID
Apply patch from https://github.com/magento/magento2/issues/5910 to get alternative Merchant Account ID's working
Configure Magento CE 2.1.0 store for alternative merchant ID, enable Braintree debugging & place test order for a large amount (I tried with ₩826,961.35 which is equivalent to ~700 USD)
Expected result
Success
Actual result
Fails with error below in debug.log:
'response' =>
array (
'success' => false,
'' . "\0" . '*' . "\0" . '_attributes' =>
array (
'errors' =>
Braintree\Error\ErrorCollection::__set_state(array(
'_errors' =>
Braintree\Error\ValidationErrorCollection::__set_state(array(
'_errors' =>
array (
),
'_nested' =>
array (
'transaction' =>
Braintree\Error\ValidationErrorCollection::__set_state(array(
'_errors' =>
array (
0 =>
Braintree\Error\Validation::__set_state(array(
'_attribute' => 'amount',
'_code' => '81503',
'_message' => 'Amount is an invalid format.',
)),
),
... View more
Status:
Investigating
Submitted on
08-30-2016
12:28 PM
Submitted by
apiuser
on
08-30-2016
12:28 PM
Feature request from ADDISON74, posted on GitHub Jul 22, 2016
Please change how Categories Tree looks. It is like Windows 10 at the beginning with Windows 7 features. Give up gradients in folders icon, just plain color. Make the icons bigger without magnifying glass. Use colors which fit in the current theme (those yellow's, blue's are not in color wheel as options).
See image bellow how this feature is now:
... View more
Status:
Investigating
Submitted on
08-30-2016
12:04 PM
Submitted by
apiuser
on
08-30-2016
12:04 PM
Feature request from ihor-sviziev, posted on GitHub Jul 04, 2013
For now we have 3 variants configuration scope:
default
website
store view
I think we need add new scope betwean website and store view - store_group.
For example:
we have one magento website with 2 stores(2 domains) + 2 mobile themes for them (+2 domains). So we created structure:
store 1
store 1 desktop store view
store 1 mobile store view
store 2
store 2 desktop store view
store 2 mobile store view
For design we have next structure:
desktop package
default
store 1
store 2
mobile package
default
store 1
store 2
For now we need configure for store 1 themes (Translations, skins, layout, etc.), so I need set theme value "store 1" for desktop store view and for mobile store view.
If we have store_group scope we should be change theme value at store_group scope only.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:04 PM
Submitted by
apiuser
on
08-30-2016
12:04 PM
Feature request from ldusan84, posted on GitHub Dec 26, 2012
Currently in Magento if you create a shopping cart rule with condition that is satisfied with your current cart and if you checkout with multishipping with 2 addresses with items on those addresses that do not satisfy the condition separately, the rule is not applied. I think this is a bug since shipping should not affect the rule in my opinion and it should be fixed in Magento 2.
... View more
Status:
Investigating
Submitted on
08-30-2016
12:04 PM
Submitted by
apiuser
on
08-30-2016
12:04 PM
Feature request from FiveDigital, posted on GitHub Apr 16, 2014
Right now, there is not possibility to translate (or change) the routes generated for the frontend. The route to the basket is always /checkout/cart and it would be nice if we could configure or change the routes on a store view base. So that we can have /warenkorb in the German store view and /basket in the English one. Other frameworks like Symfony take the route in the templates and look up how to generate the URL for the frontend in the config (see http://symfony.com/doc/current/book/routing.html). Perhaps this could be a way for Magento too. The route name for the checkout could remain /checkout/cart but it resolves to whatever I have configured for in my store view and have a fallback to a default URL.
Are there any plans to change the routing / URL behavior in Magento 2? If not, perhaps you might think of taking it into your backlog.
... View more