Skip to content

Commit 9c54773

Browse files
Merge branch 'mainline-entity-manager' of github.com:magento/magento2-phpstorm-plugin into save-entity-flow-development
2 parents 2bbda0a + 191788c commit 9c54773

File tree

23 files changed

+749
-24
lines changed

23 files changed

+749
-24
lines changed

resources/META-INF/plugin.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,8 @@
236236
<internalFileTemplate name="Magento Entity Index Adminhtml Controller Class"/>
237237
<internalFileTemplate name="Magento Grid Ui Component Action Column Class"/>
238238
<internalFileTemplate name="Magento PHP Form Generic Button Block Class"/>
239+
<internalFileTemplate name="Magento Entity New Action Controller Class"/>
240+
<internalFileTemplate name="Magento New Entity Layout XML"/>
239241

240242
<defaultLiveTemplates file="/liveTemplates/MagentoPWA.xml"/>
241243

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
#parse("PHP File Header.php")
3+
4+
namespace ${NAMESPACE};
5+
6+
#set($uses = ${USES})
7+
#foreach ($use in $uses.split(","))
8+
use $use;
9+
#end
10+
11+
/**
12+
* New action ${ENTITY_NAME} controller.
13+
*/
14+
class ${CLASS_NAME} extends ${EXTENDS} implements ${IMPLEMENTS}
15+
{
16+
/**
17+
* Authorization level of a basic admin session.
18+
*
19+
* @see _isAllowed()
20+
*/
21+
const ADMIN_RESOURCE = '${ADMIN_RESOURCE}';
22+
23+
/**
24+
* Create new ${ENTITY_NAME} action.
25+
*
26+
* @return ${RESULT_PAGE}|${RESULT_INTERFACE}
27+
*/
28+
public function execute()
29+
{
30+
/** @var ${RESULT_PAGE} $resultPage */
31+
$resultPage = $this->resultFactory->create(${RESULT_FACTORY}::TYPE_PAGE);
32+
$resultPage->setActiveMenu('${MENU_IDENTIFIER}');
33+
$resultPage->getConfig()->getTitle()->prepend(__('New ${ENTITY_NAME}'));
34+
35+
return $resultPage;
36+
}
37+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<html lang="en">
2+
<body>
3+
<p face="verdana" size="-1">
4+
5+
</p>
6+
7+
<table width="100%" border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse">
8+
<tr>
9+
<td colspan="3"><font face="verdana" size="-1">Template's predefined variables:</font></td>
10+
</tr>
11+
<tr>
12+
<td valign="top"><nobr><font face="verdana" size="-2"><b>${NAMESPACE}</b></font></nobr></td>
13+
<td width="10">&nbsp;</td>
14+
<td width="100%" valign="top"><font face="verdana" size="-1"></font></td>
15+
</tr>
16+
</table>
17+
</body>
18+
</html>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column"
2+
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
3+
<update handle="${EDIT_ENTITY_LAYOUT}"/>
4+
</page>

resources/fileTemplates/internal/Magento New Entity Layout XML.xml.html

Whitespace-only changes.

resources/fileTemplates/internal/Magento UI Component Grid XML.xml.ft

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77
</item>
88
</argument>
99
<settings>
10+
<buttons>
11+
<button name="add">
12+
<url path="*/*/new"/>
13+
<class>primary</class>
14+
<label translate="true">Add New</label>
15+
</button>
16+
</buttons>
1017
<spinner>${NAME}_columns</spinner>
1118
<deps>
1219
<dep>${NAME}.${NAME}_data_source</dep>
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.generation.data;
7+
8+
import org.jetbrains.annotations.NotNull;
9+
10+
public class NewActionEntityControllerFileData {
11+
12+
private final String entityName;
13+
private final String moduleName;
14+
private final String namespace;
15+
private final String acl;
16+
private final String menuIdentifier;
17+
18+
/**
19+
* Controller NewAction file constructor.
20+
*
21+
* @param entityName String
22+
* @param moduleName String
23+
* @param namespace String
24+
*/
25+
public NewActionEntityControllerFileData(
26+
final @NotNull String entityName,
27+
final @NotNull String moduleName,
28+
final @NotNull String namespace,
29+
final @NotNull String acl,
30+
final @NotNull String menuIdentifier
31+
) {
32+
this.entityName = entityName;
33+
this.moduleName = moduleName;
34+
this.namespace = namespace;
35+
this.acl = acl;
36+
this.menuIdentifier = menuIdentifier;
37+
}
38+
39+
/**
40+
* Get entity name.
41+
*
42+
* @return String
43+
*/
44+
public String getEntityName() {
45+
return entityName;
46+
}
47+
48+
/**
49+
* Get module name.
50+
*
51+
* @return String
52+
*/
53+
public String getModuleName() {
54+
return moduleName;
55+
}
56+
57+
/**
58+
* Get namespace.
59+
*
60+
* @return String
61+
*/
62+
public String getNamespace() {
63+
return namespace;
64+
}
65+
66+
/**
67+
* Get acl.
68+
*
69+
* @return String
70+
*/
71+
public String getAcl() {
72+
return acl;
73+
}
74+
75+
/**
76+
* Get menu.
77+
*
78+
* @return String
79+
*/
80+
public String getMenu() {
81+
return menuIdentifier;
82+
}
83+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.actions.generation.data;
7+
8+
import org.jetbrains.annotations.NotNull;
9+
10+
public class NewEntityLayoutData {
11+
12+
private final String moduleName;
13+
private final String newActionPath;
14+
private final String editActionPath;
15+
16+
/**
17+
* New entity layout data.
18+
*
19+
* @param moduleName String
20+
* @param newActionPath String
21+
* @param editActionPath String
22+
*/
23+
public NewEntityLayoutData(
24+
final @NotNull String moduleName,
25+
final @NotNull String newActionPath,
26+
final @NotNull String editActionPath
27+
) {
28+
this.moduleName = moduleName;
29+
this.newActionPath = newActionPath;
30+
this.editActionPath = editActionPath;
31+
}
32+
33+
/**
34+
* Get module name.
35+
*
36+
* @return String
37+
*/
38+
public String getModuleName() {
39+
return moduleName;
40+
}
41+
42+
/**
43+
* Get new action path.
44+
*
45+
* @return String
46+
*/
47+
public String getNewActionPath() {
48+
return newActionPath;
49+
}
50+
51+
/**
52+
* Get edit action path.
53+
*
54+
* @return String
55+
*/
56+
public String getEditActionPath() {
57+
return editActionPath;
58+
}
59+
}

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewEntityDialog.java

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,21 @@
1414
import com.magento.idea.magento2plugin.actions.generation.NewEntityAction;
1515
import com.magento.idea.magento2plugin.actions.generation.OverrideClassByAPreferenceAction;
1616
import com.magento.idea.magento2plugin.actions.generation.data.AclXmlData;
17+
import com.magento.idea.magento2plugin.actions.generation.data.AdminListViewEntityActionData;
1718
import com.magento.idea.magento2plugin.actions.generation.data.CollectionData;
1819
import com.magento.idea.magento2plugin.actions.generation.data.ControllerFileData;
1920
import com.magento.idea.magento2plugin.actions.generation.data.DataModelData;
2021
import com.magento.idea.magento2plugin.actions.generation.data.DataModelInterfaceData;
2122
import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData;
2223
import com.magento.idea.magento2plugin.actions.generation.data.EntityDataMapperData;
23-
import com.magento.idea.magento2plugin.actions.generation.data.AdminListViewEntityActionData;
2424
import com.magento.idea.magento2plugin.actions.generation.data.FormGenericButtonBlockData;
2525
import com.magento.idea.magento2plugin.actions.generation.data.GetListQueryModelData;
2626
import com.magento.idea.magento2plugin.actions.generation.data.GridActionColumnData;
2727
import com.magento.idea.magento2plugin.actions.generation.data.LayoutXmlData;
2828
import com.magento.idea.magento2plugin.actions.generation.data.MenuXmlData;
2929
import com.magento.idea.magento2plugin.actions.generation.data.ModelData;
30+
import com.magento.idea.magento2plugin.actions.generation.data.NewActionEntityControllerFileData;
31+
import com.magento.idea.magento2plugin.actions.generation.data.NewEntityLayoutData;
3032
import com.magento.idea.magento2plugin.actions.generation.data.PreferenceDiXmFileData;
3133
import com.magento.idea.magento2plugin.actions.generation.data.ResourceModelData;
3234
import com.magento.idea.magento2plugin.actions.generation.data.RoutesXmlData;
@@ -49,12 +51,12 @@
4951
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule;
5052
import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule;
5153
import com.magento.idea.magento2plugin.actions.generation.generator.AclXmlGenerator;
54+
import com.magento.idea.magento2plugin.actions.generation.generator.AdminListViewEntityActionGenerator;
5255
import com.magento.idea.magento2plugin.actions.generation.generator.DataModelGenerator;
5356
import com.magento.idea.magento2plugin.actions.generation.generator.DataModelInterfaceGenerator;
5457
import com.magento.idea.magento2plugin.actions.generation.generator.DbSchemaWhitelistJsonGenerator;
5558
import com.magento.idea.magento2plugin.actions.generation.generator.DbSchemaXmlGenerator;
5659
import com.magento.idea.magento2plugin.actions.generation.generator.EntityDataMapperGenerator;
57-
import com.magento.idea.magento2plugin.actions.generation.generator.AdminListViewEntityActionGenerator;
5860
import com.magento.idea.magento2plugin.actions.generation.generator.FormGenericButtonBlockGenerator;
5961
import com.magento.idea.magento2plugin.actions.generation.generator.GetListQueryModelGenerator;
6062
import com.magento.idea.magento2plugin.actions.generation.generator.GridActionColumnFileGenerator;
@@ -64,6 +66,8 @@
6466
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleControllerClassGenerator;
6567
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleModelGenerator;
6668
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleResourceModelGenerator;
69+
import com.magento.idea.magento2plugin.actions.generation.generator.NewActionEntityControllerFileGenerator;
70+
import com.magento.idea.magento2plugin.actions.generation.generator.NewEntityLayoutGenerator;
6771
import com.magento.idea.magento2plugin.actions.generation.generator.PreferenceDiXmlGenerator;
6872
import com.magento.idea.magento2plugin.actions.generation.generator.RoutesXmlGenerator;
6973
import com.magento.idea.magento2plugin.actions.generation.generator.SaveEntityCommandGenerator;
@@ -83,6 +87,7 @@
8387
import com.magento.idea.magento2plugin.magento.files.ResourceModelPhp;
8488
import com.magento.idea.magento2plugin.magento.files.UiComponentDataProviderPhp;
8589
import com.magento.idea.magento2plugin.magento.files.actions.AdminListViewActionFile;
90+
import com.magento.idea.magento2plugin.magento.files.actions.NewActionFile;
8691
import com.magento.idea.magento2plugin.magento.files.actions.SaveActionFile;
8792
import com.magento.idea.magento2plugin.magento.files.commands.SaveEntityCommandFile;
8893
import com.magento.idea.magento2plugin.magento.packages.Areas;
@@ -362,9 +367,11 @@ private void onOK() {
362367
generateUiComponentGridFile();
363368
generateFormViewControllerFile();
364369
generateFormLayoutFile();
370+
generateNewEntityLayoutFile();
365371
generateSaveEntityCommandFile();
366372
generateFormSaveControllerFile();
367373
generateFormUiComponentGenericButtonFile();
374+
generateFormNewActionControllerFile();
368375
generateUiComponentFormFile();
369376
}
370377

@@ -1083,6 +1090,19 @@ private String getEditViewAction() {
10831090
+ "edit";
10841091
}
10851092

1093+
/**
1094+
* Get new entity action path.
1095+
*
1096+
* @return String
1097+
*/
1098+
private String getNewEntityAction() {
1099+
return getRoute()
1100+
+ File.separator
1101+
+ FirstLetterToLowercaseUtil.convert(getEntityName())
1102+
+ File.separator
1103+
+ "new";
1104+
}
1105+
10861106
/**
10871107
* Get delete action path.
10881108
*
@@ -1131,6 +1151,14 @@ private void generateFormLayoutFile() {
11311151
), project).generate(ACTION_NAME, false);
11321152
}
11331153

1154+
private void generateNewEntityLayoutFile() {
1155+
new NewEntityLayoutGenerator(new NewEntityLayoutData(
1156+
getModuleName(),
1157+
getNewEntityAction(),
1158+
getEditViewAction()
1159+
), project).generate(ACTION_NAME, false);
1160+
}
1161+
11341162
/**
11351163
* Run SaveCommand.php file generator for an entity.
11361164
*/
@@ -1200,6 +1228,25 @@ private void generateFormSaveControllerFile() {
12001228
), project).generate(ACTION_NAME, false);
12011229
}
12021230

1231+
/**
1232+
* Generate NewAction Controller file.
1233+
*/
1234+
private void generateFormNewActionControllerFile() {
1235+
final NamespaceBuilder namespace = new NamespaceBuilder(
1236+
getModuleName(),
1237+
NewActionFile.CLASS_NAME,
1238+
NewActionFile.getDirectory(getEntityName())
1239+
);
1240+
1241+
new NewActionEntityControllerFileGenerator(new NewActionEntityControllerFileData(
1242+
getEntityName(),
1243+
getModuleName(),
1244+
namespace.getNamespace(),
1245+
getAcl(),
1246+
getMenuIdentifier()
1247+
), project).generate(ACTION_NAME, false);
1248+
}
1249+
12031250
/**
12041251
* Get save entity command class Fqn.
12051252
*

0 commit comments

Comments
 (0)