Feature request from moleman, posted on GitHub Jan 21, 2016
When you run commands in an build environment, like Jenkins, you want the commands to return a non-zero exit code if an error occurred so that Jenkins can fail the build.
Currently if any error occurs when you run setup:static-content:deploy it will not return a non-zero exit code which makes the build succeed even though the build is incomplete.
Example:
=== frontend -> Vaimo/XXX -> en_US ===
...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Compilation from source:
frontend/Vaimo/XXX/en_US/css/email-inline.less
variable @media-common is undefined in file /XXX/en_US/css/source/_theme.less in _theme.less on line 24, column 9
22| // Global
23| // _____________________________________________
24| & when (@media-common = true) {
25| .svg-link {
26| pointer-events: none;
27| }>
This will make the generation of static files to stop right in the middle because of an error but it will still not return a non-zero exit code which makes the build incomplete and Jenkins will not know about it.
The same behaviour occurs when you run setup:di:compile and when you switch deploy mode with deploy:mode:set. All of these commands should return a non-zero exit code if any error occurs.
... View more
Feature request from ovdev1, posted on GitHub Jan 30, 2016
Just noticed when trying to load table rates that the directory_country_region table contains the wrong state code for Queensland Australia, should be QLD not QSD
... View more
Feature request from ankursachdeva11, posted on GitHub Feb 01, 2016
I am trying to create custom api using webapi and we need output in custom XML.
When we are trying to return some XML and hit the rest API url then XML shown as plain text in the .... tags. It is not creating XML in response.
it shows like this :
Is there any way to modify the response tag to get custom XML response.
... View more
Feature request from augsteyer, posted on GitHub Feb 03, 2016
I believe this is a bug where I am trying to pass a JSON object like this
{
"action":"get_setting",
"settings":
[
{
"name": "t",
"value": "p"
}
]
}
Where the interface looks like this
/**
* @param string $action
* @param array[][] $settings - the type here is the problem area
*
* @return string
*/
public function setSettings($action, $settings);
I have currently tried many variations of string[][], array[], string[], mixed[], Array[], etc, without any way of passing settings without getting an error thrown at the lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php::process() function.
The root cause of the problem is that in lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php::convertValue() it has no way of parsing array of arrays. If it's something like "string[][]" it will consider it a simple type and will try to match it to !settype(array(...), string), which results into an error. If it's something unknown like array[][]. It will consider it complex, and try to initialize it as a class, where it will figure out that 'array' is not a class.
A way of solving, would be to make array a simple type, however I do not know the implications of such change, hence why it's not a pull request. The change would also allow this case to be accepted whether it's array[][] or array[] or array, so most likely not a good solution.
lib/internal/Magento/Framework/Reflection/TypeProcessor.php::isTypeSimple()
...
return in_array(
$type,
[
self::NORMALIZED_STRING_TYPE,
self::NORMALIZED_INT_TYPE,
self::NORMALIZED_FLOAT_TYPE,
self::NORMALIZED_DOUBLE_TYPE,
self::NORMALIZED_BOOLEAN_TYPE,
self::NORMALIZED_ARRAY_TYPE //'array' <------
]
);
... View more
Feature request from avoking100, posted on GitHub Feb 05, 2016
Hello guys. New to Github, New to M2, New to bugs.
When I add a new "Configurable product" I need to choose "weight". Now, since I dont have weight for this product, I choose "Weight" = No.
When I create configurations for this product, i see it generates VIRTUAL products instead of SIMPLE products. The problem is I want SIMPLE products, even I do not have a weight (!).
After I load the product again I See "Weight" =" yes", I try to save it as "NO" but it always keep showing "yes".
Now, the problem with Virtual products that are generated, is: when I go to checkout selection these products it does not offer me to enter shipping address. So this issue is critical for me. I can not make SIMPLE products using a "Configurable product" because I do not have a weight?
I hope anyone can help me and confirm it is a bug.
Thank you!
... View more
Feature request from ajpevers, posted on GitHub Feb 12, 2016
It would be helpful if pending entries in cron_schedule are deleted when changing a cron job's config:
I've changed the config from 09:50:00 to 09:55:00 and then to Enabled: No.
In between changing the config settings i ran: magento cache:clean config && magento cron:run .
The result was this:
At the moment that the cron is turned off by config it will still run based on the cron_schedule entry:
Here the config was off, but the cron job will still run.
AOE_Scheduler has a nice fix for this and it reschedules the job at the moment you change the configuration. It would be nice if Magento itself would at least remove the pending schedules on config change.
... View more
Feature request from stefandoorn, posted on GitHub Feb 12, 2016
The way the ErrorHandler is loaded in Framework\App\Bootstrap probably prevents interception on the ErrorHandler class. Reason I would like to use this, is to adjust the ErrorHandler in a more developer friendly version (Whoops).
It makes sense, as the error handler needs to be registered before the object manager will be loaded. But, it would be great if there is a method to register another error_handler after that is done.
So basically it would be:
Register default Magento error handler
Load object manager
Register default Magento error handler again using object manager
The second moment would allow for interception I believe. Or, am I overseeing a method to register a different error_handler?
... View more
Feature request from miguelbalparda, posted on GitHub Feb 15, 2016
While trying to use the new performance tool on a Magento 2.0.2 with Sample data I can only get a couple of admin requests and the test ends. Below is the command I'm using and the output and logs.
michael@michael-HP-Pavilion-15-Notebook-PC:~/Downloads/apache-jmeter-2.13$ ./bin/jmeter -n -t bench.jmx -Jhost=xxxx.net -Jbase_path=/ -Jramp_period=3000 -Jreport_save_path=./ -Jguest_checkout_percent=4 -Jview_catalog_percent=62 -Jview_product_add_to_cart_percent=10 -Jorders=2000 -Jadmin_path=admin_41207x -Jadmin_user=admin -Jadmin_password=admin123 -Jloops=10
Creating summariser
Created the tree successfully using bench.jmx
Starting the test @ Mon Feb 15 09:52:54 ART 2016 (1455540774295)
Waiting for possible shutdown message on port 4445
summary + 4 in 6s = 0.7/s Avg: 1457 Min: 8 Max: 3027 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0
summary + 3 in 8.3s = 0.4/s Avg: 2698 Min: 2205 Max: 2983 Err: 1 (33.33%) Active: 0 Started: 0 Finished: 0
summary = 7 in 14.2s = 0.5/s Avg: 1989 Min: 8 Max: 3027 Err: 1 (14.29%)
Tidying up ... @ Mon Feb 15 09:53:08 ART 2016 (1455540788693)
... end of run
... View more
Feature request from Yonn-Trimoreau, posted on GitHub Feb 17, 2016
When I observe page_block_html_topmenu_gethtml_before event, just like Magento\Catalog\ObserverAddCatalogToTopmenuItemsObserver does, and add some items to the top.menu , I can't order the items I add (whether it should be displayed before or after category listing, for example).
I think it should be possible, since the "top menu" must be one of the first and most modified element on any website.
Maybe by adding a special \Magento\Framework\DataObject attribute "order" which will be used inside or before Magento\Theme\Block\Html 's _getHtml method, in a way to reorder the \Magento\Framework\Data\Tree\Node before rendering it ?
Or even clearer : adding a $_position property to the Node class, and a non-mandatory variable to the Node class constructor, which could be used in a similar way I expressed before ?
Simple, non-breaking, no performance issue, really useful. Right ?
I can try to make a pull request if you accept this issue.
... View more
Feature request from mikebranderhorst, posted on GitHub Feb 22, 2016
In .gitignore:
/vendor
!/vendor/.htaccess
Should be:
/vendor/*
!/vendor/.htaccess
This way /vendor/.htaccess is added to (private) repository (and with deployment the folder is created).
Maybe also add the third line (to make adding commercial packages possible by artifact)
https://getcomposer.org/doc/05-repositories.md#artifact
/vendor/*
!/vendor/.htaccess
!/vendor/artifacts/.htaccess
# uncomment when using a private repository and want to
# add artifact (commercial) packages to the repository
#!/vendor/artifacts/
Combined with an addition in composer.json
(composer config repositories.artifacts artifact vendor/artifacts)
"repositories": {
"artifacts": {
"type": "artifact",
"url": "vendor/artifacts"
}
},
And to keep the folder adding the file /vendor/artifacts/.htaccess
... View more
Feature request from rhoerr, posted on GitHub Feb 23, 2016
In brief: There seems to be an issue with \Magento\Catalog\Model\ProductRepository whereby it does not respect emulation, nor does it correctly identify the current scope in all situations.
The primary result of this when saving a product through ProductRepository from an affected scope is that (1) some attributes are saved in the fallback scope (default store) when that would not be expected, and (2) it seems to be impossible to associate a product to multiple websites.
Magento version: EE 2.0.2
Context: A custom controller in the admin panel extending \Magento\Backend\App\Action , for importing configurable products.
Tracing the issue:
\Magento\Catalog\Api\ProductRepositoryInterface is injected into the controller via DI.
We load $product , already having website_ids = [1, 2] (for reasons unclear, these are not returned by $product->getWebsiteIds() .)
We call $this->productRepository->save($product);
\Magento\Catalog\Model\ProductRepository::save() calls
ProductRepository->initializeProductData() calls
ProductRepository->assignProductToWebsites() calls
ProductRepository->storeManager->getStore() ( \Magento\Store\Model\StoreManager )
Having no currentStoreId, StoreManager calls
StoreManager->storeResolver->getCurrentStoreId() ( \Magento\Store\Model\StoreResolver ) calls
StoreResolver->getStoresData()
StoreResolver was initialized by DI with no runMode or scopeCode , therefore $this->runMode defaults to 'website', and $this->scopeCode defaults to 'null'.
With this state, StoreResolver::getStoresData() returns:
Array
(
[0] => Array // $stores
(
[0] => 1
)
[1] => 1 // $defaultStoreId
)
$store is loaded based on $defaultStoreId and returned to ProductRepository .
Bottom line: This results in ProductRepository->storeManager->getStore()->getCode() returning 'default', despite that we are in the admin scope.
Starting emulation on the admin store prior to this process has no bearing on the outcome.
Passing in a parameter of ___store='admin' has no bearing on the outcome (because admin is not a valid website code).
Expected behavior is that ProductRepository obeys the scope of whatever context it is called from, including emulation.
... View more
Feature request from damien-synolia, posted on GitHub Feb 24, 2016
Hello all,
I just launched the standard PHPUnit test (without the dev:tests:run command) :
php <magentodir>/vendor/phpunit/phpunit/phpunit --debug
I am in <magentodir>/dev/tests/unit directory.
There is a fatal error on Magento\DownloadableImportExport\Model\Import\Product\Type\Downloadable file. On function fillDataLink , there is a fillExistOptions call where $existingOptions is null. It should be an array. It's the same in fillDataTitleLink method.
I just add an ugly fix with a is_null check for $existingOptions and set it to an empty array and it works.
I think the best way should be to change the fetchAll method to always return an empty array, if no data is retrieved in database.
Is there something I did wrong ?
Damien.
... View more
Feature request from wojtekn, posted on GitHub Feb 24, 2016
I created module using "vendor/foobar" name in composer.json and used Vendor_FooBar namespace. The I run static tests and I get following error:
For the module 'Vendor_FooBar', the expected package name is 'vendor/foobar'
This error message is confusing because it says it expects package name I already used. As far as I understand it should say following:
For the module 'Vendor_FooBar', the expected package name is 'vendor/module-foo-bar'
If my assumption is correct, value of $this->convertModuleToPackageName($moduleName) should be used instead of $packageName in message returned in \Magento\Test\Integrity\ComposerTest::assertConsistentModuleName method.
I can do PR if it's helpful.
... View more
Feature request from ravbetsky, posted on GitHub Mar 01, 2016
Each change in requirers-config.js of our module doesn't take any effect. After we had removed pub/static/_requirejs/frontend/Magento/luma/en_US/requirejs-config.js our changes applied.
... View more
Feature request from wojtekn, posted on GitHub Mar 03, 2016
This isn't something big, but I think it may be worth to improve both phpunit.xml.dist files to make them working in similar way by default. For now the biggest difference is that integration tests don't include whole app/code but limit code coverage only to Magento code:
<directory suffix=".php">../../../app/code/Magento</directory>
Unit tests enable everything from app/code by default:
<directory suffix=".php">../../../app/code/*</directory>
Another improvements may include adding logging configuration example in integration tests and adjusting nodes order.
... View more
Feature request from erikhansen, posted on GitHub Mar 08, 2016
I'm using Capistrano to deploy Magento 2 to production and stage environments. As a part of the deployment process, I'm running the bin/magento setup:static-content:deploy command. However since Capistrano streams all output to screen, I see this:
So I've resorted to passing in the -q flag to silence all output: bin/magento setup:static-content:deploy -q . However this doesn't allow me to see progress as each theme is compiled. I'd like to see a flag added like --no-progress that would result in output like this:
php -f bin/magento -- setup:static-content:deploy --no-progress
Requested languages: en_US
=== frontend -> Magento/blank -> en_US ===
=== frontend -> Magento/luma -> en_US ===
=== frontend -> Customvendor/customtheme -> en_US ===
... View more
Feature request from davidverholen, posted on GitHub Mar 20, 2016
this is more of a minor design issue. I recently needed a method to normalize a file system path.
Looking at the core, I found the method(s) for this, but implemented directly in the classes where they are used:
https://github.com/magento/magento2/blob/2d82d19010a2deee42ab67e62627b84169f0ab8a/lib/internal/Magento/Framework/View/FileSystem.php#L169
https://github.com/magento/magento2/blob/2d82d19010a2deee42ab67e62627b84169f0ab8a/lib/internal/Magento/Framework/Setup/SampleData/FixtureManager.php#L62
As I did not really need any of the classes, I implemented this method (a third time) in my own class.
A good place would be maybe the Frameworks File System Class: https://github.com/magento/magento2/blob/2d82d19010a2deee42ab67e62627b84169f0ab8a/lib/internal/Magento/Framework/Filesystem.php
What do you think about it? I could start a small pull request for that
... View more
Feature request from pantaoran, posted on GitHub Mar 23, 2016
I observe that in app/code/Magento/Store/Model/ScopeInterface.php there are 5 different scope type constants which are ambiguous and probably should be unified.
interface ScopeInterface
{
/**#@+
* Scope types
*/
const SCOPE_STORES = 'stores';
const SCOPE_WEBSITES = 'websites';
const SCOPE_STORE = 'store';
const SCOPE_GROUP = 'group';
const SCOPE_WEBSITE = 'website';
/**#@-*/
}
Both "store/stores" and "website/websites" exist once in singular and once in plural. It is not clear to the developer in any way which one should be used.
We ran into this problem today in our team, where I wrote code to set some config values, and another team member wrote code to read them, but I used the plural constants and he used the singular ones. We didn't notice the problem for weeks because we always tested with the default config values and didn't bother to set storeview-specific ones, and even when we did, I guess they must use a fall-back to default scope values when the store specific ones are not found.
I searched through the core code for use, and both versions seem to be used, although the singular versions are used much more often. Can we please simplify this important interface to only use one spelling per type?
Or is there a compelling reason to keep both singular and plural for these that I'm not understanding? I feel strange for bringing this up here because I can't possibly be the first person to notice this...
... View more
Feature request from katesuykovskaya, posted on GitHub Mar 26, 2016
Steps to reproduce
M 2.0.2
go to admin panel -> Products -> Catalog -> edit product
open Images and Videos tab, click on image - dialog is shown
open source of page
Actual result
each time, when modal dialog is created, the old one isn't removed from DOM => when I choose images a lot of time, I got this
which makes using current / active dialog inconvenient using JS.
Expected Result
I should get one dialog, or at least one dialog per chosen image - it should not be duplicated.
... View more
Feature request from rkhoury82, posted on GitHub Mar 31, 2016
Steps to reproduce
Install Magento 2.0.3
Migrate or create a Configurable Product with 300 variations, save.
Go back into that product, press the "add products manually"
Expected result
With products with smaller variation sets the functionality works
I have increased the LimitRequestLine to work around 414 (Request-URI Too Large) error (per issue #3495)
I have not been able determine the size limit yet.
Actual result
Error Message Pops: Attention Something went wrong.
No browser messages in console.
Error in Apache Logs:
[Thu Mar 31 18:34:14.139835 2016] [proxy_fcgi:warn] [pid 4968] [client 60.225.85.XXX:37893] AH02536: couldn't encode envvar 'QUERY_STRING' in 16384 bytes, referer: http://EXAMPLE/admin/catalog/product/edit/id/3/key/81f78988e9908f8d89115a62f01eacdd8611886ce257a56bd9ec6c22d83930e6/
[Thu Mar 31 18:34:14.139840 2016] [proxy_fcgi:warn] [pid 4968] [client 60.225.85.XXX:37893] AH02536: couldn't encode envvar 'REQUEST_URI' in 16384 bytes, referer: http://EXAMPLE/admin/catalog/product/edit/id/3/key/81f78988e9908f8d89115a62f01eacdd8611886ce257a56bd9ec6c22d83930e6/
Environment
PHP 7.0.4 run as FPM not MOD_PHP (unable to test with 7.0.2 or 7.0.3 to see if it is a PHP error)
Apache 2.4.18
MYSQL 5.6
... View more