Update to Drupal 8.0.5. For more information, see https://www.drupal.org/node/2679347
This commit is contained in:
parent
2a9f1f148d
commit
fd3b12cf27
251 changed files with 5439 additions and 957 deletions
|
@ -66,6 +66,17 @@ class FieldTranslationSynchronizer implements FieldTranslationSynchronizerInterf
|
|||
// Retrieve all the untranslatable column groups and merge them into
|
||||
// single list.
|
||||
$groups = array_keys(array_diff($translation_sync, array_filter($translation_sync)));
|
||||
|
||||
// If a group was selected has the require_all_groups_for_translation
|
||||
// flag set, there are no untranslatable columns. This is done because
|
||||
// the UI adds Javascript that disables the other checkboxes, so their
|
||||
// values are not saved.
|
||||
foreach (array_filter($translation_sync) as $group) {
|
||||
if (!empty($column_groups[$group]['require_all_groups_for_translation'])) {
|
||||
$groups = [];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!empty($groups)) {
|
||||
$columns = array();
|
||||
foreach ($groups as $group) {
|
||||
|
@ -163,7 +174,16 @@ class FieldTranslationSynchronizer implements FieldTranslationSynchronizerInterf
|
|||
continue;
|
||||
}
|
||||
// If a synchronized column has changed or has been created from
|
||||
// scratch we need to override the full items array for all languages.
|
||||
// scratch we need to replace the values for this language as a
|
||||
// combination of the values that need to be synced from the source
|
||||
// items and the other columns from the existing values. This only
|
||||
// works if the delta exists in the language.
|
||||
elseif ($created && !empty($original_field_values[$langcode][$delta])) {
|
||||
$item_columns_to_sync = array_intersect_key($source_items[$delta], array_flip($columns));
|
||||
$item_columns_to_keep = array_diff_key($original_field_values[$langcode][$delta], array_flip($columns));
|
||||
$values[$langcode][$delta] = $item_columns_to_sync + $item_columns_to_keep;
|
||||
}
|
||||
// If the delta doesn't exist, copy from the source language.
|
||||
elseif ($created) {
|
||||
$values[$langcode][$delta] = $source_items[$delta];
|
||||
}
|
||||
|
|
|
@ -201,7 +201,9 @@ class ContentTranslationSyncUnitTest extends KernelTestBase {
|
|||
for ($delta = 0; $delta < $this->cardinality; $delta++) {
|
||||
if ($delta_callback($delta)) {
|
||||
foreach ($this->columns as $column) {
|
||||
$field_values[$sync_langcode][$delta][$column] = $field_values[$sync_langcode][0][$column];
|
||||
if (in_array($column, $this->synchronized)) {
|
||||
$field_values[$sync_langcode][$delta][$column] = $field_values[$sync_langcode][0][$column];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -209,19 +211,18 @@ class ContentTranslationSyncUnitTest extends KernelTestBase {
|
|||
$changed_items = $field_values[$sync_langcode];
|
||||
$this->synchronizer->synchronizeItems($field_values, $unchanged_items, $sync_langcode, $this->langcodes, $this->synchronized);
|
||||
|
||||
$result = TRUE;
|
||||
foreach ($this->unchangedFieldValues as $langcode => $unchanged_items) {
|
||||
for ($delta = 0; $delta < $this->cardinality; $delta++) {
|
||||
foreach ($this->columns as $column) {
|
||||
// The first item is always unchanged hence it is retained by the
|
||||
// synchronization process. The other ones are retained or synced
|
||||
// depending on the logic implemented by the delta callback.
|
||||
$value = $delta > 0 && $delta_callback($delta) ? $changed_items[0][$column] : $unchanged_items[$delta][$column];
|
||||
$result = $result && ($field_values[$langcode][$delta][$column] == $value);
|
||||
// depending on the logic implemented by the delta callback and
|
||||
// whether it is a sync column or not.
|
||||
$value = $delta > 0 && $delta_callback($delta) && in_array($column, $this->synchronized) ? $changed_items[0][$column] : $unchanged_items[$delta][$column];
|
||||
$this->assertEqual($field_values[$langcode][$delta][$column], $value, "Item $delta column $column for langcode $langcode synced correctly");
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->assertTrue($result, 'Multiple synced items have been correctly synchronized.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -241,15 +242,16 @@ class ContentTranslationSyncUnitTest extends KernelTestBase {
|
|||
$changed_items = $field_values[$sync_langcode];
|
||||
$this->synchronizer->synchronizeItems($field_values, $unchanged_items, $sync_langcode, $this->langcodes, $this->synchronized);
|
||||
|
||||
$result = TRUE;
|
||||
foreach ($this->unchangedFieldValues as $langcode => $unchanged_items) {
|
||||
for ($delta = 0; $delta < $this->cardinality; $delta++) {
|
||||
foreach ($this->columns as $column) {
|
||||
$result = $result && ($field_values[$langcode][$delta][$column] == $changed_items[$delta][$column]);
|
||||
// If the column is synchronized, the value should have been synced,
|
||||
// for unsychronized columns, the value must not change.
|
||||
$expected_value = in_array($column, $this->synchronized) ? $changed_items[$delta][$column] : $this->unchangedFieldValues[$langcode][$delta][$column];
|
||||
$this->assertEqual($field_values[$langcode][$delta][$column], $expected_value, "Differing Item $delta column $column for langcode $langcode synced correctly");
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->assertTrue($result, 'Differing synced columns have been correctly synchronized.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue