chapter-three / next-drupal

Next.js for Drupal has everything you need to build a next-generation front-end for your Drupal site: SSG, SSR, and ISR, Multi-site, Authentication, Webforms, Search API, I18n and Preview mode (works with JSON:API and GraphQL).
https://next-drupal.org
MIT License
629 stars 176 forks source link

Wrong iFrame preview URL when viewing Latest version of a draft of a translation #500

Open marcorcau opened 1 year ago

marcorcau commented 1 year ago

Description

In a multi-language setup with workflow enabled and draft status, the iFrame preview URL is correctly calculated for all links in "Revisions" tab, which follow the URL structure: /[langcode]/node/[nid]/revisions/[vid]/view.

But the iFrame URL is wrong for drafts not in the node original language when visiting the "Latest revision" tab. URL in this case has the structure: /[langcode]/node/[nid]/latest.

In this case, the latest revision of the entity in its original language is displayed.

The following screenshot demonstrates the URL language in the browser is "de-ch" but the URL in the iFrame is "de":

imatge

In my screenshot in the preview frame an error appears, but that might be related to my setup. The important part is wrong langcode in the URL.

Steps to reproduce

In a basic Next.js 1.6.3 setup on Drupal 10

apmsooner commented 10 months ago

This line is currently returning the node in the default language: https://github.com/chapter-three/next-drupal/blob/main/modules/next/src/NextEntityTypeManager.php#L80

It appears that commenting that out and just returning $parameter in line 85 loads the revision for the translated language correctly. I don't know if this is always the case or based on my current language detection settings. I can provide a patch for this if this is the right course of action... just not 100% sure.