Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / path / path.module
index a724b773d6ef88637cb4c43b8ff84f4348f86cb3..03a563ec217d66950d80dff631ee921056863d7c 100644 (file)
@@ -5,9 +5,9 @@
  * Enables users to rename URLs.
  */
 
+use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Field\BaseFieldDefinition;
-use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 
 /**
@@ -36,33 +36,11 @@ function path_help($route_name, RouteMatchInterface $route_match) {
   }
 }
 
-/**
- * Implements hook_form_BASE_FORM_ID_alter() for \Drupal\node\NodeForm.
- */
-function path_form_node_form_alter(&$form, FormStateInterface $form_state) {
-  $node = $form_state->getFormObject()->getEntity();
-  $form['path_settings'] = [
-    '#type' => 'details',
-    '#title' => t('URL path settings'),
-    '#open' => !empty($form['path']['widget'][0]['alias']['#value']),
-    '#group' => 'advanced',
-    '#access' => !empty($form['path']['#access']) && $node->hasField('path') && $node->get('path')->access('edit'),
-    '#attributes' => [
-      'class' => ['path-form'],
-    ],
-    '#attached' => [
-      'library' => ['path/drupal.path'],
-    ],
-    '#weight' => 30,
-  ];
-  $form['path']['#group'] = 'path_settings';
-}
-
 /**
  * Implements hook_entity_base_field_info().
  */
 function path_entity_base_field_info(EntityTypeInterface $entity_type) {
-  if ($entity_type->id() === 'taxonomy_term' || $entity_type->id() === 'node') {
+  if (in_array($entity_type->id(), ['taxonomy_term', 'node', 'media'], TRUE)) {
     $fields['path'] = BaseFieldDefinition::create('path')
       ->setLabel(t('URL alias'))
       ->setTranslatable(TRUE)
@@ -76,3 +54,17 @@ function path_entity_base_field_info(EntityTypeInterface $entity_type) {
     return $fields;
   }
 }
+
+/**
+ * Implements hook_entity_translation_create().
+ */
+function path_entity_translation_create(ContentEntityInterface $translation) {
+  foreach ($translation->getFieldDefinitions() as $field_name => $field_definition) {
+    if ($field_definition->getType() === 'path' && $translation->get($field_name)->pid) {
+      // If there are values and a path ID, update the langcode and unset the
+      // path ID to save this as a new alias.
+      $translation->get($field_name)->langcode = $translation->language()->getId();
+      $translation->get($field_name)->pid = NULL;
+    }
+  }
+}