Version 1
[yaffs-website] / web / modules / contrib / devel / devel_generate / src / Form / DevelGenerateForm.php
diff --git a/web/modules/contrib/devel/devel_generate/src/Form/DevelGenerateForm.php b/web/modules/contrib/devel/devel_generate/src/Form/DevelGenerateForm.php
new file mode 100644 (file)
index 0000000..63c708b
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+namespace Drupal\devel_generate\Form;
+
+use Drupal\Component\Plugin\PluginManagerInterface;
+use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\devel_generate\DevelGenerateException;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Defines a form that allows privileged users to generate entities.
+ */
+class DevelGenerateForm extends FormBase {
+
+  /**
+   * The manager to be used for instantiating plugins.
+   *
+   * @var \Drupal\Component\Plugin\PluginManagerInterface
+   */
+  protected $develGenerateManager;
+
+  /**
+   * Constructs a new DevelGenerateForm object.
+   *
+   * @param \Drupal\Component\Plugin\PluginManagerInterface $devel_generate_manager
+   *   The manager to be used for instantiating plugins.
+   */
+  public function __construct(PluginManagerInterface $devel_generate_manager) {
+    $this->develGenerateManager = $devel_generate_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('plugin.manager.develgenerate')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'devel_generate_form_' . $this->getPluginIdFromRequest();
+  }
+
+  /**
+   * Returns the value of the param _plugin_id for the current request.
+   *
+   * @see \Drupal\devel_generate\Routing\DevelGenerateRouteSubscriber
+   */
+  protected function getPluginIdFromRequest() {
+    $request = $this->getRequest();
+    return $request->get('_plugin_id');
+  }
+
+  /**
+   * Returns a DevelGenerate plugin instance for a given plugin id.
+   *
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   *
+   * @return \Drupal\devel_generate\DevelGenerateBaseInterface
+   *   A DevelGenerate plugin instance.
+   */
+  public function getPluginInstance($plugin_id) {
+    $instance = $this->develGenerateManager->createInstance($plugin_id, array());
+    return $instance;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $plugin_id = $this->getPluginIdFromRequest();
+    $instance = $this->getPluginInstance($plugin_id);
+    $form = $instance->settingsForm($form, $form_state);
+    $form['actions'] = array('#type' => 'actions');
+    $form['actions']['submit'] = array(
+      '#type' => 'submit',
+      '#value' => $this->t('Generate'),
+      '#button_type' => 'primary',
+    );
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, FormStateInterface $form_state) {
+    $plugin_id = $this->getPluginIdFromRequest();
+    $instance = $this->getPluginInstance($plugin_id);
+    $instance->settingsFormValidate($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    try {
+      $plugin_id = $this->getPluginIdFromRequest();
+      $instance = $this->getPluginInstance($plugin_id);
+      $instance->generate($form_state->getValues());
+    }
+    catch (DevelGenerateException $e) {
+      $this->logger('DevelGenerate', $this->t('Failed to generate elements due to "%error".', array('%error' => $e->getMessage())));
+      drupal_set_message($this->t('Failed to generate elements due to "%error".', array('%error' => $e->getMessage())));
+    }
+  }
+
+}