Version 1
[yaffs-website] / web / modules / contrib / embed / src / Controller / EmbedController.php
diff --git a/web/modules/contrib/embed/src/Controller/EmbedController.php b/web/modules/contrib/embed/src/Controller/EmbedController.php
new file mode 100644 (file)
index 0000000..65df04f
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+
+namespace Drupal\embed\Controller;
+
+use Drupal\Core\Ajax\AjaxResponse;
+use Drupal\Core\Controller\ControllerBase;
+use Drupal\editor\EditorInterface;
+use Drupal\embed\Ajax\EmbedInsertCommand;
+use Drupal\embed\EmbedButtonInterface;
+use Drupal\filter\FilterFormatInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+
+/**
+ * Returns responses for Embed module routes.
+ */
+class EmbedController extends ControllerBase {
+
+  /**
+   * Returns an Ajax response to generate preview of embedded items.
+   *
+   * Expects the the HTML element as GET parameter.
+   *
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   The request object.
+   * @param \Drupal\filter\FilterFormatInterface $filter_format
+   *   The filter format.
+   *
+   * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
+   *   Throws an exception if 'value' parameter is not found in the request.
+   *
+   * @return \Symfony\Component\HttpFoundation\Response
+   *   The preview of the embedded item specified by the data attributes.
+   */
+  public function preview(Request $request, FilterFormatInterface $filter_format) {
+    $text = $request->get('value');
+    if ($text == '') {
+      throw new NotFoundHttpException();
+    }
+
+    $build = [
+      '#type' => 'processed_text',
+      '#text' => $text,
+      '#format' => $filter_format->id(),
+    ];
+
+    $response = new AjaxResponse();
+    $response->addCommand(new EmbedInsertCommand($build));
+    return $response;
+  }
+
+  /**
+   * Returns an Ajax response to generate preview of an entity.
+   *
+   * Expects the the HTML element as GET parameter.
+   *
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   The request object.
+   * @param \Drupal\editor\EditorInterface $editor
+   *   The editor.
+   * @param \Drupal\embed\EmbedButtonInterface $embed_button
+   *   The embed button.
+   *
+   * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
+   *   Throws an exception if 'value' parameter is not found in the request.
+   *
+   * @return \Symfony\Component\HttpFoundation\Response
+   *   The preview of the embedded item specified by the data attributes.
+   */
+  public function previewEditor(Request $request, EditorInterface $editor, EmbedButtonInterface $embed_button) {
+    return $this->preview($request, $editor->getFilterFormat());
+  }
+
+}