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 hostep, posted on GitHub Jun 26, 2016
Steps to reproduce
Install Magento 2.1.0 using composer but use the --no-dev flag
Look at the dev/ directory in the filesystem
Expected result
The dev/ directory should be empty or non-existing
Actual result
The dev/ directory exists and contains a bunch of development stuff
Discussion
In an effort to try to find the best options of deploying a Magento 2 installation to a production server, I keep discovering issues which aren't ideal.
As a best practise, we use composer install --no-dev --prefer-dist --optimize-autoloader on a production server when deploying. I would expect that no development dependencies gets installed because of this, but this is not true.
This isn't only about the /dev directory, but also for example about the lib/web/css/docs/ directory.
The last one for example causes the setup:static-content:deploy command to compile a less file which has absolutely no purpose of existing on a production server while it takes multiple seconds to compile this file, per locale, per theme.
In a very quick test, I discovered that when removing the above directories before executing setup:di:compile and setup:static-content:deploy makes those two run about 58 seconds faster (on my local machine) then without removing those directories.
Here is a list of files/directories which I believe shouldn't get deployed to a production server:
.htaccess.sample
.php_cs
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
COPYING.txt
Gruntfile.js.sample
ISSUE_TEMPLATE.md
LICENSE.txt
LICENSE_AFL.txt
nginx.conf.sample
package.json.sample
php.ini.sample
dev/
lib/web/css/docs/
phpserver/
...
(the license files, I'm not sure about)
I think most of these files are getting into place because of the mapping in the composer.json file of the magento2-base module.
It would be great if those mappings can get split of into a mapping for development purposes and one for all environments.
My suggestion would be to add a map-dev to the extra section in the composer.json similar as the normal map section and update the magento-composer-installer project to support this and only install the map-dev files when you run composer without the --no-dev flag.
This is all theoretically, I haven't tested this properly, but let me know what you think.
I know that in your deploy scripts, you can simply delete the files you don't want after composer install --no-dev has run, but I think it makes sense to automate this, because not everyone will notice these issues.
Slightly related issues:
https://github.com/magento/magento2/issues/4245
https://github.com/magento/magento2/issues/4162
https://github.com/magento/magento2/issues/2561
... 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: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 daniel-ifrim, posted on GitHub Aug 19, 2016
Preconditions
Current version used by Magento is depreacted and not maintained anymore.
May we have the new version of it in the next Magento releases ?
Current version used by Magento:
https://github.com/magento/magento2/blob/develop/lib/web/jquery/jquery.cookie.js
in:
https://github.com/magento/magento2/blob/develop/lib/web/mage/cookies.js
Link to deprecated lib:
https://github.com/carhartl/jquery-cookie
Link to new lib:
https://github.com/js-cookie/js-cookie
Thank you
... 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 Vinai, posted on GitHub Aug 20, 2016
PHP7 allows methods to declare return types.
For example:
interface FooInterface
{
public function bar(): int;
}
This feature of PHP7 (and others) is not used by the Magento 2 core code, since it still supports the old PHP version 5.6.
However, code written for specific Magento 2 instances known to be running on PHP7, may already utilize the many features PHP7 provides under certain circumstances (e.g. compilation and ObjectManager compliance).
Magento 2 currently uses the PHP testing library PHPUnit version 4.1.
PHPUnit 4.1 can not create mocks of classes with methods specifying return types.
This feature was added to PHPUnit version 5 (more specifically, phpunit-mock-objects version 3, which is a dependency of PHPUnit 5).
As an external developer, I would like to be able to write PHP7 code if my client uses it.
Also, I would like to be able to easily test my code using the testing library bundled with Magento 2.
This would be possible by an update of the bundled testing library to PHPUnit 5.
Preconditions
PHP7
A Magento 2 installation (any version, beta to current develop HEAD).
Steps to reproduce
A module containing a class or interface with a method using a PHP7 return type.
A test that attempts to mock such the class or interface.
Expected result
PHPUnit creates the mock
Actual result
The mock PHPUnit 4.1 generates is not compatible with the PHP7 code and PHP throws an exception.
PHP Fatal error: Declaration of Mock_CollectorInterface_c5f77d44::collectForModule(string $moduleDir) must be compatible with VinaiKopp\Example\Src\CollectorInterface::collectForModule(string $moduleDir): string in .../vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php(290)
There already have been multiple issues where developers attempted to use PHP7 specific features with Magento 2. This is just the latest in this chain. I believe in order to stay current Magento 2 will have to be adjusted to be fully compatible with PHP7 features.
This can be done in multiple steps however, I think nobody expects the Magento core to make this big move immediately. Updating PHPUnit to allow third party developers to already utilize some PHP7 features would be a relatively easy to do step in that direction.
In fact, I think it would benefit the Magento core code, too, since some of the new features added in PHPUnit 5 are to show warnings when using bad practices in tests, such as mocking non-existent methods.
Such warnings for for example highlight the use of concrete instance methods when the mocked dependency is an interface. This allows developers to catch such cases and either extend the interface or fix the constructor dependency to be on the concrete instance (this is not a backward compatibility break as the code defacto already has this dependency - it just was hidden so far).
... 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 mikebranderhorst, posted on GitHub Feb 13, 2013
Apple, Dell, Microsoft all do the same as Magento (or the other way around ;-). But did you ever experience how hard it is to order a product living in a country if you do not speak nor read the foreign language? Apple for example, if you live in the Netherlands but cannot read Dutch how do you order? It must go through http://store.apple.com/nl which is Dutch. If you want to select English it is not possible to deliver to an address in The Netherlands. Now my feature request is to add an extra scope, named Language scope. If you add for example a product, translate it in multiple languages regardless of Store View scope. The Store View scope has a language and just picks the right translated product but a customer can stay on the Netherlands store but order everything in English or German or whatever.
Read my comments in this blog post.
http://inchoo.net/online-marketing/translation-is-not-localization-multi-country-e-commerce-tips/
Summary:
We have a:
Store A (.nl) Netherlands (Dutch is main language, German and English)
Store B (.de) Germany (German is main language, Dutch and English)
Store C (.eu) Europe (English is main language, Dutch and German)
Future: .be, .it, .se etc.
All shops share the same products, different prices, different static content and ! 3 languages. Currently it is difficult to get a internationalisation scope in a localized store.
A German store != the store of Germany. The store in the Netherlands could also be translated in German but is not the same as the German text on the store of Germany.
How I see this in practice:
Product:
When you add a product you have a Global scope product with multiple translations, not only text but also metadata, url, title pictures etc. Then when you add a product to a store view it gets automatically the language of that store view.
Static content:
This could be Global text in multiple languages or Website scope text in multiple languages. For example a Contact of Return policy page could be translated in say three languages but is for Store A, B and C not the same. But other pages could be the same in all Store A, B, C.
Configuration:
(.nl)
Store A - Netherlands - Dutch (main)
Store A - Netherlands - German
Store A - Netherlands - English
(.de)
Store B - Germany - German (main)
Store B - Germany - Dutch
Store B - Germany - English
(.eu)
Store C - Europe - English (main)
Store C - Europe - Dutch
Store C - Europe - German
Now, when I add a product, I should choose to make it global or assign it only to a country (website scope). I translate the product in multiple languages with English as fallback. When a customer visits the Store A but does not speaks Dutch and selects English he/she is still on Store A. Why not Store C? Store C has different content (maybe also theme) and different regulations (tax, law, delivery regulations, etc.)
... 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 ihor-sviziev, posted on GitHub Dec 13, 2013
In another content management systems we have price slider after shop installation.
Also should be great have ability use slider for other numeric attributes.
... 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 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
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 May 13, 2014
In Magento 1 we have really great custom module - AOE Scheduler. This module is open source and it allow see what cron job is planned, ability to start, schedule, disable some jobs from admin, etc. I think something similar should be inside magento 2 from box.
... 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 ihor-sviziev, posted on GitHub Jul 17, 2014
For now in Magento 1 and Magento 2 when we editing product we have 3 scopes attributes: global, website and store view, but we have select only can select global and store view scope.
As result - we have only two levels in value fallback:
Global -> Website or Global -> Store view.
Would be great have three levels in value fallback, like in config:
Global -> Website -> Store view
... 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 Den4ik, posted on GitHub Jul 20, 2014
Good solution integrate HTML Purifier into Magento. It help validate html code for unclosed tags. Sometimes in static blocks and pages html code not clear.
... 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
Status:
Investigating
Submitted on
08-30-2016
12:03 PM
Submitted by
apiuser
on
08-30-2016
12:03 PM
Feature request from intedyne, posted on GitHub Aug 28, 2014
It would be very helpful to add the ability of having configurable products as part of bundles and/or grouped products.
Use case: outfit builder. You have shirt, pants, and shoes. Each item has color and size. You want to sell the whole outfit, and allow customers to customize individual components.
Thank you.
... 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 tzyganu, posted on GitHub Sep 16, 2014
I'm adding a new category in the backend, select one product and fill in a position value.
After doing any action on the grid (filter, sorting, change page) the product I previously selected is still selected but the position is empty.
In this example I change the sorting
... 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 gigadesign1, posted on GitHub Jan 09, 2016
Improvement suggestion.
I use a lot of configurable products in combination with tier prices.
The configuration of prices used to be in the configurable product in Magento1.
Now in Magento2 when I want to update the tier prices of my product, I have to edit every single simple product.
Since we have a product in 32 different colors and 3 sizes (so 96 simple products), this is not really user-friendly.
The default price can be configured by selecting a attribute in the configurable product.
It would be great if tier prices can be configured there too!
Or at least through mass-updates of attributes.
... View more