5 * Contains \Drupal\Console\Generator\EntityContentGenerator.
8 namespace Drupal\Console\Generator;
10 use Drupal\Console\Core\Generator\Generator;
11 use Drupal\Console\Core\Utils\TwigRenderer;
12 use Drupal\Console\Extension\Manager;
13 use Drupal\Console\Utils\Site;
15 class EntityContentGenerator extends Generator
20 protected $extensionManager;
30 protected $twigrenderer;
35 * EntityContentGenerator constructor.
37 * @param Manager $extensionManager
39 * @param TwigRenderer $twigrenderer
41 public function __construct(
42 Manager $extensionManager,
44 TwigRenderer $twigrenderer
46 $this->extensionManager = $extensionManager;
48 $this->twigrenderer = $twigrenderer;
51 public function setIo($io)
59 public function generate(array $parameters)
61 $module = $parameters['module'];
62 $entity_name = $parameters['entity_name'];
63 $entity_class = $parameters['entity_class'];
64 $bundle_entity_type = $parameters['bundle_entity_type'];
65 $is_translatable = $parameters['is_translatable'];
66 $revisionable = $parameters['revisionable'];
68 $moduleInstance = $this->extensionManager->getModule($module);
69 $moduleDir = $moduleInstance->getPath();
70 $modulePath = $moduleDir . '/' . $module;
71 $moduleSourcePath = $moduleInstance->getSourcePath() . '/' . $entity_class;
72 $moduleFormPath = $moduleInstance->getFormPath() . '/' . $entity_class;
73 $moduleEntityPath = $moduleInstance->getEntityPath() . '/' . $entity_class;
74 $moduleTemplatePath = $moduleInstance->getTemplatePath() . '/';
75 $moduleFileName = $modulePath . '.module';
78 'module/permissions-entity-content.yml.twig',
79 $modulePath . '.permissions.yml',
85 'module/links.menu-entity-content.yml.twig',
86 $modulePath . '.links.menu.yml',
92 'module/links.task-entity-content.yml.twig',
93 $modulePath . '.links.task.yml',
99 'module/links.action-entity-content.yml.twig',
100 $modulePath . '.links.action.yml',
106 'module/src/accesscontrolhandler-entity-content.php.twig',
107 $moduleSourcePath . 'AccessControlHandler.php',
111 if ($is_translatable) {
113 'module/src/entity-translation-handler.php.twig',
114 $moduleSourcePath . 'TranslationHandler.php',
120 'module/src/Entity/interface-entity-content.php.twig',
121 $moduleEntityPath . 'Interface.php',
126 'module/src/Entity/entity-content.php.twig',
127 $moduleEntityPath . '.php',
132 'module/src/entity-content-route-provider.php.twig',
133 $moduleSourcePath . 'HtmlRouteProvider.php',
138 'module/src/Entity/entity-content-views-data.php.twig',
139 $moduleEntityPath . 'ViewsData.php',
144 'module/src/listbuilder-entity-content.php.twig',
145 $moduleSourcePath . 'ListBuilder.php',
150 'module/src/Entity/Form/entity-settings.php.twig',
151 $moduleFormPath . 'SettingsForm.php',
156 'module/src/Entity/Form/entity-content.php.twig',
157 $moduleFormPath . 'Form.php',
162 'module/src/Entity/Form/entity-content-delete.php.twig',
163 $moduleFormPath . 'DeleteForm.php',
168 'module/entity-content-page.php.twig',
169 $moduleDir . '/' . $entity_name . '.page.inc',
174 'module/templates/entity-html.twig',
175 $moduleTemplatePath . $entity_name . '.html.twig',
181 'module/src/Entity/Form/entity-content-revision-delete.php.twig',
182 $moduleFormPath . 'RevisionDeleteForm.php',
186 'module/src/Entity/Form/entity-content-revision-revert-translation.php.twig',
187 $moduleFormPath . 'RevisionRevertTranslationForm.php',
191 'module/src/Entity/Form/entity-content-revision-revert.php.twig',
192 $moduleFormPath . 'RevisionRevertForm.php',
196 'module/src/entity-storage.php.twig',
197 $moduleSourcePath . 'Storage.php',
201 'module/src/interface-entity-storage.php.twig',
202 $moduleSourcePath . 'StorageInterface.php',
206 'module/src/Controller/entity-controller.php.twig',
207 $moduleInstance->getControllerPath() . '/' . $entity_class . 'Controller.php',
212 if ($bundle_entity_type) {
214 'module/templates/entity-with-bundle-content-add-list-html.twig',
215 $moduleTemplatePath . '/' . str_replace('_', '-', $entity_name) . '-content-add-list.html.twig',
219 // Check for hook_theme() in module file and warn ...
220 // Check if the module file exists.
221 if (!file_exists($moduleFileName)) {
223 'module/module.twig',
226 'machine_name' => $module,
231 $module_file_contents = file_get_contents($moduleFileName);
232 if (strpos($module_file_contents, 'function ' . $module . '_theme') !== false) {
235 'It looks like you have a hook_theme already declared',
236 'Please manually merge the two hook_theme() implementations in',
243 'module/src/Entity/entity-content-with-bundle.theme.php.twig',
249 if (strpos($module_file_contents, 'function ' . $module . '_theme_suggestions_' . $entity_name) !== false) {
252 'It looks like you have a hook_theme_suggestions_HOOK already declared',
253 'Please manually merge the two hook_theme_suggestions_HOOK() implementations in',
260 'module/src/Entity/entity-content-with-bundle.theme_hook_suggestions.php.twig',
267 $content = $this->twigrenderer->render(
268 'module/src/Entity/entity-content.theme.php.twig',
275 if ($this->isLearning()) {
276 $this->io->commentBlock(
278 'Add this to your hook_theme:',