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: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 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 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 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 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 ldusan84, posted on GitHub May 02, 2016
Steps to reproduce
Install Magento from develop branch.
Create a class that extends Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction .
Use that mass action from dropdown.
Expected result
No errors.
Actual result
PHP Fatal error: Call to a member function create() on null in /var/www/html/magento2/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php on line 54
There is a hidden dependency in https://github.com/magento/magento2/blob/develop/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php#L54
It is not obvious that the child class requires collectionFactory to be injected so it's not transparent which objects are needed for this class to work.
I tried to create a PR for this, by moving the collection factory to constructor, but the problem is that for example this class:
https://github.com/magento/magento2/blob/develop/app/code/Magento/Sales/Controller/Adminhtml/Order/Pdfinvoices.php
Requires Magento\Sales\Model\ResourceModel\Order\Collection and this one:
https://github.com/magento/magento2/blob/develop/app/code/Magento/Sales/Controller/Adminhtml/Shipment/AbstractShipment/Pdfshipments.php
Requires Magento\Sales\Model\ResourceModel\Order\Shipment\CollectionFactory
These two don't have the same parent class or interface, so it seems that it's not possible to type hint.
Any thoughts?
... 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: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: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 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 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 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 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 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:35 PM
Submitted by
apiuser
on
08-30-2016
12:35 PM
Feature request from ldusan84, posted on GitHub Dec 25, 2014
I think that Magento2 should import namespaces and use aliases instead of using fully qualified namespaces all over the place.
Here is an example.
What I suggest is that instead of:
throw new \Magento\Framework\Model\Exception(
__('Invalid login or password.'),
self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
);
We could have:
use \Magento\Framework\Model\Exception as MagentoException
/* ... */
throw new MagentoException(
__('Invalid login or password.'),
self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
);
Here are the benefits from this:
With importing namespaces keyword at the first few lines of a class you actually get a nice documentation of your class dependencies. Everything that class uses is in those first few lines. It makes dependencies explicit.
If something changes in the future, you would only need to change it in one place, in import declaration and the alias remains. With fully qualified namespaces you would need to find them everywhere in class and change.
Less confusion if you have similar namespaces, you can give them different aliases.
All major frameworks use importing/aliases over fully qualified namespaces.
Let me know what you think.
... 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 12th, posted on GitHub Mar 30, 2014
It would be good to check with the latest release from the working demo project. For example, the release was issued, the developer downloaded it and started testing it is not correct work and in this case it would be good to have a platform from which to verify functionality.
... 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:03 PM
Submitted by
apiuser
on
08-30-2016
12:03 PM
Feature request from seansan, posted on GitHub Aug 22, 2014
Request for the ability. That when you have a grouped or bundle of products based on configurable products and when the simple product attribute identifier is the same: that you only have to choose it once
So. When you buy a bundle of tshirts. (Where tshirt is configurable product. And per size is simple) that you only have to select the size drop down once - and this counts for all the configurable products in the bundle or group
http://magento.stackexchange.com/questions/5002/multiple-configurable-products-as-a-bundle
... View more