Update to Drupal 8.1.2. For more information, see https://www.drupal.org/project/drupal/releases/8.1.2
This commit is contained in:
parent
9eae24d844
commit
28556d630e
1322 changed files with 6699 additions and 2064 deletions
|
@ -66,7 +66,7 @@ function editor_element_info_alter(&$types) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements hook_form_FORM_ID_alter().
|
||||
* Implements hook_form_FORM_ID_alter() for \Drupal\filter\FilterFormatListBuilder.
|
||||
*/
|
||||
function editor_form_filter_admin_overview_alter(&$form, FormStateInterface $form_state) {
|
||||
// @todo Cleanup column injection: https://www.drupal.org/node/1876718.
|
||||
|
@ -88,7 +88,7 @@ function editor_form_filter_admin_overview_alter(&$form, FormStateInterface $for
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements hook_form_BASE_FORM_ID_alter() for 'filter_format_form'.
|
||||
* Implements hook_form_BASE_FORM_ID_alter() for \Drupal\filter\FilterFormatEditForm.
|
||||
*/
|
||||
function editor_form_filter_format_form_alter(&$form, FormStateInterface $form_state) {
|
||||
$editor = $form_state->get('editor');
|
||||
|
@ -471,6 +471,9 @@ function _editor_get_file_uuids_by_field(EntityInterface $entity) {
|
|||
$field_items = $entity->get($formatted_text_field);
|
||||
foreach ($field_items as $field_item) {
|
||||
$text .= $field_item->value;
|
||||
if ($field_item->getFieldDefinition()->getType() == 'text_with_summary') {
|
||||
$text .= $field_item->summary;
|
||||
}
|
||||
}
|
||||
$uuids[$formatted_text_field] = _editor_parse_file_uuids($text);
|
||||
}
|
||||
|
|
|
@ -85,8 +85,8 @@ class EditorImageDialog extends FormBase {
|
|||
|
||||
// Construct strings to use in the upload validators.
|
||||
$image_upload = $editor->getImageUploadSettings();
|
||||
if (!empty($image_upload['dimensions'])) {
|
||||
$max_dimensions = $image_upload['dimensions']['max_width'] . '×' . $image_upload['dimensions']['max_height'];
|
||||
if (!empty($image_upload['max_dimensions']['width']) || !empty($image_upload['max_dimensions']['height'])) {
|
||||
$max_dimensions = $image_upload['max_dimensions']['width'] . 'x' . $image_upload['max_dimensions']['height'];
|
||||
}
|
||||
else {
|
||||
$max_dimensions = 0;
|
||||
|
|
|
@ -223,7 +223,7 @@ class EditorAdminTest extends WebTestBase {
|
|||
$settings = $editor->getSettings();
|
||||
$this->assertIdentical($editor->getEditor(), 'unicorn', 'The text editor is configured correctly.');
|
||||
$this->assertIdentical($settings['ponies_too'], $ponies_too, 'The text editor settings are stored correctly.');
|
||||
$this->drupalGet('admin/config/content/formats/manage/'. $format_id);
|
||||
$this->drupalGet('admin/config/content/formats/manage/' . $format_id);
|
||||
$select = $this->xpath('//select[@name="editor[editor]"]');
|
||||
$select_is_disabled = $this->xpath('//select[@name="editor[editor]" and @disabled="disabled"]');
|
||||
$options = $this->xpath('//select[@name="editor[editor]"]/option');
|
||||
|
|
|
@ -431,4 +431,5 @@ class EditorSecurityTest extends WebTestBase {
|
|||
$dom_node = $this->xpath('//textarea[@id="edit-body-0-value"]');
|
||||
$this->assertIdentical(self::$sampleContent, (string) $dom_node[0], 'The value was filtered by the Insecure text editor XSS filter.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
172
core/modules/editor/src/Tests/EditorUploadImageScaleTest.php
Normal file
172
core/modules/editor/src/Tests/EditorUploadImageScaleTest.php
Normal file
|
@ -0,0 +1,172 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\editor\Tests;
|
||||
|
||||
use Drupal\editor\Entity\Editor;
|
||||
use Drupal\filter\Entity\FilterFormat;
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
|
||||
/**
|
||||
* Tests scaling of inline images.
|
||||
*
|
||||
* @group editor
|
||||
*/
|
||||
class EditorUploadImageScaleTest extends WebTestBase {
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['editor', 'editor_test'];
|
||||
|
||||
/**
|
||||
* A user with permission as administer for testing.
|
||||
*
|
||||
* @var \Drupal\user\Entity\User
|
||||
*/
|
||||
protected $adminUser;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
// Add text format.
|
||||
FilterFormat::create([
|
||||
'format' => 'basic_html',
|
||||
'name' => 'Basic HTML',
|
||||
'weight' => 0,
|
||||
])->save();
|
||||
|
||||
// Set up text editor.
|
||||
Editor::create([
|
||||
'format' => 'basic_html',
|
||||
'editor' => 'unicorn',
|
||||
'image_upload' => [
|
||||
'status' => TRUE,
|
||||
'scheme' => 'public',
|
||||
'directory' => 'inline-images',
|
||||
'max_size' => '',
|
||||
'max_dimensions' => [
|
||||
'width' => '',
|
||||
'height' => ''
|
||||
],
|
||||
]
|
||||
])->save();
|
||||
|
||||
// Create admin user.
|
||||
$this->adminUser = $this->drupalCreateUser(['administer filters', 'use text format basic_html']);
|
||||
$this->drupalLogin($this->adminUser);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests scaling of inline images.
|
||||
*/
|
||||
public function testEditorUploadImageScale() {
|
||||
// Generate testing images.
|
||||
$testing_image_list = $this->drupalGetTestFiles('image');
|
||||
|
||||
// Case 1: no max dimensions set: uploaded image not scaled.
|
||||
$test_image = $testing_image_list[0];
|
||||
list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri);
|
||||
$max_width = '';
|
||||
$max_height = '';
|
||||
$this->setMaxDimensions($max_width, $max_height);
|
||||
list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri);
|
||||
$this->assertEqual($uploaded_image_file_width, $image_file_width);
|
||||
$this->assertEqual($uploaded_image_file_height, $image_file_height);
|
||||
$this->assertNoRaw(t('The image was resized to fit within the maximum allowed dimensions of %dimensions pixels.', ['%dimensions' => $max_width . 'x' . $max_height]));
|
||||
|
||||
// Case 2: max width smaller than uploaded image: image scaled down.
|
||||
$test_image = $testing_image_list[1];
|
||||
list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri);
|
||||
$max_width = $image_file_width - 5;
|
||||
$max_height = $image_file_height;
|
||||
$this->setMaxDimensions($max_width, $max_height);
|
||||
list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri);
|
||||
$this->assertEqual($uploaded_image_file_width, $max_width);
|
||||
$this->assertEqual($uploaded_image_file_height, $uploaded_image_file_height * ($uploaded_image_file_width / $max_width));
|
||||
$this->assertRaw(t('The image was resized to fit within the maximum allowed dimensions of %dimensions pixels.', ['%dimensions' => $max_width . 'x' . $max_height]));
|
||||
|
||||
// Case 3: max height smaller than uploaded image: image scaled down.
|
||||
$test_image = $testing_image_list[2];
|
||||
list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri);
|
||||
$max_width = $image_file_width;
|
||||
$max_height = $image_file_height - 5;
|
||||
$this->setMaxDimensions($max_width, $max_height);
|
||||
list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri);
|
||||
$this->assertEqual($uploaded_image_file_width, $uploaded_image_file_width * ($uploaded_image_file_height / $max_height));
|
||||
$this->assertEqual($uploaded_image_file_height, $max_height);
|
||||
$this->assertRaw(t('The image was resized to fit within the maximum allowed dimensions of %dimensions pixels.', ['%dimensions' => $max_width . 'x' . $max_height]));
|
||||
|
||||
// Case 4: max dimensions greater than uploaded image: image not scaled.
|
||||
$test_image = $testing_image_list[3];
|
||||
list($image_file_width, $image_file_height) = $this->getTestImageInfo($test_image->uri);
|
||||
$max_width = $image_file_width + 5;
|
||||
$max_height = $image_file_height + 5;
|
||||
$this->setMaxDimensions($max_width, $max_height);
|
||||
list($uploaded_image_file_width, $uploaded_image_file_height) = $this->uploadImage($test_image->uri);
|
||||
$this->assertEqual($uploaded_image_file_width, $image_file_width);
|
||||
$this->assertEqual($uploaded_image_file_height, $image_file_height);
|
||||
$this->assertNoRaw(t('The image was resized to fit within the maximum allowed dimensions of %dimensions pixels.', ['%dimensions' => $max_width . 'x' . $max_height]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the dimensions of an uploaded image.
|
||||
*
|
||||
* @param string $uri
|
||||
* The URI of the image.
|
||||
*
|
||||
* @return array
|
||||
* An array containing the uploaded image's width and height.
|
||||
*/
|
||||
protected function getTestImageInfo($uri) {
|
||||
$image_file = $this->container->get('image.factory')->get($uri);
|
||||
return [
|
||||
(int) $image_file->getWidth(),
|
||||
(int) $image_file->getHeight(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum dimensions and saves the configuration.
|
||||
*
|
||||
* @param string|int $width
|
||||
* The width of the image.
|
||||
* @param string|int $height
|
||||
* The height of the image.
|
||||
*/
|
||||
protected function setMaxDimensions($width, $height) {
|
||||
$editor = Editor::load('basic_html');
|
||||
$image_upload_settings = $editor->getImageUploadSettings();
|
||||
$image_upload_settings['max_dimensions']['width'] = $width;
|
||||
$image_upload_settings['max_dimensions']['height'] = $height;
|
||||
$editor->setImageUploadSettings($image_upload_settings);
|
||||
$editor->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads an image via the editor dialog.
|
||||
*
|
||||
* @param string $uri
|
||||
* The URI of the image.
|
||||
*
|
||||
* @return array
|
||||
* An array containing the uploaded image's width and height.
|
||||
*/
|
||||
protected function uploadImage($uri) {
|
||||
$edit = [
|
||||
'files[fid]' => drupal_realpath($uri),
|
||||
];
|
||||
$this->drupalGet('editor/dialog/image/basic_html');
|
||||
$this->drupalPostForm('editor/dialog/image/basic_html', $edit, t('Upload'));
|
||||
$uploaded_image_file = $this->container->get('image.factory')->get('public://inline-images/' . basename($uri));
|
||||
return [
|
||||
(int) $uploaded_image_file->getWidth(),
|
||||
(int) $uploaded_image_file->getHeight(),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
|
@ -177,6 +177,28 @@ class EditorFileUsageTest extends EntityKernelTestBase {
|
|||
$this->assertIdentical(array('editor' => array('node' => array(1 => '2'))), $file_usage->listUsage($image_entity), 'The image ' . $image_paths[$key] . ' has 2 usages.');
|
||||
}
|
||||
|
||||
// Populate both the body and summary. Because this will be the same
|
||||
// revision of the same node, it will record only one usage.
|
||||
foreach ($original_values as $key => $original_value) {
|
||||
$node->body[$key]->value = $original_value;
|
||||
$node->body[$key]->summary = $original_value;
|
||||
}
|
||||
$node->save();
|
||||
foreach ($image_entities as $key => $image_entity) {
|
||||
$this->assertIdentical(array('editor' => array('node' => array(1 => '2'))), $file_usage->listUsage($image_entity), 'The image ' . $image_paths[$key] . ' has 2 usages.');
|
||||
}
|
||||
|
||||
// Empty out the body value, but keep the summary. The number of usages
|
||||
// should not change.
|
||||
foreach ($original_values as $key => $original_value) {
|
||||
$node->body[$key]->value = '';
|
||||
$node->body[$key]->summary = $original_value;
|
||||
}
|
||||
$node->save();
|
||||
foreach ($image_entities as $key => $image_entity) {
|
||||
$this->assertIdentical(array('editor' => array('node' => array(1 => '2'))), $file_usage->listUsage($image_entity), 'The image ' . $image_paths[$key] . ' has 2 usages.');
|
||||
}
|
||||
|
||||
// Test editor_entity_delete().
|
||||
$node->delete();
|
||||
foreach ($image_entities as $key => $image_entity) {
|
||||
|
|
Reference in a new issue