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($output); $input->setOption('module', $module); } // --class option $class_name = $input->getOption('class'); if (!$class_name) { $class_name = $io->ask($this->trans('commands.generate.plugin.fieldtype.questions.class'), 'ExampleFieldType'); $input->setOption('class', $class_name); } // --label option $label = $input->getOption('label'); if (!$label) { $label = $io->ask($this->trans('commands.generate.plugin.fieldtype.questions.label'), $this->getStringHelper()->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.fieldtype.questions.plugin-id'), $this->getStringHelper()->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.fieldtype.questions.description'), 'My Field Type'); $input->setOption('description', $description); } // --default-widget option $default_widget = $input->getOption('default-widget'); if (!$default_widget) { $default_widget = $io->askEmpty($this->trans('commands.generate.plugin.fieldtype.questions.default-widget')); $input->setOption('default-widget', $default_widget); } // --default-formatter option $default_formatter = $input->getOption('default-formatter'); if (!$default_formatter) { $default_formatter = $io->askEmpty($this->trans('commands.generate.plugin.fieldtype.questions.default-formatter')); $input->setOption('default-formatter', $default_formatter); } }
/** * {@inheritdoc} */ protected function interact(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); $userId = $input->getOption('user-id'); if (!$userId) { $userId = $io->askEmpty($this->trans('commands.user.delete.questions.user-id'), null); $input->setOption('user-id', $userId); } $roles = $input->getOption('roles'); if (!$userId && !$roles) { $systemRoles = $this->drupalApi->getRoles(false, false, false); $roles = $io->choice($this->trans('commands.user.delete.questions.roles'), array_values($systemRoles), null, true); $roles = array_map(function ($role) use($systemRoles) { return array_search($role, $systemRoles); }, $roles); $input->setOption('roles', $roles); } }
/** * {@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\ModuleTrait::moduleQuestion $module = $this->moduleQuestion($output); $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->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 (in_array($path, array_column($routes, 'path'))) { throw new \InvalidArgumentException(sprintf($this->trans('commands.generate.controller.messages.path-already-added'), $path)); } return $path; }); $routes[] = ['title' => $title, '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\ServicesTrait::servicesQuestion $services = $this->servicesQuestion($output); $input->setOption('services', $services); }
/** * @param DrupalStyle $output * * @return mixed */ public function dbPrefixQuestion(DrupalStyle $output) { return $output->askEmpty($this->trans('commands.migrate.execute.questions.db-prefix')); }
/** * @param DrupalStyle $output * * @return mixed */ public function formQuestion(DrupalStyle $output) { if ($output->confirm($this->trans('commands.common.questions.inputs.confirm'), true)) { $input_types = ['fieldset']; $elementInfoManager = $this->hasGetService('plugin.manager.element_info'); if (!$elementInfoManager) { return false; } foreach ($elementInfoManager->getDefinitions() as $definition) { $type = $definition['id']; $elementInfo = $elementInfoManager->getInfo($type); if (isset($elementInfo['#input']) && $elementInfo['#input']) { if (!in_array($type, $input_types)) { $input_types[] = $type; } } } sort($input_types); $inputs = []; $fieldSets = []; while (true) { $input_type = $output->choiceNoList($this->trans('commands.common.questions.inputs.type'), $input_types, null, true); if (empty($input_type)) { break; } // Label for input $inputLabelMessage = $input_type == 'fieldset' ? $this->trans('commands.common.questions.inputs.title') : $this->trans('commands.common.questions.inputs.label'); $input_label = $output->ask($inputLabelMessage, null); // Machine name $input_machine_name = $this->getStringHelper()->createMachineName($input_label); $input_name = $output->ask($this->trans('commands.common.questions.inputs.machine_name'), $input_machine_name); if ($input_type == 'fieldset') { $fieldSets[$input_machine_name] = $input_label; } $inputFieldSet = ''; if ($input_type != 'fieldset' && !empty($fieldSets)) { $inputFieldSet = $output->choiceNoList($this->trans('commands.common.questions.inputs.fieldset'), $fieldSets, null, true); $inputFieldSet = array_search($inputFieldSet, $fieldSets); } $maxlength = null; $size = null; if (in_array($input_type, array('textfield', 'password', 'password_confirm'))) { $maxlength = $output->ask('Maximum amount of characters', '64'); $size = $output->ask('Width of the textfield (in characters)', '64'); } if ($input_type == 'select') { $size = $output->askEmpty('Size of multiselect box (in lines)', '5'); } $input_options = ''; if (in_array($input_type, array('checkboxes', 'radios', 'select'))) { $input_options = $output->ask('Input options separated by comma'); } // Prepare options as an array if (strlen(trim($input_options))) { // remove spaces in options and empty options $input_options = array_filter(array_map('trim', explode(',', $input_options))); // Create array format for options foreach ($input_options as $key => $value) { $input_options_output[$key] = "'{$value}' => \$this->t('" . $value . "')"; } $input_options = 'array(' . implode(', ', $input_options_output) . ')'; } // Description for input $input_description = $output->askEmpty($this->trans('commands.common.questions.inputs.description')); if ($input_type != 'fieldset') { // Default value for input $default_value = $output->askEmpty($this->trans('commands.common.questions.inputs.default-value')); } // Weight for input $weight = $output->ask($this->trans('commands.common.questions.inputs.weight'), '0'); array_push($inputs, ['name' => $input_name, 'type' => $input_type, 'label' => $input_label, 'options' => $input_options, 'description' => $input_description, 'maxlength' => $maxlength, 'size' => $size, 'default_value' => $default_value, 'weight' => $weight, 'fieldset' => $inputFieldSet]); } return $inputs; } return null; }
protected function interact(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); // --module option $module = $input->getOption('module'); if (!$module) { // @see Drupal\Console\Command\ModuleTrait::moduleQuestion $module = $this->moduleQuestion($output); $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->getStringHelper()->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->getStringHelper()->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->getStringHelper()->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->getStringHelper()->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->getStringHelper()->camelCaseToHuman($widgetClass)); $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->getStringHelper()->camelCaseToUnderscore($widgetClass)); $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->askEmpty($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->askEmpty($this->trans('commands.generate.plugin.field.questions.default-formatter'), $formatter_plugin_id); $input->setOption('default-formatter', $default_formatter); } }
/** * {@inheritdoc} */ protected function interact(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); $username = $input->getArgument('username'); while (!$username) { $username = $io->askEmpty($this->trans('commands.user.create.questions.username'), null); } $input->setArgument('username', $username); $password = $input->getArgument('password'); if (!$password) { $password = $io->askEmpty($this->trans('commands.user.create.questions.password'), null); } $input->setArgument('password', $password); $roles = $input->getOption('roles'); if (!$roles) { $systemRoles = $this->drupalApi->getRoles(false, false, false); $roles = $io->choice($this->trans('commands.user.create.questions.roles'), array_values($systemRoles), null, true); $roles = array_map(function ($role) use($systemRoles) { return array_search($role, $systemRoles); }, $roles); $input->setOption('roles', $roles); } $email = $input->getOption('email'); if (!$email) { $email = $io->askEmpty($this->trans('commands.user.create.questions.email'), null); } $input->setOption('email', $email); $status = $input->getOption('status'); if (!$status) { $status = $io->choice($this->trans('commands.user.create.questions.status'), [0, 1], 1); } $input->setOption('status', $status); }