id: node_translation_menu_links label: Node Translations Menu links audit: true migration_tags: - Drupal 6 - Drupal 7 - Content - Multilingual source: plugin: menu_link constants: entity_prefix: 'entity:' node_prefix: 'node/' process: id: mlid title: link_title description: description menu_name: - plugin: migration_lookup # The menu migration is in the system module. migration: - d6_menu - d7_menu source: menu_name - plugin: skip_on_empty method: row - plugin: static_map map: management: admin bypass: true # In this process pipeline, given a menu link path that might be for a # translated node which has been merged with the default language node, we are # trying to determine the new node ID, that is the ID of the default language # node. new_nid: - # If the path is of the form "node/" and is not routed, we will get # back an URI of the form "base:node/". plugin: link_uri source: - link_path validate_route: false - # Isolate the node ID. plugin: explode delimiter: 'base:node/' - # Extract the node ID. plugin: extract default: false index: - 1 - # Skip row if node ID is empty. plugin: skip_on_empty method: row - # With the old node ID in hand, lookup in the d6_node_translation or # d7_node_translation mapping tables to find the new node ID. plugin: migration_lookup migration: - d6_node_translation - d7_node_translation no_stub: true - # Skip row if the new node ID is empty. plugin: skip_on_empty method: row - # Extract the node ID. The migration lookup will return an array with two # items, the new node ID and the translation langcode. We need the node ID # which is at index 0. plugin: extract index: - 0 # This will be used in the "link/uri" and "route" processes below. link_path: plugin: concat source: - 'constants/node_prefix' - '@new_nid' link/uri: plugin: concat source: - 'constants/entity_prefix' - '@link_path' link/options: options route: plugin: route source: - '@link_path' - options route_name: '@route/route_name' route_parameters: '@route/route_parameters' url: '@route/url' options: '@route/options' external: external weight: weight expanded: expanded enabled: enabled parent: plugin: menu_link_parent source: - plid - '@menu_name' - parent_link_path changed: updated destination: plugin: entity:menu_link_content default_bundle: menu_link_content no_stub: true migration_dependencies: optional: - d6_menu_links - d6_node_translation - d7_menu_links - d7_node_translation