Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 19 |
EditorController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
20 | |
0.00% |
0 / 19 |
getUntransformedText | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 6 |
|||
filterXss | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 13 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\editor\EditorController. | |
*/ | |
namespace Drupal\editor; | |
use Drupal\Core\Ajax\AjaxResponse; | |
use Drupal\Core\Controller\ControllerBase; | |
use Drupal\Core\Entity\EntityInterface; | |
use Drupal\editor\Ajax\GetUntransformedTextCommand; | |
use Drupal\filter\Plugin\FilterInterface; | |
use Drupal\filter\FilterFormatInterface; | |
use Symfony\Component\HttpFoundation\JsonResponse; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | |
/** | |
* Returns responses for Editor module routes. | |
*/ | |
class EditorController extends ControllerBase { | |
/** | |
* Returns an Ajax response to render a text field without transformation filters. | |
* | |
* @param \Drupal\Core\Entity\EntityInterface $entity | |
* The entity of which a formatted text field is being rerendered. | |
* @param string $field_name | |
* The name of the (formatted text) field that is being rerendered | |
* @param string $langcode | |
* The name of the language for which the formatted text field is being | |
* rerendered. | |
* @param string $view_mode_id | |
* The view mode the formatted text field should be rerendered in. | |
* | |
* @return \Drupal\Core\Ajax\AjaxResponse | |
* The Ajax response. | |
*/ | |
public function getUntransformedText(EntityInterface $entity, $field_name, $langcode, $view_mode_id) { | |
$response = new AjaxResponse(); | |
// Direct text editing is only supported for single-valued fields. | |
$field = $entity->getTranslation($langcode)->$field_name; | |
$editable_text = check_markup($field->value, $field->format, $langcode, array(FilterInterface::TYPE_TRANSFORM_REVERSIBLE, FilterInterface::TYPE_TRANSFORM_IRREVERSIBLE)); | |
$response->addCommand(new GetUntransformedTextCommand($editable_text)); | |
return $response; | |
} | |
/** | |
* Apply the necessary XSS filtering for using a certain text format's editor. | |
* | |
* @param \Symfony\Component\HttpFoundation\Request $request | |
* The current request object. | |
* @param \Drupal\filter\FilterFormatInterface $filter_format | |
* The text format whose text editor (if any) will be used. | |
* | |
* @return \Symfony\Component\HttpFoundation\JsonResponse | |
* A JSON response containing the XSS-filtered value. | |
* | |
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException | |
* Thrown if no value to filter is specified. | |
* | |
* @see editor_filter_xss() | |
*/ | |
public function filterXss(Request $request, FilterFormatInterface $filter_format) { | |
$value = $request->request->get('value'); | |
if (!isset($value)) { | |
throw new NotFoundHttpException(); | |
} | |
// The original_format parameter will only exist when switching text format. | |
$original_format_id = $request->request->get('original_format_id'); | |
$original_format = NULL; | |
if (isset($original_format_id)) { | |
$original_format = $this->entityManager() | |
->getStorage('filter_format') | |
->load($original_format_id); | |
} | |
return new JsonResponse(editor_filter_xss($value, $filter_format, $original_format)); | |
} | |
} |