shopware6-phpstorm-plugin's People
shopware6-phpstorm-plugin's Issues
twig block extends won't work if shopware is located in vendor
Create snippets in belonging file
Given i write a new file and fill it with non existing snippets, i want to have the possibility by an action to autogenerate an empty snippet in the belonging snippet file, so that i can fill it.
- if a file does not exist, it can be generated (but i think it can be a "must" to have an existing snippet file with the main namespace)
- nice to have: add snippet in all language snippet files too
Minor: Unnecessary edit prompt when trying to extend a vendor block
- Open for example vendor/shopware/storefront/Resources/views/storefront/page/product-detail/buy-widget.html.twig
- Press alt-enter on page_product_detail_buy_form_inner -> Extend this block
- Non-Project file protection kicks in - which seems not necessary, because I do not want to change the vendor file at all
v0.0.25
Community Store checks only for composer.jsons that are meant to be uploaded to the Community Store
I develop 99% projects. I don't fulfil composer.json compliance for community store release, but I don't have to. I just have to fill in the stuff that is needed for the admin. Please check where the composer.json is placed so I don't get annoyed for no reason. I would've PRd it but I don't know how to check the filepath where the warnings are registered. I would've checked whether I am in a custom/*
folder beside plugins
. Best would be to check for path repositories in the project composer.json. Whatever floats better this boat.
Support for 6.5.x
Please kindly add support for 6.5.x
Sort bundle name in template extension
When selecting bundle name to extend template, the list is not sorted. It would be great if it can be sorted alphabetically so it is easier to look.
Generate Entity Definition
It would be handy if we could generate a new entity
with the appropriate definition
and collection
.
The result should be the same as the result of ./bin/console frosh:make:definition My\\Plugin\\Namespace\\SomeDefinition
See: ./bin/console frosh:make:definition My\Plugin\Namespace\SomeDefinition
Add deprecation support for App Scripts
Function hooks will have a new function willBeRequiredInVersion
. If this is set and a block cannot be found. The PhpStorm Extension should show a inspection and maybe a Quick Fix
Failed to build index - Toolbox Version 0.0.41
com.intellij.diagnostic.PluginException: Failed to build index 'de.shyim.shopware6.backend.system-config' for file file:///home/stefan/code/shop/src/MyBundle/Resources/config/config.xml (id = 3303) (file type = XML) [Plugin: de.shyim.shopware6]
at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:89)
...
Controller / Route generation
A standard controller and route generator would be a cool feature to have, which create a skeleton along with the annotations and registers it inside service.xml / routes.xml respectively.
Generate Code for Adding a Custom Field in a Plugin
Currently we mostly create custom fields via admin panel. But to properly deploy a custom module, the field(s) should be created in code.
It would be nice if the frosh development helper could support creating such custom fields, like described in
taken from: FriendsOfShopware/FroshDevelopmentHelper#40
snippet helper should show at least filename
Add quick action to create a new twig file to extend this block
Add quick action to any block to create quickly an new twig file with the blog to extend it
Dont mark the .html part from .html.twig files in rename context
Exception during Twig file navigation: java.lang.NullPointerException at TwigBlockDeprecated
relavant stack:
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.NullPointerException
at de.shyim.shopware6.inspection.twig.TwigBlockDeprecated$buildVisitor$1.visitElement(TwigBlockDeprecated.kt:27)
at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:270)
java.lang.NullPointerException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:564)
at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:591)
at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:672)
at com.intellij.concurrency.JobLauncherImpl.processQueue(JobLauncherImpl.java:367)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.processInOrder(InspectionRunner.java:324)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.visitElements(InspectionRunner.java:297)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$4(InspectionRunner.java:140)
at com.intellij.codeInspection.InspectionEngine.withSession(InspectionEngine.java:246)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.inspect(InspectionRunner.java:126)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:113)
at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:80)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:55)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:406)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.runWithSpanIgnoreThrows(trace.kt:76)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceUtil.runWithSpanThrows(TraceUtil.java:34)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:401)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1075)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$3(PassExecutorService.java:392)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:610)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:685)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:641)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:609)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:78)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:391)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:367)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:200)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:184)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:365)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:187)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.NullPointerException
at de.shyim.shopware6.inspection.twig.TwigBlockDeprecated$buildVisitor$1.visitElement(TwigBlockDeprecated.kt:27)
at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:270)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$10(InspectionRunner.java:350)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1075)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$11(InspectionRunner.java:379)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:200)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:184)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$12(InspectionRunner.java:385)
at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:158)
at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:150)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$13(InspectionRunner.java:325)
at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:129)
at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:118)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$14(InspectionRunner.java:325)
at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.lambda$call$0(JobLauncherImpl.java:307)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:610)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:685)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:641)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:609)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:78)
at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:292)
at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:278)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1428)
... 5 more
Autocomplete nested associations in criteria object in php and js
PHP example:
$criteria->addAssociation('order.documents.documentType');
Better SEO
https://www.google.com/search?q=phpstorm+shopware+plugin yields https://www.shopware.com/de/news/shopware-plugin-fuer-phpstorm/ which is featuring the old plugin that seems to not be updated anymore?
Maybe the blog post can also mention this new plugin :-)
Fix error while writing new Criteria
java.util.NoSuchElementException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:722)
at com.intellij.concurrency.JobLauncherImpl.processQueue(JobLauncherImpl.java:357)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.processInOrder(InspectionRunner.java:309)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.visitElements(InspectionRunner.java:284)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$5(InspectionRunner.java:122)
at com.intellij.codeInspection.InspectionEngine.withSession(InspectionEngine.java:227)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.inspect(InspectionRunner.java:110)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:132)
at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:97)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:56)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:419)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:412)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:411)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:387)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:213)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:385)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:184)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.util.NoSuchElementException: Array is empty.
at kotlin.collections.ArraysKt___ArraysKt.first(_Arrays.kt:1013)
at de.shyim.shopware6.inspection.php.CriteriaIdMisused$buildVisitor$1.visitElement(CriteriaIdMisused.kt:39)
at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:273)
at com.jetbrains.php.lang.psi.elements.impl.PhpASTElementImpl.accept(PhpASTElementImpl.java:29)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$10(InspectionRunner.java:333)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1152)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$11(InspectionRunner.java:312)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:174)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:213)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$12(InspectionRunner.java:346)
at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:159)
at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:151)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$13(InspectionRunner.java:310)
at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:130)
at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:119)
at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processInOrder$14(InspectionRunner.java:310)
at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.lambda$call$0(JobLauncherImpl.java:297)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:282)
at com.intellij.concurrency.JobLauncherImpl$1MyProcessQueueTask.call(JobLauncherImpl.java:270)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448)
... 5 more
Error during indexing
Getting this error when the project is opened and starts indexing:
com.intellij.diagnostic.PluginException: Failed to build index 'de.shyim.shopware6.backend.system-config' for file file:///home/huzaifa/Code/sw6/custom/plugins/PickwareDhl/vendor/pickware/shipping-bundle/src/Resources/config/common.xml (id = 535179) (file type = XML) [Plugin: de.shyim.shopware6]
at com.intellij.ide.plugins.PluginManagerCore.createPluginException(PluginManagerCore.java:274)
common.xml
<?xml version="1.0" encoding="UTF-8" ?>
<config
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/shopware/platform/master/src/Core/System/SystemConfig/Schema/config.xsd"
>
<card>
<title>Sender address</title>
<title lang="de-DE">Absenderadresse</title>
<input-field type="text">
<name>senderAddressFirstName</name>
<label>First name</label>
<label lang="de-DE">Vorname</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressLastName</name>
<label>Last name</label>
<label lang="de-DE">Nachname</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressCompany</name>
<label>Company</label>
<label lang="de-DE">Firma</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressDepartment</name>
<label>Department</label>
<label lang="de-DE">Abteilung</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressPhone</name>
<label>Phone</label>
<label lang="de-DE">Telefonnummer</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressEmail</name>
<label>Email address</label>
<label lang="de-DE">E-Mail-Adresse</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressAddressAddition</name>
<label>Address addition</label>
<label lang="de-DE">Adresszusatz</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressStreet</name>
<label>Street</label>
<label lang="de-DE">Straße</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressHouseNumber</name>
<label>House number</label>
<label lang="de-DE">Hausnummer</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressZipCode</name>
<label>Zip code</label>
<label lang="de-DE">Postleitzahl</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressCity</name>
<label>City</label>
<label lang="de-DE">Ort</label>
<required>false</required>
</input-field>
<input-field type="text">
<name>senderAddressStateIso</name>
<label>State (short code)</label>
<label lang="de-DE">Bundesstaat/-land (Kürzel)</label>
<required>false</required>
</input-field>
<input-field type="single-select">
<name>senderAddressCountryIso</name>
<label>Country</label>
<label lang="de-DE">Land</label>
<required>false</required>
<options>
<option>
<id>DE</id>
<name>Germany</name>
<name lang="de-DE">Germany</name>
</option>
<option>
<id>AT</id>
<name>Austria</name>
<name lang="de-DE">Österreich</name>
</option>
<option>
<id>BE</id>
<name>Belgium</name>
<name lang="de-DE">Belgien</name>
</option>
<option>
<id>DK</id>
<name>Denmark</name>
<name lang="de-DE">Dänemark</name>
</option>
<option>
<id>FI</id>
<name>Finland</name>
<name lang="de-DE">Finnland</name>
</option>
<option>
<id>FR</id>
<name>France</name>
<name lang="de-DE">Frankreich</name>
</option>
<option>
<id>IE</id>
<name>Ireland</name>
<name lang="de-DE">Irland</name>
</option>
<option>
<id>LU</id>
<name>Luxembourg</name>
<name lang="de-DE">Luxemburg</name>
</option>
<option>
<id>PL</id>
<name>Poland</name>
<name lang="de-DE">Polen</name>
</option>
<option>
<id>PT</id>
<name>Portugal</name>
<name lang="de-DE">Portugal</name>
</option>
<option>
<id>ES</id>
<name>Spain</name>
<name lang="de-DE">Spanien</name>
</option>
</options>
</input-field>
</card>
<card>
<title>Customs information for export (CN22 & CN23)</title>
<title lang="de-DE">Zollinformationen für Export</title>
<input-field type="single-select">
<name>customsInformationTypeOfShipment</name>
<label>Type of shipment</label>
<label lang="de-DE">Art der Sendung</label>
<helpText lang="de-DE">
Für Online-Shops wird "Handelsware" empfohlen. Entspricht Feld (10) auf der Zollinhaltserklärung CN 23.
</helpText>
<helpText>
For online shops, "Sale of goods" is recommended. Corresponds to field (10) of the customs declaration
CN 23.
</helpText>
<options>
<option>
<id>gift</id>
<name>Gift</name>
<name lang="de-DE">Geschenk</name>
</option>
<option>
<id>documents</id>
<name>Documents</name>
<name lang="de-DE">Dokumente</name>
</option>
<option>
<id>commercial-sample</id>
<name>Commercial sample</name>
<name lang="de-DE">Warenmuster</name>
</option>
<option>
<id>sale-of-goods</id>
<name>Sale of goods</name>
<name lang="de-DE">Handelsware</name>
</option>
<option>
<id>returned-goods</id>
<name>Returned goods</name>
<name lang="de-DE">Warenrücksendung</name>
</option>
<option>
<id>other</id>
<name>Other</name>
<name lang="de-DE">Sonstiges</name>
</option>
</options>
</input-field>
<input-field type="text">
<name>customsInformationExplanation</name>
<label>Explanation of shipment (if type of shipment is "Other")</label>
<label lang="de-DE">Beschreibung der Sendung (wenn Art der Sendung "Sonstiges" ist)</label>
<helpText lang="de-DE">
Muss angegeben werden, wenn die Art der Sendung "Sonstiges" ist. Entspricht Feld (10) auf der
Zollinhaltserklärung CN 23. Muss in englischer oder französischer Sprache angegeben werden.
</helpText>
<helpText>
Must be specified if the type of shipment is "Other". Corresponds to field (10) of the customs
declaration CN 23. Must be provided in English or French.
</helpText>
</input-field>
<input-field>
<name>senderAddressCustomsReference</name>
<label>Customs Reference</label>
<label lang="de-DE">Kennnummer für Zollzwecke</label>
<helpText>
Whether the field must be filled in depends on the regulations of the country of origin and destination.
Possible values are for example your importer code (customs/EORI number), tax code or VAT no.
</helpText>
<helpText lang="de-DE">
Ob das Feld ausgefüllt werden muss, hängt von den Bestimmungen des Herkunfts- und Ziellandes ab.
Mögliche Werte sind beispiele deine Zollnummer (EORI-Nummer), Steuernummer oder Umsatzsteuer-ID-Nr.
</helpText>
</input-field>
<input-field type="text">
<name>customsInformationOfficeOfOrigin</name>
<label>Office of origin</label>
<label lang="de-DE">Einlieferungsstelle</label>
<helpText lang="de-DE">Name der Postfiliale, in die die Pakete eingeliefert werden.</helpText>
<helpText>Name of the post office where the parcels are committed.</helpText>
</input-field>
<input-field type="text">
<name>customsInformationComment</name>
<label>Comment</label>
<label lang="de-DE">Bemerkung</label>
<helpText lang="de-DE">
Gib hier an, wenn deine Waren bestimmten Bedingungen unterliegen, z.B. Quarantänebestimmungen,
Gesundheitskontrollen, Bestimmungen für Pflanzenschutzmittel usw. Entspricht dem Feld (11) auf der
Zollinhaltserklärung CN 23. Muss in englischer oder französischer Sprache angegeben werden.
</helpText>
<helpText>
Specify here if your goods are subject to certain restrictions, e.g. quarantine regulations,
health checks, provisions for plant protection products, etc. Corresponds to the field (11) on
customs declaration CN 23. Must be provided in English or French.
</helpText>
</input-field>
<input-field type="textarea">
<name>customsInformationPermitNumbers</name>
<label>Numbers of Permits or Licences</label>
<label lang="de-DE">Nummern der Genehmigungen oder Lizenzen</label>
<helpText lang="de-DE">
Diese Angabe ist nur in Ausnahmefällen nötig und kann im Allgemeinen ignoriert werden.
Entspricht dem Feld (12) auf der Zollinhaltserklärung CN 23.
</helpText>
<helpText>
This specification is only necessary in exceptional cases and can usually be ignored. Corresponds to the
field (12) on customs declaration CN 23.
</helpText>
</input-field>
<input-field type="textarea">
<name>customsInformationCertificateNumbers</name>
<label>Numbers of certificates</label>
<label lang="de-DE">Nummern der Bescheinigungen</label>
<helpText lang="de-DE">
Diese Angabe ist nur in Ausnahmefällen nötig und kann im Allgemeinen ignoriert werden.
Entspricht dem Feld (13) auf der Zollinhaltserklärung CN 23.
</helpText>
<helpText>
This specification is only necessary in exceptional cases and can usually be ignored. Corresponds to the
field (13) on customs declaration CN 23.
</helpText>
</input-field>
</card>
</config>
Autocomplete Vue Routes
- SW6 does normalize the route names like sw-bla will be sw.bla
- Add local inspection for invalid routes
Naming of changelog could contain illegal (windows) character
When a changelog file is created, the filename may contain illegal characters.
In sw command:
https://github.com/shopware/platform/blob/trunk/src/Core/Framework/Changelog/Processor/ChangelogGenerator.php#L36-L39
New Copy / Paste action in context menu
Add 2 new entries to the context menu to copy snippets.
- Copy as i18n js snippet
- Copy as symfony/i18n .twig snippet (based on the folder)
Example
There is a difference between i18n and symfony i guess.
When it needs variables, it would be great to build the structure like:
Administration
Twig
{{ $tc('tooltip.invalidEmail', 0, {
email: ''
}) }}
Js
this.$tc('tooltip.invalidEmail', 0, {
email: ''
})
Storefront
Twig
{{ 'tooltip.invalidEmail'|trans({
'%email%': ''
}) }}
Extend this block: Support for Admin Components
Action Context Item: create Event Subscriber
Wenn ich ein Event subscriben will bin ich meistens in der Klasse oder an der Stelle wo das Event geworfen wird.
Geil wäre, wenn man da im Context Menu sagen könnte "Erstelle mir einen Event Subscriber dafür in folgendem Plugin" (oder evtl. folgendem Ordner). Das der automatisch dann die Datei anlegt und vorfüllt. (mit "getSubscribedEvents", richtigem Namespace und co) :D
Generating Entities and edit Entities later
Graphical interface for this feature https://github.com/FriendsOfShopware/FroshDevelopmentHelper#generating-entities-or-edit-entities like "Create Plugin".
Maybe with a table and you can add multiple rows and add the name and the type and flags. It finds all flags and definitions by itself, so you can easily select it.
Index build fails
com.intellij.diagnostic.PluginException: Failed to build index 'de.shyim.shopware6.backend.entity-definition' for file file:///home/mt/www/6.5/src/Core/Framework/App/Aggregate/AppShippingMethod/AppShippingMethodDefinition.php (id = 309726) (file type = PHP) [Plugin: de.shyim.shopware6]
at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:89)
at com.intellij.util.indexing.diagnostic.BrokenIndexingDiagnostics$DefaultListener.onFileIndexMappingFailed(BrokenIndexingDiagnostics.kt:47)
at com.intellij.util.indexing.FileBasedIndexImpl.createSingleIndexValueApplier(FileBasedIndexImpl.java:1623)
at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$25(FileBasedIndexImpl.java:1483)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyWithProvidedValueIn(FileTypeManagerImpl.java:676)
at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1435)
at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1408)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexOneFileOfJob$4(IndexUpdateRunner.java:322)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:832)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:864)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:602)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$4(NonBlockingReadActionImpl.java:565)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1133)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:76)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:133)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:114)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:71)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:71)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:111)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:76)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:565)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:492)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:222)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexOneFileOfJob(IndexUpdateRunner.java:326)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexJobsFairly$3(IndexUpdateRunner.java:248)
at com.intellij.openapi.progress.impl.ProgressSuspender.executeNonSuspendableSection(ProgressSuspender.java:89)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexJobsFairly(IndexUpdateRunner.java:251)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$doIndexFiles$2(IndexUpdateRunner.java:182)
at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:24)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:249)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:227)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:215)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.intellij.util.indexing.impl.MapReduceIndexMappingException: com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation
at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:255)
at com.intellij.indexing.composite.CompositeInvertedIndexBase.updateBaseIndex(CompositeInvertedIndexBase.java:294)
at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:64)
at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:30)
at com.intellij.util.indexing.FileBasedIndexImpl.createSingleIndexValueApplier(FileBasedIndexImpl.java:1614)
... 46 more
Caused by: com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation
at com.intellij.openapi.project.IndexNotReadyException.create(IndexNotReadyException.java:66)
at com.intellij.util.indexing.FileBasedIndexImpl.handleDumbMode(FileBasedIndexImpl.java:859)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:807)
at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:369)
at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:170)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:102)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:90)
at com.jetbrains.php.PhpIndexImpl.getElements(PhpIndexImpl.java:746)
at com.jetbrains.php.PhpIndexImpl.getByName(PhpIndexImpl.java:1183)
at com.jetbrains.php.PhpIndexImpl.getByFQN(PhpIndexImpl.java:1160)
at com.jetbrains.php.PhpIndexImpl.getByFqnCacheAware(PhpIndexImpl.java:1241)
at com.jetbrains.php.PhpIndexImpl.getClassesByFQNInternal(PhpIndexImpl.java:1236)
at com.jetbrains.php.PhpIndexImpl.getClassesByFQN(PhpIndexImpl.java:1225)
at com.jetbrains.php.PhpClassHierarchyUtils.getSuperClasses(PhpClassHierarchyUtils.java:615)
at com.jetbrains.php.lang.psi.elements.impl.PhpClassImpl.findMethodInSuperClass(PhpClassImpl.java:1285)
at com.jetbrains.php.lang.psi.elements.impl.PhpClassImpl.findMethodsByName(PhpClassImpl.java:1240)
at com.jetbrains.php.lang.psi.elements.impl.PhpClassImpl.findMethodByName(PhpClassImpl.java:1179)
at com.jetbrains.php.lang.psi.elements.impl.PhpClassImpl.findMethodByName(PhpClassImpl.java:1173)
at de.shyim.shopware6.index.EntityDefinitionIndex$getIndexer$1$1.visitElement(EntityDefinitionIndex.kt:66)
at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:270)
at com.jetbrains.php.lang.psi.elements.impl.PhpPsiElementImpl.accept(PhpPsiElementImpl.java:76)
at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:53)
at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:10)
at com.intellij.util.WalkingState.walkChildren(WalkingState.java:65)
at com.intellij.util.WalkingState.elementStarted(WalkingState.java:42)
at com.intellij.psi.PsiWalkingState.elementStarted(PsiWalkingState.java:62)
at com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitElement(PsiRecursiveElementWalkingVisitor.java:48)
at de.shyim.shopware6.index.EntityDefinitionIndex$getIndexer$1$1.visitElement(EntityDefinitionIndex.kt:82)
at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:270)
at com.jetbrains.php.lang.psi.elements.impl.PhpASTElementImpl.accept(PhpASTElementImpl.java:29)
at com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:183)
at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:747)
at de.shyim.shopware6.index.EntityDefinitionIndex.getIndexer$lambda$0(EntityDefinitionIndex.kt:36)
at com.intellij.util.indexing.impl.MapReduceIndex.mapByIndexer(MapReduceIndex.java:313)
at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:304)
at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:162)
at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:39)
at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:249)
... 50 more
not compatible with EAP 2023.3
java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/HashCodeBuilder
at de.shyim.shopware6.index.dict.AdminModule.hashCode(AdminModule.kt:13)
NullPointerException when path `src/Resources/views/storefront` does not exist yet
I just started to build a new theme. I triggered the block context action "Extends this block in other template directory" and selected my theme. It throwed the attached error.
I could solve the problem by creating the /views/storefront
path which didn't exist yet.
java.lang.NullPointerException
at de.shyim.shopware6.intentions.ExtendTwigBlockIntention.createMissingViewFolder(ExtendTwigBlockIntention.kt:169)
at de.shyim.shopware6.intentions.ExtendTwigBlockIntention.extendBlockInBundle(ExtendTwigBlockIntention.kt:114)
at de.shyim.shopware6.intentions.ExtendTwigBlockIntention.invoke$lambda-5$lambda-4$lambda-3(ExtendTwigBlockIntention.kt:83)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:947)
at de.shyim.shopware6.intentions.ExtendTwigBlockIntention.invoke$lambda-5$lambda-4(ExtendTwigBlockIntention.kt:82)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:174)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:164)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:150)
at de.shyim.shopware6.intentions.ExtendTwigBlockIntention.invoke$lambda-5(ExtendTwigBlockIntention.kt:81)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
at com.intellij.ui.popup.AbstractPopup.lambda$dispose$18(AbstractPopup.java:1508)
at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:101)
at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:186)
at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:140)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:175)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:36)
at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1505)
at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:139)
at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:169)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:217)
at com.intellij.ui.popup.AbstractPopup.cancel(AbstractPopup.java:782)
at com.intellij.ui.popup.AbstractPopup.closeOk(AbstractPopup.java:716)
at com.intellij.openapi.ui.popup.PopupChooserBuilder.closePopup(PopupChooserBuilder.java:470)
at com.intellij.openapi.ui.popup.PopupChooserBuilder$1.mouseReleased(PopupChooserBuilder.java:329)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6654)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
at java.desktop/java.awt.Component.processEvent(Component.java:6419)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2790)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:891)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:820)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:757)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:498)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
[Feature] Twig Block versioning
Problem
It's hard to keep Twig blocks up to date after Shopware update or plugin update, when the extended block has been changed. This is true for complete replacements/before and after changes.
So when developers update Shopware or a plugin, where they changed blocks, they manually check every block they overwritten if the content is still the same, or they check the styling of the page.
Both options are time-intensive:
Solution
A solution for this problem could be to add versioning to the Twig blocks
{% sw_extends '@Storefront/....' %}
{# shopware-block: <sha-hash-of-upstream-template>#<shopware-version-of-the-creation> #}
{% block component_fooo %}
{% endblock %}
This PhpStorm Plugin can read that comment and differentiate the generated hash from the current hash. The hash is generated from the original template. When you are on the same Shopware version, they match.
If not, we can highlight the block in yellow and say something changed in this block in the upstream template.
To simplify the lookup for changes, we can add an Intention (CMD/Control + Enter) to show a git diff between the previous and the current version of the block using the version added in the comment. So the user can directly see what has been changed.
After they made the changes, they can run a second Intention (CMD/Control + Enter) to update the hash to the newest version and go to the next block.
Migration
We can add a simple Intention to blocks to add the versioning if it's missing from the current value.
Configuration
We should add a config for opt-in for this feature for any theme/plugin/app. Some plugins are intentionally made for a lot of Shopware versions like Store Plugins, where this feature may not wanted.
Filter factory autocomplete / live template
The new filter factory introduced in 6.4 does not have good documentation for its usage so it gets quite difficult to know what values / options to fill in. An autocomplete / live template functionality would help a lot in defining custom filters in components.
Remove deprecation for 2021.3 Beta
IntelliJ IDEA Ultimate IU-213.5744.18Compatible. 1 usage of deprecated API
1 deprecated API usage
Shopware 6 Toolbox 0.0.19 uses deprecated API, which may be removed in future releases leading to binary and source code incompatibilities
Deprecated method usage (1)
AnAction.startInTransaction() (1)
Code Template completion should not be shown inside StringLiteralExpression
Snippet check not working proper
Snippets in SW6 are loaded from Resources/snippet
recursive and can be named individually.
But this plugin is just loading "storefront.en-GB.json". We are managing the snippets through messages.*.json
, others will manage with a custom name, while docs of shopware is saying example
for name.
Please support any json-file within Resources/snippet
like shopware core.
sw-icon autocomplete
When using icons such as {% sw_icon 'bag' %} it would be great if an autocomplete can be provided to select the icon from available ones. For admin and storefront too if easily possible.
Show block usages for twig files (like interfaces in php)
It would be really nice if it were possible to have an icon, or some sort of option, on a twig block where other twig files either extend or rewrite it.
It would be nice if the file was shown as a suggestion.
So if i have a file
foo.html.twig
{% block test_block %}
some stuff
{% endblock %}
and a foo2.html.twig
{% sw_extends "foo.html.twig" %}
{% block test_block %}
other stuff
{{ parent() }}
{% endblock %}
it would be nice, if a user can jump to both files by an icon on the block, or via the context menu.
CMS Elements and Blocks Generator
Self explanatory title 😃
Create an app
A skeleton generator for apps with best practices - similar to the plugin generator.
"Create a Migration" Generator
[Feature] Add a missing translation snippet inspection
We should check inside the snippet file that all snippets are translated into all languages. We could also add a quick action, to add the missing piece automatically.
Cannot create scheduled task
When creating scheduled tasks I get the following error
java.lang.NullPointerException: namespaces must not be null
at de.shyim.shopware6.action.generator.php.NewScheduledTaskAction.actionPerformed(NewScheduledTaskAction.kt:19)
at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:240)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:261)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:240)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:248)
at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:236)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:67)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:240)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:90)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:90)
at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:515)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:545)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6652)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
at java.desktop/java.awt.Component.processEvent(Component.java:6417)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2784)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:885)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:814)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:751)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:441)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:440)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:492)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Autocomplete entities in admin repositoryFactory
Example:
orderLineItemRepository () {
return this.repositoryFactory.create('order_line_item')
}
Autocomplete the entity in the create function would be awesome <3
com.intellij.diagnostic.PluginException: Failed to build index (id = 4119) (file type = XML)
I am using the following version of
- PhpStorm (latest):
- PhpStorm 2023.3
- Build #PS-233.11799.232, built on December 1, 2023
- Runtime version: 17.0.9+7-b1087.7 amd64
- VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
- Shopware 6 Toolbox (latest):
- 0.0.41
After the Plugin is installed and the index in PhpStorm is rebuild, the following error is thrown
com.intellij.diagnostic.PluginException: Failed to build index 'de.shyim.shopware6.backend.system-config' for file file://D:/OneDriveBusiness/OneDrive - XXXXX/Code/XXXXXX/general/sw6_dev/custom/plugins/PickwareGls/vendor/pickware/shipping-bundle/src/Resources/config/common.xml (id = 4119) (file type = XML) [Plugin: de.shyim.shopware6]
at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:89)
at com.intellij.util.indexing.diagnostic.BrokenIndexingDiagnostics$DefaultListener.onFileIndexMappingFailed(BrokenIndexingDiagnostics.kt:47)
at com.intellij.util.indexing.FileBasedIndexImpl.createSingleIndexValueApplier(FileBasedIndexImpl.java:1575)
at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$23(FileBasedIndexImpl.java:1444)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyWithProvidedValueIn(FileTypeManagerImpl.java:678)
at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1397)
at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1371)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexOneFileOfJob$5(IndexUpdateRunner.java:492)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:840)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:872)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:604)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$4(NonBlockingReadActionImpl.java:567)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1075)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:73)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:73)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:128)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:111)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:73)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:192)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:610)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:685)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:641)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:609)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:78)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:179)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:73)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:108)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:73)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:567)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:492)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:220)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexOneFileOfJob(IndexUpdateRunner.java:496)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexJobsFairly$4(IndexUpdateRunner.java:375)
at com.intellij.openapi.progress.impl.ProgressSuspender.executeNonSuspendableSection(ProgressSuspender.java:90)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexJobsFairly(IndexUpdateRunner.java:378)
at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$doIndexFiles$3(IndexUpdateRunner.java:309)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:244)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:222)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:210)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: com.intellij.util.indexing.impl.MapReduceIndexMappingException: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:260)
at com.intellij.indexing.composite.CompositeInvertedIndexBase.updateBaseIndex(CompositeInvertedIndexBase.java:284)
at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:64)
at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:30)
at com.intellij.util.indexing.FileBasedIndexImpl.createSingleIndexValueApplier(FileBasedIndexImpl.java:1571)
... 45 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.base/java.util.Collections$SingletonList.get(Collections.java:4959)
at de.shyim.shopware6.index.SystemConfigIndex.getNamespaceFromInput(SystemConfigIndex.kt:103)
at de.shyim.shopware6.index.SystemConfigIndex.getIndexer$lambda$0(SystemConfigIndex.kt:37)
at com.intellij.util.indexing.impl.MapReduceIndex.mapByIndexer(MapReduceIndex.java:318)
at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:309)
at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:254)
... 49 more
Wrong name for generated cms element component
Wrong name for generated cms element component
The name of the generated cms element component is missing -component
in the name prefix.
Name is currently sw-cms-el-${NAME}
instead of sw-cms-el-component-${NAME}
, which is already reference in the cms index.js.
PR follows
Extrend this block with Shopware 6.4.11.1 and a fresh theme-skeleton?
I just used the "Extend this block" functionality in my shopware 6.4.11.1 instance and with a fresh theme-skeleton. I was very confused why my changes within the Theme didn't get used by shopware.
I just found out that this function creates a folder within "ThemePluginRoot/Resources/views/" , but shopware recognizes templates only in "ThemePluginRoot/src/Resources/views/" directory.
The problem does not appear anymore, once the "views" directory exists inside the template.
Automatically tag plugin src folder as sources root with correct namespace
Currently, marking a custom/static-plugins/VendorPlugin/src
directory as Sources in PHPStorm is a very long process. It would be great if this plugin could do that automatically.
Current workflow:
- Open settings
- Go to Directories
- Find src folder of your new plugin
- Mark as Sources
- Click the small pencil icon next to your path in the right sidebar
- Manually fill in the namespace prefix of your plugin
I'm not sure what is possible (or if other plugins maybe already exist), but doing this automatically based on the composer.json PSR-4 entry would be so awesome.
Autocomplete mixins in admin
mixins: [
Mixin.getByName('notification')
]
Autocomplete the mixins in the getByName function.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.