X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FGenerator%2FEntityContentGenerator.php;fp=vendor%2Fdrupal%2Fconsole%2Fsrc%2FGenerator%2FEntityContentGenerator.php;h=3c9f98cce72b7c2b62125aac24819a91a43200c1;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/drupal/console/src/Generator/EntityContentGenerator.php b/vendor/drupal/console/src/Generator/EntityContentGenerator.php new file mode 100644 index 000000000..3c9f98cce --- /dev/null +++ b/vendor/drupal/console/src/Generator/EntityContentGenerator.php @@ -0,0 +1,291 @@ +extensionManager = $extensionManager; + $this->site = $site; + $this->twigrenderer = $twigrenderer; + } + + public function setIo($io) + { + $this->io = $io; + } + + + /** + * Generator Entity. + * + * @param string $module Module name + * @param string $entity_name Entity machine name + * @param string $entity_class Entity class name + * @param string $label Entity label + * @param string $base_path Base path + * @param string $is_translatable Translation configuration + * @param string $bundle_entity_type (Config) entity type acting as bundle + * @param bool $revisionable Revision configuration + */ + public function generate($module, $entity_name, $entity_class, $label, $base_path, $is_translatable, $bundle_entity_type = null, $revisionable = false) + { + $parameters = [ + 'module' => $module, + 'entity_name' => $entity_name, + 'entity_class' => $entity_class, + 'label' => $label, + 'bundle_entity_type' => $bundle_entity_type, + 'base_path' => $base_path, + 'is_translatable' => $is_translatable, + 'revisionable' => $revisionable, + ]; + + $this->renderFile( + 'module/permissions-entity-content.yml.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module.'.permissions.yml', + $parameters, + FILE_APPEND + ); + + $this->renderFile( + 'module/links.menu-entity-content.yml.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module.'.links.menu.yml', + $parameters, + FILE_APPEND + ); + + $this->renderFile( + 'module/links.task-entity-content.yml.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module.'.links.task.yml', + $parameters, + FILE_APPEND + ); + + $this->renderFile( + 'module/links.action-entity-content.yml.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module.'.links.action.yml', + $parameters, + FILE_APPEND + ); + + $this->renderFile( + 'module/src/accesscontrolhandler-entity-content.php.twig', + $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'AccessControlHandler.php', + $parameters + ); + + if ($is_translatable) { + $this->renderFile( + 'module/src/entity-translation-handler.php.twig', + $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'TranslationHandler.php', + $parameters + ); + } + + $this->renderFile( + 'module/src/Entity/interface-entity-content.php.twig', + $this->extensionManager->getModule($module)->getEntityPath().'/'.$entity_class.'Interface.php', + $parameters + ); + + $this->renderFile( + 'module/src/Entity/entity-content.php.twig', + $this->extensionManager->getModule($module)->getEntityPath().'/'.$entity_class.'.php', + $parameters + ); + + $this->renderFile( + 'module/src/entity-content-route-provider.php.twig', + $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'HtmlRouteProvider.php', + $parameters + ); + + $this->renderFile( + 'module/src/Entity/entity-content-views-data.php.twig', + $this->extensionManager->getModule($module)->getEntityPath().'/'.$entity_class.'ViewsData.php', + $parameters + ); + + $this->renderFile( + 'module/src/listbuilder-entity-content.php.twig', + $this->extensionManager->getModule($module)->getSourcePath().'/'.$entity_class.'ListBuilder.php', + $parameters + ); + + $this->renderFile( + 'module/src/Entity/Form/entity-settings.php.twig', + $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'SettingsForm.php', + $parameters + ); + + $this->renderFile( + 'module/src/Entity/Form/entity-content.php.twig', + $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'Form.php', + $parameters + ); + + $this->renderFile( + 'module/src/Entity/Form/entity-content-delete.php.twig', + $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'DeleteForm.php', + $parameters + ); + + $this->renderFile( + 'module/entity-content-page.php.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$entity_name.'.page.inc', + $parameters + ); + + $this->renderFile( + 'module/templates/entity-html.twig', + $this->extensionManager->getModule($module)->getTemplatePath().'/'.$entity_name.'.html.twig', + $parameters + ); + + if ($revisionable) { + $this->renderFile( + 'module/src/Entity/Form/entity-content-revision-delete.php.twig', + $this->extensionManager->getModule($module)->getFormPath() .'/'.$entity_class.'RevisionDeleteForm.php', + $parameters + ); + $this->renderFile( + 'module/src/Entity/Form/entity-content-revision-revert-translation.php.twig', + $this->extensionManager->getModule($module)->getFormPath() .'/'.$entity_class.'RevisionRevertTranslationForm.php', + $parameters + ); + $this->renderFile( + 'module/src/Entity/Form/entity-content-revision-revert.php.twig', + $this->extensionManager->getModule($module)->getFormPath().'/'.$entity_class.'RevisionRevertForm.php', + $parameters + ); + $this->renderFile( + 'module/src/entity-storage.php.twig', + $this->extensionManager->getModule($module)->getSourcePath() .'/'.$entity_class.'Storage.php', + $parameters + ); + $this->renderFile( + 'module/src/interface-entity-storage.php.twig', + $this->extensionManager->getModule($module)->getSourcePath() .'/'.$entity_class.'StorageInterface.php', + $parameters + ); + $this->renderFile( + 'module/src/Controller/entity-controller.php.twig', + $this->extensionManager->getModule($module)->getControllerPath() .'/'.$entity_class.'Controller.php', + $parameters + ); + } + + if ($bundle_entity_type) { + $this->renderFile( + 'module/templates/entity-with-bundle-content-add-list-html.twig', + $this->extensionManager->getModule($module)->getTemplatePath().'/'.str_replace('_', '-', $entity_name).'-content-add-list.html.twig', + $parameters + ); + + // Check for hook_theme() in module file and warn ... + $module_filename = $this->extensionManager->getModule($module)->getPath().'/'.$module.'.module'; + // Check if the module file exists. + if (!file_exists($module_filename)) { + $this->renderFile( + 'module/module.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module . '.module', + [ + 'machine_name' => $module, + 'description' => '', + ] + ); + } + $module_file_contents = file_get_contents($module_filename); + if (strpos($module_file_contents, 'function ' . $module . '_theme') !== false) { + $this->io->warning( + [ + "It looks like you have a hook_theme already declared", + "Please manually merge the two hook_theme() implementations in", + $module_filename + ] + ); + } + + $this->renderFile( + 'module/src/Entity/entity-content-with-bundle.theme.php.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module.'.module', + $parameters, + FILE_APPEND + ); + + if (strpos($module_file_contents, 'function ' . $module . '_theme_suggestions_' . $entity_name) !== false) { + $this->io->warning( + [ + "It looks like you have a hook_theme_suggestions_HOOK already declared", + "Please manually merge the two hook_theme_suggestions_HOOK() implementations in", + $module_filename + ] + ); + } + + $this->renderFile( + 'module/src/Entity/entity-content-with-bundle.theme_hook_suggestions.php.twig', + $this->extensionManager->getModule($module)->getPath().'/'.$module.'.module', + $parameters, + FILE_APPEND + ); + } + + $content = $this->twigrenderer->render( + 'module/src/Entity/entity-content.theme.php.twig', + $parameters + ); + + + //@TODO: + /** + if ($this->isLearning()) { + $this->io->commentBlock( + [ + 'Add this to your hook_theme:', + $content + ] + ); + } + */ + } +}