Skip to content

Commit 572aa55

Browse files
author
Vitaliy
authored
Merge pull request #491 from bohdan-harniuk/save-entity-flow-development
Save entity flow development
2 parents 82a4bc2 + 39da774 commit 572aa55

File tree

17 files changed

+499
-23
lines changed

17 files changed

+499
-23
lines changed

resources/META-INF/plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
<internalFileTemplate name="Magento Entity New Action Controller Class"/>
240240
<internalFileTemplate name="Magento New Entity Layout XML"/>
241241
<internalFileTemplate name="Magento Delete Entity By Id Command"/>
242+
<internalFileTemplate name="Magento Entity Edit Action Controller Class"/>
242243

243244
<defaultLiveTemplates file="/liveTemplates/MagentoPWA.xml"/>
244245

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+
* Edit ${ENTITY_NAME} entity backend 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+
* Edit ${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(__('Edit ${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>

resources/fileTemplates/internal/Magento Entity Save Controller Class.php.ft

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class ${CLASS_NAME} extends ${EXTENDS} implements ${IMPLEMENTS}
6666
try {
6767
/** @var ${ENTITY_DTO}|${DATA_OBJECT} $entityModel */
6868
$entityModel = $this->entityDataFactory->create();
69-
$entityModel->addData($params);
69+
$entityModel->addData($params['general']);
7070
$this->saveCommand->execute($entityModel);
7171
$this->messageManager->addSuccessMessage(
7272
__('The ${ENTITY_NAME} data was saved successfully')

resources/fileTemplates/internal/Magento Resource Model Class.php.ft

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ class ${NAME}#if (${EXTENDS}) extends ${EXTENDS}#end#if (${IMPLEMENTS}) implemen
2222
protected function _construct()
2323
{
2424
$this->_init('${DB_NAME}', '${ENTITY_ID_COLUMN}');
25+
$this->_useIsObjectNew = true;
2526
}
2627
}

resources/fileTemplates/internal/Magento Save Entity Command Model.php.ft

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ class ${CLASS_NAME}
5757
/** @var ${MODEL} $model */
5858
$model = $this->modelFactory->create();
5959
$model->addData($${DTO_PROPERTY}->getData());
60+
$model->setHasDataChanges(true);
61+
62+
if (!$model->getId()) {
63+
$model->isObjectNew(true);
64+
}
6065
$this->resource->save($model);
6166
} catch (${EXCEPTION} $exception) {
6267
$this->logger->error(
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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 EditEntityActionData {
11+
12+
private final String entityName;
13+
private final String moduleName;
14+
private final String classFqn;
15+
private final String namespace;
16+
private final String acl;
17+
private final String menuIdentifier;
18+
19+
/**
20+
* Edit action data constructor.
21+
*
22+
* @param entityName String
23+
* @param moduleName String
24+
* @param classFqn String
25+
* @param namespace String
26+
* @param acl String
27+
* @param menuIdentifier String
28+
*/
29+
public EditEntityActionData(
30+
final @NotNull String entityName,
31+
final @NotNull String moduleName,
32+
final @NotNull String classFqn,
33+
final @NotNull String namespace,
34+
final @NotNull String acl,
35+
final @NotNull String menuIdentifier
36+
) {
37+
this.entityName = entityName;
38+
this.moduleName = moduleName;
39+
this.classFqn = classFqn;
40+
this.namespace = namespace;
41+
this.acl = acl;
42+
this.menuIdentifier = menuIdentifier;
43+
}
44+
45+
/**
46+
* Get entity name.
47+
*
48+
* @return String
49+
*/
50+
public String getEntityName() {
51+
return entityName;
52+
}
53+
54+
/**
55+
* Get module name.
56+
*
57+
* @return String
58+
*/
59+
public String getModuleName() {
60+
return moduleName;
61+
}
62+
63+
/**
64+
* Get class FQN.
65+
*
66+
* @return String
67+
*/
68+
public String getClassFqn() {
69+
return classFqn;
70+
}
71+
72+
/**
73+
* Get namespace.
74+
*
75+
* @return String
76+
*/
77+
public String getNamespace() {
78+
return namespace;
79+
}
80+
81+
/**
82+
* Get acl.
83+
*
84+
* @return String
85+
*/
86+
public String getAcl() {
87+
return acl;
88+
}
89+
90+
/**
91+
* Get menu.
92+
*
93+
* @return String
94+
*/
95+
public String getMenu() {
96+
return menuIdentifier;
97+
}
98+
}

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

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import com.magento.idea.magento2plugin.actions.generation.data.AclXmlData;
1717
import com.magento.idea.magento2plugin.actions.generation.data.AdminListViewEntityActionData;
1818
import com.magento.idea.magento2plugin.actions.generation.data.CollectionData;
19-
import com.magento.idea.magento2plugin.actions.generation.data.ControllerFileData;
2019
import com.magento.idea.magento2plugin.actions.generation.data.DataModelData;
2120
import com.magento.idea.magento2plugin.actions.generation.data.DataModelInterfaceData;
2221
import com.magento.idea.magento2plugin.actions.generation.data.DbSchemaXmlData;
22+
import com.magento.idea.magento2plugin.actions.generation.data.EditEntityActionData;
2323
import com.magento.idea.magento2plugin.actions.generation.data.DeleteEntityByIdCommandData;
2424
import com.magento.idea.magento2plugin.actions.generation.data.EntityDataMapperData;
2525
import com.magento.idea.magento2plugin.actions.generation.data.FormGenericButtonBlockData;
@@ -57,6 +57,7 @@
5757
import com.magento.idea.magento2plugin.actions.generation.generator.DataModelInterfaceGenerator;
5858
import com.magento.idea.magento2plugin.actions.generation.generator.DbSchemaWhitelistJsonGenerator;
5959
import com.magento.idea.magento2plugin.actions.generation.generator.DbSchemaXmlGenerator;
60+
import com.magento.idea.magento2plugin.actions.generation.generator.EditEntityActionGenerator;
6061
import com.magento.idea.magento2plugin.actions.generation.generator.DeleteEntityByIdCommandGenerator;
6162
import com.magento.idea.magento2plugin.actions.generation.generator.EntityDataMapperGenerator;
6263
import com.magento.idea.magento2plugin.actions.generation.generator.FormGenericButtonBlockGenerator;
@@ -65,7 +66,6 @@
6566
import com.magento.idea.magento2plugin.actions.generation.generator.LayoutXmlGenerator;
6667
import com.magento.idea.magento2plugin.actions.generation.generator.MenuXmlGenerator;
6768
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleCollectionGenerator;
68-
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleControllerClassGenerator;
6969
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleModelGenerator;
7070
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleResourceModelGenerator;
7171
import com.magento.idea.magento2plugin.actions.generation.generator.NewActionEntityControllerFileGenerator;
@@ -89,13 +89,13 @@
8989
import com.magento.idea.magento2plugin.magento.files.ResourceModelPhp;
9090
import com.magento.idea.magento2plugin.magento.files.UiComponentDataProviderPhp;
9191
import com.magento.idea.magento2plugin.magento.files.actions.AdminListViewActionFile;
92+
import com.magento.idea.magento2plugin.magento.files.actions.EditEntityActionFile;
9293
import com.magento.idea.magento2plugin.magento.files.actions.NewActionFile;
9394
import com.magento.idea.magento2plugin.magento.files.actions.SaveActionFile;
9495
import com.magento.idea.magento2plugin.magento.files.commands.DeleteEntityByIdCommandFile;
9596
import com.magento.idea.magento2plugin.magento.files.commands.SaveEntityCommandFile;
9697
import com.magento.idea.magento2plugin.magento.packages.Areas;
9798
import com.magento.idea.magento2plugin.magento.packages.File;
98-
import com.magento.idea.magento2plugin.magento.packages.HttpMethod;
9999
import com.magento.idea.magento2plugin.magento.packages.PropertiesTypes;
100100
import com.magento.idea.magento2plugin.magento.packages.database.TableEngines;
101101
import com.magento.idea.magento2plugin.magento.packages.database.TableResources;
@@ -369,13 +369,14 @@ private void onOK() {
369369
generateDataProviderFile();
370370
generateUiComponentGridActionColumnFile();
371371
generateUiComponentGridFile();
372-
generateFormViewControllerFile();
373372
generateFormLayoutFile();
374373
generateNewEntityLayoutFile();
375374
generateSaveEntityCommandFile();
376375
generateDeleteEntityByIdCommandFile();
377376
generateFormSaveControllerFile();
378377
generateFormUiComponentGenericButtonFile();
378+
generateFormEditControllerFile();
379+
generateFormSaveControllerFile();
379380
generateFormNewActionControllerFile();
380381
generateUiComponentFormFile();
381382
}
@@ -650,12 +651,22 @@ public String getRoute() {
650651
return route.getText().trim();
651652
}
652653

653-
private String getViewActionName() {
654+
/**
655+
* Get edit action name.
656+
*
657+
* @return String
658+
*/
659+
private String getEditActionName() {
654660
return "Edit";
655661
}
656662

663+
/**
664+
* Get submit action name.
665+
*
666+
* @return String
667+
*/
657668
private String getSubmitActionName() {
658-
return "Save";//NOPMD
669+
return "Save";
659670
}
660671

661672
private String getControllerDirectory() {
@@ -1125,24 +1136,24 @@ private String getDeleteAction() {
11251136
}
11261137

11271138
/**
1128-
* Generate form view controller file.
1139+
* Generate form edit controller file.
11291140
*/
1130-
private void generateFormViewControllerFile() {
1131-
final NamespaceBuilder namespace = new NamespaceBuilder(
1141+
private void generateFormEditControllerFile() {
1142+
final EditEntityActionFile file = new EditEntityActionFile(getEntityName());
1143+
final NamespaceBuilder editActionNamespaceBuilder = new NamespaceBuilder(
11321144
getModuleName(),
1133-
getViewActionName(),
1134-
getControllerDirectory().concat(getEntityName())
1145+
file.getClassName(),
1146+
file.getDirectory()
11351147
);
1136-
new ModuleControllerClassGenerator(new ControllerFileData(
1137-
getControllerDirectory().concat(getEntityName()),
1138-
getViewActionName(),
1148+
final EditEntityActionData data = new EditEntityActionData(
1149+
getEntityName(),
11391150
getModuleName(),
1140-
Areas.adminhtml.toString(),
1141-
HttpMethod.GET.toString(),
1151+
editActionNamespaceBuilder.getClassFqn(),
1152+
editActionNamespaceBuilder.getNamespace(),
11421153
getAcl(),
1143-
true,
1144-
namespace.getNamespace()
1145-
), project).generate(ACTION_NAME, false);
1154+
getMenuIdentifier()
1155+
);
1156+
new EditEntityActionGenerator(data, project).generate(ACTION_NAME, false);
11461157
}
11471158

11481159
/**
@@ -1154,7 +1165,7 @@ private void generateFormLayoutFile() {
11541165
getRoute(),
11551166
getModuleName(),
11561167
getEntityName(),
1157-
getViewActionName(),
1168+
getEditActionName(),
11581169
getFormName()
11591170
), project).generate(ACTION_NAME, false);
11601171
}

0 commit comments

Comments
 (0)