Skip to content

Commit 6e2fa5d

Browse files
author
Vitaliy Boyko
committed
Merge branch '2.0.0-develop' of github.com:magento/magento2-phpstorm-plugin into issue-83-UI-component-Grid-generation
� Conflicts: � resources/META-INF/plugin.xml
2 parents 7ca91cf + 0a0f06c commit 6e2fa5d

File tree

28 files changed

+620
-139
lines changed

28 files changed

+620
-139
lines changed

.github/workflows/gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: Run automated tests
55

66
on:
77
pull_request:
8-
branches: [ master, 1.0.1-develop, 1.0.2-develop ]
8+
branches: [ master, 1.0.2-develop, 2.0.0-develop ]
99

1010
jobs:
1111
build-linux:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ This is a plugin for Magento 2 development in the PhpStorm IDE. It is available
1515
6. Check `Enable` and `OK` button.
1616

1717
## Works with
18-
* PhpStorm >= 2019.3.3
18+
* PhpStorm >= 2020.1.1
1919
* JRE >= 1.8
2020

2121
## Features

build.gradle

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
plugins {
7-
id 'org.jetbrains.intellij' version '0.4.15'
7+
id 'org.jetbrains.intellij' version '0.4.22'
88
id 'checkstyle'
99
id 'pmd'
1010
}
@@ -14,14 +14,16 @@ repositories {
1414
}
1515

1616
group 'com.magento.idea'
17-
version '1.0.2'
17+
version '2.0.0'
1818

1919
apply plugin: 'org.jetbrains.intellij'
2020
apply plugin: 'java'
2121
apply plugin: 'groovy'
2222

23-
def phpPluginVersion = System.getProperty("phpPluginVersion", "193.6494.35")
24-
def ideaVersion = System.getProperty("ideaVersion", "2019.3.3")
23+
gradle.startParameter.showStacktrace = org.gradle.api.logging.configuration.ShowStacktrace.ALWAYS_FULL
24+
25+
def phpPluginVersion = System.getProperty("phpPluginVersion", "201.7223.91")
26+
def ideaVersion = System.getProperty("ideaVersion", "2020.1.1")
2527
def javaVersion = 1.8
2628

2729
sourceCompatibility = javaVersion
@@ -31,7 +33,16 @@ intellij {
3133
version ideaVersion
3234
type 'IU'
3335
pluginName 'com.magento.idea.magento2plugin'
34-
plugins = ["com.jetbrains.php:$phpPluginVersion", 'yaml', 'java-i18n', 'properties', 'CSS', 'JavaScriptLanguage', 'com.intellij.lang.jsgraphql:2.3.0']
36+
plugins = [
37+
"com.jetbrains.php:$phpPluginVersion",
38+
'yaml',
39+
'java-i18n',
40+
'properties',
41+
'CSS',
42+
'JavaScriptLanguage',
43+
'com.intellij.lang.jsgraphql:2.3.0',
44+
'platform-images'
45+
]
3546
updateSinceUntilBuild false
3647
sameSinceUntilBuild false
3748
downloadSources !Boolean.valueOf(System.getenv('CI'))

resources/META-INF/plugin.xml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<idea-plugin>
88
<id>com.magento.idea.magento2plugin</id>
99
<name>Magento PhpStorm</name>
10-
<version>1.0.2</version>
10+
<version>2.0.0</version>
1111
<vendor url="https://github.com/magento/magento2-phpstorm-plugin">Magento Inc.</vendor>
1212

1313
<description><![CDATA[
@@ -24,7 +24,7 @@
2424
</change-notes>
2525

2626
<!-- please see http://confluence.jetbrains.com/display/IDEADEV/Build+Number+Ranges for description -->
27-
<idea-version since-build="193.6494.35"/>
27+
<idea-version since-build="201.7223.91"/>
2828

2929
<!-- please see http://confluence.jetbrains.com/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products
3030
on how to target different products -->
@@ -34,6 +34,7 @@
3434
<depends>com.jetbrains.php</depends>
3535
<depends>JavaScript</depends>
3636
<depends>com.intellij.modules.platform</depends>
37+
<depends>com.intellij.platform.images</depends>
3738
<depends optional="true" config-file="withJsGraphQl.xml">com.intellij.lang.jsgraphql</depends>
3839

3940
<actions>
@@ -117,6 +118,7 @@
117118
<fileBasedIndex implementation="com.magento.idea.magento2plugin.stubs.indexes.mftf.TestNameIndex" />
118119
<fileBasedIndex implementation="com.magento.idea.magento2plugin.stubs.indexes.js.RequireJsIndex" />
119120
<fileBasedIndex implementation="com.magento.idea.magento2plugin.stubs.indexes.js.MagentoLibJsIndex" />
121+
<fileBasedIndex implementation="com.magento.idea.magento2plugin.stubs.indexes.xml.AclResourceIndex" />
120122

121123
<codeInsight.lineMarkerProvider language="PHP" implementationClass="com.magento.idea.magento2plugin.linemarker.php.PluginLineMarkerProvider"/>
122124
<codeInsight.lineMarkerProvider language="PHP" implementationClass="com.magento.idea.magento2plugin.linemarker.php.PluginTargetLineMarkerProvider"/>
@@ -170,6 +172,13 @@
170172
enabledByDefault="true" level="ERROR"
171173
implementationClass="com.magento.idea.magento2plugin.inspections.xml.ModuleDeclarationInModuleXmlInspection"/>
172174

175+
<localInspection language="XML" groupPath="XML"
176+
shortName="AclResourceXmlInspection"
177+
displayName="Inspection for the Title XML required attribute in the `etc/acl.xml` file"
178+
groupName="Magento 2"
179+
enabledByDefault="true" level="ERROR"
180+
implementationClass="com.magento.idea.magento2plugin.inspections.xml.AclResourceXmlInspection"/>
181+
173182
<libraryRoot id=".phpstorm.meta.php" path=".phpstorm.meta.php/" runtime="false"/>
174183

175184
<internalFileTemplate name="Magento Module Composer"/>
@@ -183,13 +192,15 @@
183192
<internalFileTemplate name="Magento GraphQL Resolver Class"/>
184193
<internalFileTemplate name="Magento Cronjob Class"/>
185194
<internalFileTemplate name="Magento Crontab Xml"/>
186-
<internalFileTemplate name="Magento CLI Command"/>
195+
<internalFileTemplate name="Magento CLI Command Class"/>
187196
<internalFileTemplate name="Magento Module Controller Backend Class"/>
188197
<internalFileTemplate name="Magento Module Controller Frontend Class"/>
189198
<internalFileTemplate name="Magento Module Cron Groups Xml"/>
190199
<internalFileTemplate name="Magento Module UI Component Grid Xml"/>
191200
<internalFileTemplate name="Magento Module Ui Grid Collection Data Provider Php"/>
192201
<internalFileTemplate name="Magento Module Ui Grid Custom Data Provider Php"/>
202+
203+
<postStartupActivity implementation="com.magento.idea.magento2plugin.project.startup.CheckIfMagentoPathIsValidActivity"/>
193204
</extensions>
194205

195206
<extensions defaultExtensionNs="com.jetbrains.php">

resources/magento2/common.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ common.cli.create.new.cli.command.title=Create a new Magento 2 CLI Command
4444
common.cli.generate.error=New CLI Command Generation Error
4545
common.cli.class.title=CLI Command Class
4646
common.validationErrorTitle=Validation Error
47-
common.defaultConsoleDirectory=Console
47+
common.defaultConsoleDirectory=Console/Command
4848
common.cronGroup.description.scheduleGenerateEvery=Frequency (in minutes) that schedules are written to the cron_schedule table.
4949
common.cronGroup.description.scheduleAheadFor=Time (in minutes) in advance that schedules are written to the cron_schedule table.
5050
common.cronGroup.description.scheduleLifetime=Window of time (in minutes) that cron job must start or will be considered missed ("too late" to run).

resources/magento2/inspection.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ inspection.observer.duplicateInOtherPlaces=The observer name "{0}" for event "{1
1616
inspection.cache.disabledCache=Cacheable false attribute on the default layout will disable cache site-wide
1717
inspection.moduleDeclaration.warning.wrongModuleName=Provided module name "{0}" does not match expected "{1}"
1818
inspection.moduleDeclaration.fix=Fix module name
19+
inspection.aclResource.error.missingAttribute=Attribute "{0}" is required
20+
inspection.aclResource.error.idAttributeCanNotBeEmpty=Attribute value "{0}" can not be empty

src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleComposerJsonGenerator.java

Lines changed: 73 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.actions.generation.generator;
67

78
import com.google.gson.JsonElement;
89
import com.google.gson.JsonParser;
910
import com.intellij.openapi.project.Project;
11+
import com.intellij.openapi.util.Pair;
1012
import com.intellij.openapi.vfs.VirtualFile;
1113
import com.intellij.psi.PsiFile;
1214
import com.magento.idea.magento2plugin.actions.generation.data.ModuleComposerJsonData;
@@ -16,60 +18,94 @@
1618
import com.magento.idea.magento2plugin.indexes.ModuleIndex;
1719
import com.magento.idea.magento2plugin.magento.files.ComposerJson;
1820
import com.magento.idea.magento2plugin.util.CamelCaseToHyphen;
19-
import com.intellij.openapi.util.Pair;
20-
import org.jetbrains.annotations.NotNull;
2121
import java.io.FileNotFoundException;
2222
import java.io.FileReader;
23-
import java.util.Properties;
2423
import java.util.List;
24+
import java.util.Properties;
25+
import org.jetbrains.annotations.NotNull;
2526

2627
public class ModuleComposerJsonGenerator extends FileGenerator {
2728

2829
private final ModuleComposerJsonData moduleComposerJsonData;
2930
private final FileFromTemplateGenerator fileFromTemplateGenerator;
3031
private final DirectoryGenerator directoryGenerator;
3132
private final CamelCaseToHyphen camelCaseToHyphen;
32-
private final Project project;
3333
private final ModuleIndex moduleIndex;
3434

35-
public ModuleComposerJsonGenerator(@NotNull ModuleComposerJsonData moduleComposerJsonData, Project project) {
35+
/**
36+
* Constructor.
37+
*
38+
* @param moduleComposerJsonData ModuleComposerJsonData
39+
* @param project Project
40+
*/
41+
public ModuleComposerJsonGenerator(
42+
final @NotNull ModuleComposerJsonData moduleComposerJsonData,
43+
final Project project
44+
) {
3645
super(project);
3746
this.moduleComposerJsonData = moduleComposerJsonData;
3847
this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project);
3948
this.directoryGenerator = DirectoryGenerator.getInstance();
4049
this.camelCaseToHyphen = CamelCaseToHyphen.getInstance();
41-
this.project = project;
4250
this.moduleIndex = ModuleIndex.getInstance(project);
4351
}
4452

45-
public PsiFile generate(String actionName) {
53+
@Override
54+
public PsiFile generate(final String actionName) {
4655
if (moduleComposerJsonData.getCreateModuleDirs()) {
47-
ModuleDirectoriesData moduleDirectoriesData = directoryGenerator.createOrFindModuleDirectories(moduleComposerJsonData.getPackageName(), moduleComposerJsonData.getModuleName(), moduleComposerJsonData.getBaseDir());
48-
return fileFromTemplateGenerator.generate(ComposerJson.getInstance(), getAttributes(), moduleDirectoriesData.getModuleDirectory(), actionName);
56+
final ModuleDirectoriesData moduleDirectoriesData =
57+
directoryGenerator.createOrFindModuleDirectories(
58+
moduleComposerJsonData.getPackageName(),
59+
moduleComposerJsonData.getModuleName(),
60+
moduleComposerJsonData.getBaseDir()
61+
);
62+
return fileFromTemplateGenerator.generate(
63+
ComposerJson.getInstance(),
64+
getAttributes(),
65+
moduleDirectoriesData.getModuleDirectory(),
66+
actionName
67+
);
4968
}
50-
return fileFromTemplateGenerator.generate(ComposerJson.getInstance(), getAttributes(), moduleComposerJsonData.getBaseDir(), actionName);
69+
return fileFromTemplateGenerator.generate(
70+
ComposerJson.getInstance(),
71+
getAttributes(),
72+
moduleComposerJsonData.getBaseDir(),
73+
actionName
74+
);
5175
}
5276

53-
protected void fillAttributes(Properties attributes) {
77+
@Override
78+
protected void fillAttributes(final Properties attributes) {
5479
attributes.setProperty("PACKAGE", moduleComposerJsonData.getPackageName());
5580
attributes.setProperty("MODULE_NAME", moduleComposerJsonData.getModuleName());
5681
attributes.setProperty("MODULE_DESCRIPTION", moduleComposerJsonData.getModuleDescription());
57-
attributes.setProperty("COMPOSER_PACKAGE_NAME", moduleComposerJsonData.getComposerPackageName());
82+
attributes.setProperty(
83+
"COMPOSER_PACKAGE_NAME",
84+
moduleComposerJsonData.getComposerPackageName()
85+
);
5886
attributes.setProperty("MODULE_VERSION", moduleComposerJsonData.getModuleVersion());
59-
attributes.setProperty("LICENSE", this.getLicensesString(moduleComposerJsonData.getModuleLicense()));
60-
attributes.setProperty("DEPENDENCIES", this.getDependenciesString(moduleComposerJsonData.getModuleDependencies()));
87+
attributes.setProperty(
88+
"LICENSE",
89+
this.getLicensesString(moduleComposerJsonData.getModuleLicense())
90+
);
91+
attributes.setProperty(
92+
"DEPENDENCIES",
93+
this.getDependenciesString(moduleComposerJsonData.getModuleDependencies())
94+
);
6195
}
6296

63-
protected String getLicensesString(List licensesList) {
97+
protected String getLicensesString(final List licensesList) {
6498
String license = "[\n";
65-
Object[] licenses = licensesList.toArray();
99+
final Object[] licenses = licensesList.toArray();
66100

67101
for (int i = 0; i < licenses.length; i++) {
68102
license = license.concat("\"");
69103
license = license.concat(licenses[i].toString());
70104
license = license.concat("\"");
71105

72-
if (licenses.length != (i + 1)) license = license.concat(",");
106+
if (licenses.length != i + 1) {
107+
license = license.concat(",");
108+
}
73109

74110
license = license.concat("\n");
75111
}
@@ -79,11 +115,14 @@ protected String getLicensesString(List licensesList) {
79115
return license;
80116
}
81117

82-
private String getDependenciesString(List dependenciesList) {
118+
private String getDependenciesString(final List dependenciesList) {
83119
String result = "";
84-
Object[] dependencies = dependenciesList.toArray();
120+
final Object[] dependencies = dependenciesList.toArray();
85121
result = result.concat(ComposerJson.DEFAULT_DEPENDENCY);
86-
boolean noDependency = dependencies.length == 1 && dependencies[0].equals(ComposerJson.NO_DEPENDENCY_LABEL);
122+
final boolean noDependency =
123+
dependencies.length == 1 && dependencies[0].equals(
124+
ComposerJson.NO_DEPENDENCY_LABEL
125+
);
87126
if (dependencies.length == 0 || noDependency) {
88127
result = result.concat("\n");
89128
} else {
@@ -95,14 +134,14 @@ private String getDependenciesString(List dependenciesList) {
95134
}
96135

97136
for (int i = 0; i < dependencies.length; i++) {
98-
String dependency = dependencies[i].toString();
99-
Pair<String, String> dependencyData = getDependencyData(dependency);
137+
final String dependency = dependencies[i].toString();
138+
final Pair<String, String> dependencyData = getDependencyData(dependency);
100139
result = result.concat("\"");
101140
result = result.concat(dependencyData.getFirst());
102141
result = result.concat("\"");
103142
result = result.concat(": \"" + dependencyData.getSecond() + "\"");
104143

105-
if (dependencies.length != (i + 1)) {
144+
if (dependencies.length != i + 1) {
106145
result = result.concat(",");
107146
}
108147

@@ -112,20 +151,23 @@ private String getDependenciesString(List dependenciesList) {
112151
return result;
113152
}
114153

115-
private Pair<String, String> getDependencyData(String dependency) {
154+
private Pair<String, String> getDependencyData(
155+
final String dependency
156+
) {
116157
String version = "*";
117158
String moduleName = camelCaseToHyphen.convert(dependency).replace("_-", "/");
118159
try {
119-
VirtualFile virtualFile = moduleIndex.getModuleDirectoryByModuleName(dependency)
160+
final VirtualFile virtualFile = moduleIndex.getModuleDirectoryByModuleName(dependency)
120161
.findFile(ComposerJson.FILE_NAME)
121-
.getVirtualFile();
162+
.getVirtualFile();//NOPMD
122163
if (virtualFile.exists()) {
123-
JsonElement jsonElement = new JsonParser().parse(new FileReader(virtualFile.getPath()));
124-
JsonElement versionJsonElement = jsonElement.getAsJsonObject().get("version");
125-
JsonElement nameJsonElement = jsonElement.getAsJsonObject().get("name");
164+
final JsonElement jsonElement =
165+
new JsonParser().parse(new FileReader(virtualFile.getPath()));//NOPMD
166+
final JsonElement versionJsonElement = jsonElement.getAsJsonObject().get("version");
167+
final JsonElement nameJsonElement = jsonElement.getAsJsonObject().get("name");
126168
if (versionJsonElement != null) {
127169
version = versionJsonElement.getAsString();
128-
int minorVersionSeparator = version.lastIndexOf(".");
170+
final int minorVersionSeparator = version.lastIndexOf('.');
129171
version = new StringBuilder(version)
130172
.replace(minorVersionSeparator + 1, version.length(),"*")
131173
.toString();
@@ -134,7 +176,7 @@ private Pair<String, String> getDependencyData(String dependency) {
134176
moduleName = nameJsonElement.getAsString();
135177
}
136178
}
137-
} catch (FileNotFoundException e) {
179+
} catch (FileNotFoundException e) { //NOPMD
138180
// It's fine
139181
}
140182

src/com/magento/idea/magento2plugin/generation/php/NewModuleForm.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public MagentoProjectGeneratorSettings getSettings() {
116116
final Settings.State state = new Settings.State();
117117
state.setPluginEnabled(true);
118118
state.setMftfSupportEnabled(true);
119-
state.setDefaultLicenseName(Settings.DEFAULT_LICENSE);
119+
state.setDefaultLicenseName(Settings.defaultLicense);
120120
state.setMagentoPathAndUpdateLastUsed(this.magentoPath.getTextField().getText().trim());
121121

122122
return new MagentoProjectGeneratorSettings(

0 commit comments

Comments
 (0)