protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $class_name = $io->ask($this->trans('commands.generate.plugin.type.yaml.options.class'), 'ExamplePlugin');
         $input->setOption('class', $class_name);
     }
     // --plugin-name option
     $plugin_name = $input->getOption('plugin-name');
     if (!$plugin_name) {
         $plugin_name = $io->ask($this->trans('commands.generate.plugin.type.yaml.options.plugin-name'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('plugin-name', $plugin_name);
     }
     // --plugin-file-name option
     $plugin_file_name = $input->getOption('plugin-file-name');
     if (!$plugin_file_name) {
         $plugin_file_name = $io->ask($this->trans('commands.generate.plugin.type.yaml.options.plugin-file-name'), strtr($plugin_name, '_-', '..'));
         $input->setOption('plugin-file-name', $plugin_file_name);
     }
 }
Exemplo n.º 2
0
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class = $input->getOption('class');
     if (!$class) {
         $class = $io->ask($this->trans('commands.generate.plugin.mail.options.class'), 'HtmlFormatterMail', function ($class) {
             return $this->validator->validateClassName($class);
         });
         $input->setOption('class', $class);
     }
     // --label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.mail.options.label'), $this->stringConverter->camelCaseToHuman($class));
         $input->setOption('label', $label);
     }
     // --plugin-id option
     $pluginId = $input->getOption('plugin-id');
     if (!$pluginId) {
         $pluginId = $io->ask($this->trans('commands.generate.plugin.mail.options.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class));
         $input->setOption('plugin-id', $pluginId);
     }
     // --services option
     // @see Drupal\Console\Command\Shared\ServicesTrait::servicesQuestion
     $services = $this->servicesQuestion($io);
     $input->setOption('services', $services);
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $class_name = $io->ask($this->trans('commands.generate.plugin.type.annotation.options.class'), 'ExamplePlugin');
         $input->setOption('class', $class_name);
     }
     // --machine-name option
     $machine_name = $input->getOption('machine-name');
     if (!$machine_name) {
         $machine_name = $io->ask($this->trans('commands.generate.plugin.type.annotation.options.machine-name'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('machine-name', $machine_name);
     }
     // --label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.type.annotation.options.label'), $this->stringConverter->camelCaseToHuman($class_name));
         $input->setOption('label', $label);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     $pluginId = $input->getOption('plugin-id');
     if (!$pluginId) {
         $plugins = $this->getPlugins();
         $pluginId = $io->choiceNoList($this->trans('commands.generate.plugin.skeleton.questions.plugin'), $plugins);
         $input->setOption('plugin-id', $pluginId);
     }
     if (array_key_exists($pluginId, $this->pluginGeneratorsImplemented)) {
         $io->warning(sprintf($this->trans('commands.generate.plugin.skeleton.messages.plugin-dont-exist'), $pluginId, $this->pluginGeneratorsImplemented[$pluginId]));
     }
     // --class option
     $class = $input->getOption('class');
     if (!$class) {
         $class = $io->ask($this->trans('commands.generate.plugin.skeleton.options.class'), sprintf('%s%s', 'Default', ucfirst($this->stringConverter->underscoreToCamelCase($pluginId))), function ($class) {
             return $this->validator->validateClassName($class);
         });
         $input->setOption('class', $class);
     }
     // --services option
     // @see Drupal\Console\Command\Shared\ServicesTrait::servicesQuestion
     $services = $input->getOption('services');
     if (!$services) {
         $services = $this->servicesQuestion($io);
         $input->setOption('services', $services);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $class_name = $io->ask($this->trans('commands.generate.plugin.views.field.questions.class'), 'CustomViewsField');
     }
     $input->setOption('class', $class_name);
     // --title option
     $title = $input->getOption('title');
     if (!$title) {
         $title = $io->ask($this->trans('commands.generate.plugin.views.field.questions.title'), $this->stringConverter->camelCaseToHuman($class_name));
         $input->setOption('title', $title);
     }
     // --description option
     $description = $input->getOption('description');
     if (!$description) {
         $description = $io->ask($this->trans('commands.generate.plugin.views.field.questions.description'), $this->trans('commands.generate.plugin.views.field.questions.description_default'));
         $input->setOption('description', $description);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $class_name = $io->ask($this->trans('commands.generate.plugin.imageeffect.questions.class'), 'DefaultImageEffect');
         $input->setOption('class', $class_name);
     }
     // --label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.imageeffect.questions.label'), $this->stringConverter->camelCaseToHuman($class_name));
         $input->setOption('label', $label);
     }
     // --plugin-id option
     $plugin_id = $input->getOption('plugin-id');
     if (!$plugin_id) {
         $plugin_id = $io->ask($this->trans('commands.generate.plugin.imageeffect.questions.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('plugin-id', $plugin_id);
     }
     // --description option
     $description = $input->getOption('description');
     if (!$description) {
         $description = $io->ask($this->trans('commands.generate.plugin.imageeffect.questions.description'), 'My Image Effect');
         $input->setOption('description', $description);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $entityTypeRepository = $this->entitytyperepository;
     $entity_types = $entityTypeRepository->getEntityTypeLabels(true);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
     }
     $input->setOption('module', $module);
     // --class option
     $class = $input->getOption('class');
     if (!$class) {
         $class = $io->ask($this->trans('commands.generate.plugin.condition.questions.class'), 'ExampleCondition');
         $input->setOption('class', $class);
     }
     // --plugin label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.condition.questions.label'), $this->stringConverter->camelCaseToHuman($class));
         $input->setOption('label', $label);
     }
     // --plugin-id option
     $pluginId = $input->getOption('plugin-id');
     if (!$pluginId) {
         $pluginId = $io->ask($this->trans('commands.generate.plugin.condition.questions.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class));
         $input->setOption('plugin-id', $pluginId);
     }
     $context_definition_id = $input->getOption('context-definition-id');
     if (!$context_definition_id) {
         $context_type = array('language' => 'Language', "entity" => "Entity");
         $context_type_sel = $io->choice($this->trans('commands.generate.plugin.condition.questions.context-type'), array_values($context_type));
         $context_type_sel = array_search($context_type_sel, $context_type);
         if ($context_type_sel == 'language') {
             $context_definition_id = $context_type_sel;
             $context_definition_id_value = ucfirst($context_type_sel);
         } else {
             $content_entity_types_sel = $io->choice($this->trans('commands.generate.plugin.condition.questions.context-entity-type'), array_keys($entity_types));
             $contextDefinitionIdList = $entity_types[$content_entity_types_sel];
             $context_definition_id_sel = $io->choice($this->trans('commands.generate.plugin.condition.questions.context-definition-id'), array_values($contextDefinitionIdList));
             $context_definition_id_value = array_search($context_definition_id_sel, $contextDefinitionIdList);
             $context_definition_id = 'entity:' . $context_definition_id_value;
         }
         $input->setOption('context-definition-id', $context_definition_id);
     }
     $context_definition_label = $input->getOption('context-definition-label');
     if (!$context_definition_label) {
         $context_definition_label = $io->ask($this->trans('commands.generate.plugin.condition.questions.context-definition-label'), $context_definition_id_value ?: null);
         $input->setOption('context-definition-label', $context_definition_label);
     }
     $context_definition_required = $input->getOption('context-definition-required');
     if (empty($context_definition_required)) {
         $context_definition_required = $io->confirm($this->trans('commands.generate.plugin.condition.questions.context-definition-required'), true);
         $input->setOption('context-definition-required', $context_definition_required);
     }
 }
Exemplo n.º 8
0
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     //$stringUtils = $this->getStringHelper();
     $validators = $this->validator;
     try {
         // A profile is technically also a module, so we can use the same
         // validator to check the name.
         $profile = $input->getOption('profile') ? $this->validateModuleName($input->getOption('profile')) : null;
     } catch (\Exception $error) {
         $io->error($error->getMessage());
         return;
     }
     if (!$profile) {
         $profile = $io->ask($this->trans('commands.generate.profile.questions.profile'), '', function ($profile) use($validators) {
             return $validators->validateModuleName($profile);
         });
         $input->setOption('profile', $profile);
     }
     try {
         $machine_name = $input->getOption('machine-name') ? $this->validateModule($input->getOption('machine-name')) : null;
     } catch (\Exception $error) {
         $io->error($error->getMessage());
         return;
     }
     if (!$machine_name) {
         $machine_name = $io->ask($this->trans('commands.generate.profile.questions.machine-name'), $this->stringConverter->createMachineName($profile), function ($machine_name) use($validators) {
             return $validators->validateMachineName($machine_name);
         });
         $input->setOption('machine-name', $machine_name);
     }
     $description = $input->getOption('description');
     if (!$description) {
         $description = $io->ask($this->trans('commands.generate.profile.questions.description'), 'My Useful Profile');
         $input->setOption('description', $description);
     }
     $core = $input->getOption('core');
     if (!$core) {
         $core = $io->ask($this->trans('commands.generate.profile.questions.core'), '8.x');
         $input->setOption('core', $core);
     }
     $dependencies = $input->getOption('dependencies');
     if (!$dependencies) {
         if ($io->confirm($this->trans('commands.generate.profile.questions.dependencies'), true)) {
             $dependencies = $io->ask($this->trans('commands.generate.profile.options.dependencies'), '');
         }
         $input->setOption('dependencies', $dependencies);
     }
     $distribution = $input->getOption('distribution');
     if (!$distribution) {
         if ($io->confirm($this->trans('commands.generate.profile.questions.distribution'), false)) {
             $distribution = $io->ask($this->trans('commands.generate.profile.options.distribution'), 'My Kick-ass Distribution');
             $input->setOption('distribution', $distribution);
         }
     }
 }
Exemplo n.º 9
0
 /**
  * @param  $module
  * @param  $class_name
  * @param  $services
  * @param  $inputs
  * @param  $form_id
  * @param  $form_type
  * @param  $path
  * @param  $menu_link_gen
  * @param  $menu_link_title
  * @param  $menu_parent
  * @param  $menu_link_desc
  */
 public function generate($module, $class_name, $form_id, $form_type, $services, $inputs, $path, $menu_link_gen, $menu_link_title, $menu_parent, $menu_link_desc)
 {
     $class_name_short = strtolower($this->stringConverter->removeSuffix($class_name));
     $parameters = array('class_name' => $class_name, 'services' => $services, 'inputs' => $inputs, 'module_name' => $module, 'form_id' => $form_id, 'path' => $path, 'route_name' => $class_name, 'menu_link_title' => $menu_link_title, 'menu_parent' => $menu_parent, 'menu_link_desc' => $menu_link_desc, 'class_name_short' => $class_name_short);
     if ($form_type == 'ConfigFormBase') {
         $template = 'module/src/Form/form-config.php.twig';
         $parameters['config_form'] = true;
     } else {
         $template = 'module/src/Form/form.php.twig';
         $parameters['config_form'] = false;
     }
     $this->renderFile('module/routing-form.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.routing.yml', $parameters, FILE_APPEND);
     $this->renderFile($template, $this->extensionManager->getModule($module)->getFormPath() . '/' . $class_name . '.php', $parameters);
     // Render defaults YML file.
     $this->renderFile('module/config/install/field.default.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/config/install/' . $module . '.' . $class_name_short . '.yml', $parameters);
     if ($menu_link_gen == true) {
         $this->renderFile('module/links.menu.yml.twig', $this->extensionManager->getModule($module)->getPath() . '/' . $module . '.links.menu.yml', $parameters, FILE_APPEND);
     }
 }
Exemplo n.º 10
0
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $theme = $this->configFactory->get('system.theme')->get('default');
     $themeRegions = \system_region_list($theme, REGIONS_VISIBLE);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class = $input->getOption('class');
     if (!$class) {
         $class = $io->ask($this->trans('commands.generate.plugin.block.options.class'), 'DefaultBlock', function ($class) {
             return $this->validator->validateClassName($class);
             return $this->validator->validateClassName($class);
         });
         $input->setOption('class', $class);
     }
     // --label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.block.options.label'), $this->stringConverter->camelCaseToHuman($class));
         $input->setOption('label', $label);
     }
     // --plugin-id option
     $pluginId = $input->getOption('plugin-id');
     if (!$pluginId) {
         $pluginId = $io->ask($this->trans('commands.generate.plugin.block.options.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class));
         $input->setOption('plugin-id', $pluginId);
     }
     // --theme-region option
     $themeRegion = $input->getOption('theme-region');
     if (!$themeRegion) {
         $themeRegion = $io->choiceNoList($this->trans('commands.generate.plugin.block.options.theme-region'), array_values($themeRegions), null, true);
         $themeRegion = array_search($themeRegion, $themeRegions);
         $input->setOption('theme-region', $themeRegion);
     }
     // --services option
     // @see Drupal\Console\Command\Shared\ServicesTrait::servicesQuestion
     $services = $this->servicesQuestion($io);
     $input->setOption('services', $services);
     $output->writeln($this->trans('commands.generate.plugin.block.messages.inputs'));
     // @see Drupal\Console\Command\Shared\FormTrait::formQuestion
     $inputs = $this->formQuestion($io);
     $input->setOption('inputs', $inputs);
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $stringUtils = $this->stringConverter;
         $class_name = $io->ask($this->trans('commands.generate.plugin.rest.resource.questions.class'), 'DefaultRestResource', function ($class_name) use($stringUtils) {
             if (!strlen(trim($class_name))) {
                 throw new \Exception('The Class name can not be empty');
             }
             return $stringUtils->humanToCamelCase($class_name);
         });
         $input->setOption('class', $class_name);
     }
     // --plugin-id option
     $plugin_id = $input->getOption('plugin-id');
     if (!$plugin_id) {
         $plugin_id = $io->ask($this->trans('commands.generate.plugin.rest.resource.questions.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('plugin-id', $plugin_id);
     }
     // --plugin-label option
     $plugin_label = $input->getOption('plugin-label');
     if (!$plugin_label) {
         $plugin_label = $io->ask($this->trans('commands.generate.plugin.rest.resource.questions.plugin-label'), $this->stringConverter->camelCaseToHuman($class_name));
         $input->setOption('plugin-label', $plugin_label);
     }
     // --plugin-url option
     $plugin_url = $input->getOption('plugin-url');
     if (!$plugin_url) {
         $plugin_url = $io->ask($this->trans('commands.generate.plugin.rest.resource.questions.plugin-url'));
         $input->setOption('plugin-url', $plugin_url);
     }
     // --plugin-states option
     $plugin_states = $input->getOption('plugin-states');
     if (!$plugin_states) {
         $states = array('GET', 'PUT', 'POST', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS');
         $plugin_states = $io->choice($this->trans('commands.generate.plugin.rest.resource.questions.plugin-states'), $states, null, true);
         $input->setOption('plugin-states', $plugin_states);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $class_name = $io->ask($this->trans('commands.generate.plugin.rulesaction.options.class'), 'DefaultAction');
         $input->setOption('class', $class_name);
     }
     // --label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.rulesaction.options.label'), $this->stringConverter->camelCaseToHuman($class_name));
         $input->setOption('label', $label);
     }
     // --plugin-id option
     $plugin_id = $input->getOption('plugin-id');
     if (!$plugin_id) {
         $plugin_id = $io->ask($this->trans('commands.generate.plugin.rulesaction.options.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('plugin-id', $plugin_id);
     }
     // --type option
     $type = $input->getOption('type');
     if (!$type) {
         $type = $io->ask($this->trans('commands.generate.plugin.rulesaction.options.type'), 'user');
         $input->setOption('type', $type);
     }
     // --category option
     $category = $input->getOption('category');
     if (!$category) {
         $category = $io->ask($this->trans('commands.generate.plugin.rulesaction.options.category'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('category', $category);
     }
     // --context option
     $context = $input->getOption('context');
     if (!$context) {
         $context = $io->ask($this->trans('commands.generate.plugin.rulesaction.options.context'), $this->stringConverter->camelCaseToUnderscore($class_name));
         $input->setOption('context', $context);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class = $input->getOption('class');
     if (!$class) {
         $class = $io->ask($this->trans('commands.generate.plugin.fieldformatter.questions.class'), 'ExampleFieldFormatter');
         $input->setOption('class', $class);
     }
     // --plugin label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.fieldformatter.questions.label'), $this->stringConverter->camelCaseToHuman($class));
         $input->setOption('label', $label);
     }
     // --name option
     $plugin_id = $input->getOption('plugin-id');
     if (!$plugin_id) {
         $plugin_id = $io->ask($this->trans('commands.generate.plugin.fieldformatter.questions.plugin-id'), $this->stringConverter->camelCaseToUnderscore($class));
         $input->setOption('plugin-id', $plugin_id);
     }
     // --field type option
     $field_type = $input->getOption('field-type');
     if (!$field_type) {
         // Gather valid field types.
         $field_type_options = [];
         foreach ($this->fieldTypePluginManager->getGroupedDefinitions($this->fieldTypePluginManager->getUiDefinitions()) as $category => $field_types) {
             foreach ($field_types as $name => $field_type) {
                 $field_type_options[] = $name;
             }
         }
         $field_type = $io->choice($this->trans('commands.generate.plugin.fieldwidget.questions.field-type'), $field_type_options);
         $input->setOption('field-type', $field_type);
     }
 }
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class_name = $input->getOption('class');
     if (!$class_name) {
         $class_name = $io->ask($this->trans('commands.generate.plugin.ckeditorbutton.questions.class'), 'DefaultCKEditorButton');
         $input->setOption('class', $class_name);
     }
     // --label option
     $label = $input->getOption('label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.ckeditorbutton.questions.label'), $this->stringConverter->camelCaseToHuman($class_name));
         $input->setOption('label', $label);
     }
     // --plugin-id option
     $plugin_id = $input->getOption('plugin-id');
     if (!$plugin_id) {
         $plugin_id = $io->ask($this->trans('commands.generate.plugin.ckeditorbutton.questions.plugin-id'), $this->stringConverter->camelCaseToLowerCase($label));
         $input->setOption('plugin-id', $plugin_id);
     }
     // --button-name option
     $button_name = $input->getOption('button-name');
     if (!$button_name) {
         $button_name = $io->ask($this->trans('commands.generate.plugin.ckeditorbutton.questions.button-name'), $this->stringConverter->anyCaseToUcFirst($plugin_id));
         $input->setOption('button-name', $button_name);
     }
     // --button-icon-path option
     $button_icon_path = $input->getOption('button-icon-path');
     if (!$button_icon_path) {
         $button_icon_path = $io->ask($this->trans('commands.generate.plugin.ckeditorbutton.questions.button-icon-path'), drupal_get_path('module', $module) . '/js/plugins/' . $plugin_id . '/images/icon.png');
         $input->setOption('button-icon-path', $button_icon_path);
     }
 }
Exemplo n.º 15
0
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     try {
         $theme = $input->getOption('theme') ? $this->validator->validateModuleName($input->getOption('theme')) : null;
     } catch (\Exception $error) {
         $io->error($error->getMessage());
         return;
     }
     if (!$theme) {
         $validators = $this->validator;
         $theme = $io->ask($this->trans('commands.generate.theme.questions.theme'), '', function ($theme) use($validators) {
             return $validators->validateModuleName($theme);
         });
         $input->setOption('theme', $theme);
     }
     try {
         $machine_name = $input->getOption('machine-name') ? $this->validator->validateModule($input->getOption('machine-name')) : null;
     } catch (\Exception $error) {
         $io->error($error->getMessage());
         return;
     }
     if (!$machine_name) {
         $machine_name = $io->ask($this->trans('commands.generate.module.questions.machine-name'), $this->stringConverter->createMachineName($theme), function ($machine_name) use($validators) {
             return $validators->validateMachineName($machine_name);
         });
         $input->setOption('machine-name', $machine_name);
     }
     $theme_path = $input->getOption('theme-path');
     if (!$theme_path) {
         $drupalRoot = $this->appRoot;
         $theme_path = $io->ask($this->trans('commands.generate.theme.questions.theme-path'), '/themes/custom', function ($theme_path) use($drupalRoot, $machine_name) {
             $theme_path = ($theme_path[0] != '/' ? '/' : '') . $theme_path;
             $full_path = $drupalRoot . $theme_path . '/' . $machine_name;
             if (file_exists($full_path)) {
                 throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.theme.errors.directory-exists'), $full_path));
             } else {
                 return $theme_path;
             }
         });
         $input->setOption('theme-path', $theme_path);
     }
     $description = $input->getOption('description');
     if (!$description) {
         $description = $io->ask($this->trans('commands.generate.theme.questions.description'), 'My Awesome theme');
         $input->setOption('description', $description);
     }
     $package = $input->getOption('package');
     if (!$package) {
         $package = $io->ask($this->trans('commands.generate.theme.questions.package'), 'Other');
         $input->setOption('package', $package);
     }
     $core = $input->getOption('core');
     if (!$core) {
         $core = $io->ask($this->trans('commands.generate.theme.questions.core'), '8.x');
         $input->setOption('core', $core);
     }
     $base_theme = $input->getOption('base-theme');
     if (!$base_theme) {
         $themes = $this->themeHandler->rebuildThemeData();
         $themes['false'] = '';
         uasort($themes, 'system_sort_modules_by_info_name');
         $base_theme = $io->choiceNoList($this->trans('commands.generate.theme.options.base-theme'), array_keys($themes));
         $input->setOption('base-theme', $base_theme);
     }
     $global_library = $input->getOption('global-library');
     if (!$global_library) {
         $global_library = $io->ask($this->trans('commands.generate.theme.questions.global-library'), 'global-styling');
         $input->setOption('global-library', $global_library);
     }
     // --regions option.
     $regions = $input->getOption('regions');
     if (!$regions) {
         if ($io->confirm($this->trans('commands.generate.theme.questions.regions'), true)) {
             // @see \Drupal\Console\Command\Shared\ThemeRegionTrait::regionQuestion
             $regions = $this->regionQuestion($io);
             $input->setOption('regions', $regions);
         }
     }
     // --breakpoints option.
     $breakpoints = $input->getOption('breakpoints');
     if (!$breakpoints) {
         if ($io->confirm($this->trans('commands.generate.theme.questions.breakpoints'), true)) {
             // @see \Drupal\Console\Command\Shared\ThemeRegionTrait::regionQuestion
             $breakpoints = $this->breakpointQuestion($io);
             $input->setOption('breakpoints', $breakpoints);
         }
     }
 }
Exemplo n.º 16
0
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $validator = $this->validator;
     try {
         $module = $input->getOption('module') ? $this->validateModuleName($input->getOption('module')) : null;
     } catch (\Exception $error) {
         $io->error($error->getMessage());
         return;
     }
     if (!$module) {
         $module = $io->ask($this->trans('commands.generate.module.questions.module'), null, function ($module) use($validator) {
             return $validator->validateModuleName($module);
         });
         $input->setOption('module', $module);
     }
     try {
         $machineName = $input->getOption('machine-name') ? $this->validateModule($input->getOption('machine-name')) : null;
     } catch (\Exception $error) {
         $io->error($error->getMessage());
     }
     if (!$machineName) {
         $machineName = $io->ask($this->trans('commands.generate.module.questions.machine-name'), $this->stringConverter->createMachineName($module), function ($machine_name) use($validator) {
             return $validator->validateMachineName($machine_name);
         });
         $input->setOption('machine-name', $machineName);
     }
     $modulePath = $input->getOption('module-path');
     if (!$modulePath) {
         $drupalRoot = $this->appRoot;
         $modulePath = $io->ask($this->trans('commands.generate.module.questions.module-path'), '/modules/custom', function ($modulePath) use($drupalRoot, $machineName) {
             $modulePath = ($modulePath[0] != '/' ? '/' : '') . $modulePath;
             $fullPath = $drupalRoot . $modulePath . '/' . $machineName;
             if (file_exists($fullPath)) {
                 throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.module.errors.directory-exists'), $fullPath));
             }
             return $modulePath;
         });
     }
     $input->setOption('module-path', $modulePath);
     $description = $input->getOption('description');
     if (!$description) {
         $description = $io->ask($this->trans('commands.generate.module.questions.description'), 'My Awesome Module');
     }
     $input->setOption('description', $description);
     $package = $input->getOption('package');
     if (!$package) {
         $package = $io->ask($this->trans('commands.generate.module.questions.package'), 'Custom');
     }
     $input->setOption('package', $package);
     $core = $input->getOption('core');
     if (!$core) {
         $core = $io->ask($this->trans('commands.generate.module.questions.core'), '8.x', function ($core) {
             // Only allow 8.x and higher as core version.
             if (!preg_match('/^([0-9]+)\\.x$/', $core, $matches) || $matches[1] < 8) {
                 throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.module.errors.invalid-core'), $core));
             }
             return $core;
         });
         $input->setOption('core', $core);
     }
     $moduleFile = $input->getOption('module-file');
     if (!$moduleFile) {
         $moduleFile = $io->confirm($this->trans('commands.generate.module.questions.module-file'), true);
         $input->setOption('module-file', $moduleFile);
     }
     $featuresBundle = $input->getOption('features-bundle');
     if (!$featuresBundle) {
         $featuresSupport = $io->confirm($this->trans('commands.generate.module.questions.features-support'), false);
         if ($featuresSupport) {
             $featuresBundle = $io->ask($this->trans('commands.generate.module.questions.features-bundle'), 'default');
         }
         $input->setOption('features-bundle', $featuresBundle);
     }
     $composer = $input->getOption('composer');
     if (!$composer) {
         $composer = $io->confirm($this->trans('commands.generate.module.questions.composer'), true);
         $input->setOption('composer', $composer);
     }
     $dependencies = $input->getOption('dependencies');
     if (!$dependencies) {
         $addDependencies = $io->confirm($this->trans('commands.generate.module.questions.dependencies'), false);
         if ($addDependencies) {
             $dependencies = $io->ask($this->trans('commands.generate.module.options.dependencies'));
         }
         $input->setOption('dependencies', $dependencies);
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $class = $input->getOption('class');
     if (!$class) {
         $class = $io->ask($this->trans('commands.generate.controller.questions.class'), 'DefaultController', function ($class) {
             return $this->validator->validateClassName($class);
         });
         $input->setOption('class', $class);
     }
     $routes = $input->getOption('routes');
     if (!$routes) {
         while (true) {
             $title = $io->askEmpty($this->trans('commands.generate.controller.questions.title'), function ($title) use($routes) {
                 if ($routes && empty(trim($title))) {
                     return false;
                 }
                 if (!$routes && empty(trim($title))) {
                     throw new \InvalidArgumentException($this->trans('commands.generate.controller.messages.title-empty'));
                 }
                 if (in_array($title, array_column($routes, 'title'))) {
                     throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.controller.messages.title-already-added'), $title));
                 }
                 return $title;
             });
             if ($title === '') {
                 break;
             }
             $method = $io->ask($this->trans('commands.generate.controller.questions.method'), 'hello', function ($method) use($routes) {
                 if (in_array($method, array_column($routes, 'method'))) {
                     throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.controller.messages.method-already-added'), $method));
                 }
                 return $method;
             });
             $path = $io->ask($this->trans('commands.generate.controller.questions.path'), sprintf('/%s/hello/{name}', $module), function ($path) use($routes) {
                 if (count($this->routeProvider->getRoutesByPattern($path)) > 0 || in_array($path, array_column($routes, 'path'))) {
                     throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.controller.messages.path-already-added'), $path));
                 }
                 return $path;
             });
             $classMachineName = $this->stringConverter->camelCaseToMachineName($class);
             $routeName = $module . '.' . $classMachineName . '_' . $method;
             if ($this->routeProvider->getRoutesByNames([$routeName]) || in_array($routeName, $routes)) {
                 $routeName .= '_' . rand(0, 100);
             }
             $routes[] = ['title' => $title, 'name' => $routeName, 'method' => $method, 'path' => $path];
         }
         $input->setOption('routes', $routes);
     }
     // --test option
     $test = $input->getOption('test');
     if (!$test) {
         $test = $io->confirm($this->trans('commands.generate.controller.questions.test'), true);
         $input->setOption('test', $test);
     }
     // --services option
     // @see use Drupal\Console\Command\Shared\ServicesTrait::servicesQuestion
     $services = $this->servicesQuestion($io);
     $input->setOption('services', $services);
 }
Exemplo n.º 18
0
 /**
  * {@inheritdoc}
  */
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --class option
     $className = $input->getOption('class');
     if (!$className) {
         $className = $io->ask($this->trans('commands.generate.form.questions.class'), 'DefaultForm');
         $input->setOption('class', $className);
     }
     // --form-id option
     $formId = $input->getOption('form-id');
     if (!$formId) {
         $formId = $io->ask($this->trans('commands.generate.form.questions.form-id'), $this->stringConverter->camelCaseToMachineName($className));
         $input->setOption('form-id', $formId);
     }
     // --services option
     // @see use Drupal\Console\Command\Shared\ServicesTrait::servicesQuestion
     $services = $this->servicesQuestion($io);
     $input->setOption('services', $services);
     // --inputs option
     $inputs = $input->getOption('inputs');
     if (!$inputs) {
         // @see \Drupal\Console\Command\Shared\FormTrait::formQuestion
         $inputs = $this->formQuestion($io);
         $input->setOption('inputs', $inputs);
     }
     $path = $input->getOption('path');
     if (!$path) {
         if ($this->formType == 'ConfigFormBase') {
             $form_path = '/admin/config/{{ module_name }}/{{ class_name_short }}';
             $form_path = sprintf('/admin/config/%s/%s', $module, strtolower($this->stringConverter->removeSuffix($className)));
         } else {
             $form_path = sprintf('/%s/form/%s', $module, $this->stringConverter->camelCaseToMachineName($this->stringConverter->removeSuffix($className)));
         }
         $path = $io->ask($this->trans('commands.generate.form.questions.path'), $form_path, function ($path) {
             if (count($this->routeProvider->getRoutesByPattern($path)) > 0) {
                 throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.form.messages.path-already-added'), $path));
             }
             return $path;
         });
         $input->setOption('path', $path);
     }
     // --link option for links.menu
     if ($this->formType == 'ConfigFormBase') {
         $menu_options = $this->menuQuestion($io, $className);
         $menu_link_gen = $input->getOption('menu_link_gen');
         $menu_link_title = $input->getOption('menu_link_title');
         $menu_parent = $input->getOption('menu_parent');
         $menu_link_desc = $input->getOption('menu_link_desc');
         if (!$menu_link_gen || !$menu_link_title || !$menu_parent || !$menu_link_desc) {
             $input->setOption('menu_link_gen', $menu_options['menu_link_gen']);
             $input->setOption('menu_link_title', $menu_options['menu_link_title']);
             $input->setOption('menu_parent', $menu_options['menu_parent']);
             $input->setOption('menu_link_desc', $menu_options['menu_link_desc']);
         }
     }
 }
Exemplo n.º 19
0
 protected function interact(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     // --module option
     $module = $input->getOption('module');
     if (!$module) {
         // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
         $module = $this->moduleQuestion($io);
         $input->setOption('module', $module);
     }
     // --type-class option
     $typeClass = $input->getOption('type-class');
     if (!$typeClass) {
         $typeClass = $io->ask($this->trans('commands.generate.plugin.field.questions.type-class'), 'ExampleFieldType');
         $input->setOption('type-class', $typeClass);
     }
     // --type-label option
     $label = $input->getOption('type-label');
     if (!$label) {
         $label = $io->ask($this->trans('commands.generate.plugin.field.questions.type-label'), $this->stringConverter->camelCaseToHuman($typeClass));
         $input->setOption('type-label', $label);
     }
     // --type-plugin-id option
     $plugin_id = $input->getOption('type-plugin-id');
     if (!$plugin_id) {
         $plugin_id = $io->ask($this->trans('commands.generate.plugin.field.questions.type-plugin-id'), $this->stringConverter->camelCaseToUnderscore($typeClass));
         $input->setOption('type-plugin-id', $plugin_id);
     }
     // --type-description option
     $description = $input->getOption('type-description');
     if (!$description) {
         $description = $io->ask($this->trans('commands.generate.plugin.field.questions.type-description'), 'My Field Type');
         $input->setOption('type-description', $description);
     }
     // --widget-class option
     $widgetClass = $input->getOption('widget-class');
     if (!$widgetClass) {
         $widgetClass = $io->ask($this->trans('commands.generate.plugin.field.questions.widget-class'), 'ExampleWidgetType');
         $input->setOption('widget-class', $widgetClass);
     }
     // --widget-label option
     $widgetLabel = $input->getOption('widget-label');
     if (!$widgetLabel) {
         $widgetLabel = $io->ask($this->trans('commands.generate.plugin.field.questions.widget-label'), $this->stringConverter->camelCaseToHuman($widgetClass));
         $input->setOption('widget-label', $widgetLabel);
     }
     // --widget-plugin-id option
     $widget_plugin_id = $input->getOption('widget-plugin-id');
     if (!$widget_plugin_id) {
         $widget_plugin_id = $io->ask($this->trans('commands.generate.plugin.field.questions.widget-plugin-id'), $this->stringConverter->camelCaseToUnderscore($widgetClass));
         $input->setOption('widget-plugin-id', $widget_plugin_id);
     }
     // --formatter-class option
     $formatterClass = $input->getOption('formatter-class');
     if (!$formatterClass) {
         $formatterClass = $io->ask($this->trans('commands.generate.plugin.field.questions.formatter-class'), 'ExampleFormatterType');
         $input->setOption('formatter-class', $formatterClass);
     }
     // --formatter-label option
     $formatterLabel = $input->getOption('formatter-label');
     if (!$formatterLabel) {
         $formatterLabel = $io->ask($this->trans('commands.generate.plugin.field.questions.formatter-label'), $this->stringConverter->camelCaseToHuman($formatterClass));
         $input->setOption('formatter-label', $formatterLabel);
     }
     // --formatter-plugin-id option
     $formatter_plugin_id = $input->getOption('formatter-plugin-id');
     if (!$formatter_plugin_id) {
         $formatter_plugin_id = $io->ask($this->trans('commands.generate.plugin.field.questions.formatter-plugin-id'), $this->stringConverter->camelCaseToUnderscore($formatterClass));
         $input->setOption('formatter-plugin-id', $formatter_plugin_id);
     }
     // --field-type option
     $field_type = $input->getOption('field-type');
     if (!$field_type) {
         $field_type = $io->ask($this->trans('commands.generate.plugin.field.questions.field-type'), $plugin_id);
         $input->setOption('field-type', $field_type);
     }
     // --default-widget option
     $default_widget = $input->getOption('default-widget');
     if (!$default_widget) {
         $default_widget = $io->ask($this->trans('commands.generate.plugin.field.questions.default-widget'), $widget_plugin_id);
         $input->setOption('default-widget', $default_widget);
     }
     // --default-formatter option
     $default_formatter = $input->getOption('default-formatter');
     if (!$default_formatter) {
         $default_formatter = $io->ask($this->trans('commands.generate.plugin.field.questions.default-formatter'), $formatter_plugin_id);
         $input->setOption('default-formatter', $default_formatter);
     }
 }