diff -u b/core/modules/quickedit/js/quickedit.es6.js b/core/modules/quickedit/js/quickedit.es6.js --- b/core/modules/quickedit/js/quickedit.es6.js +++ b/core/modules/quickedit/js/quickedit.es6.js @@ -359,31 +359,29 @@ // [data-quickedit-entity-id] element's data-quickedit-entity-instance-id // attribute. const entityElementSelector = `[data-quickedit-entity-id="${entityID}"]`; - let entityElement = $(fieldElement).closest(entityElementSelector); - // In the case of a full entity view page, the entity title is rendered - // outside of "the entity DOM node": it's rendered as the page title. So in - // this case, we find the lowest common parent element (deepest in the tree) - // [data-quickedit-entity-id] element's data-quickedit-entity-instance-id - // attribute. - var entityElementSelector = '[data-quickedit-entity-id="' + entityID + '"]'; - var $entityElement = $(entityElementSelector); + const $entityElement = $(fieldElement).closest(entityElementSelector); // If there are no elements returned from `entityElementSelector` // throw an error. Check the browser console for this message. if (!$entityElement.length) { - throw Drupal.t('The field [data-quickedit-field-id="@fieldID"] parent attribute [data-quickedit-entity-id] is missing.', { - '@fieldID': fieldID - }); + throw Drupal.formatString(`Quick Edit could not associate the rendered entity field markup (with [data-quickedit-field-id="${fieldID}"]) with the corresponding rendered entity markup: no parent DOM node found with [data-quickedit-entity-id="${entityID}"]. This is typically caused by the theme's template for this entity type forgetting to print the attributes.`); } + let entityElement = $(fieldElement).closest($entityElement); - var entityElement = $(fieldElement).closest($entityElement); + // In the case of a full entity view page, the entity title is rendered + // outside of "the entity DOM node": it's rendered as the page title. So in + // this case, we find the lowest common parent element (deepest in the tree) + // [data-quickedit-entity-id] element's data-quickedit-entity-instance-id + // attribute. + var entityElementSelector = '[data-quickedit-entity-id="' + entityID + '"]'; + var entityElement = $(fieldElement).closest(entityElementSelector); // In the case of a full entity view page, the entity title is rendered // outside of "the entity DOM node": it's rendered as the page title. So in // this case, we find the lowest common parent element (deepest in the tree) // and consider that the entity element. if (entityElement.length === 0) { - var $lowestCommonParent = $entityElement.parents().has(fieldElement).first(); - entityElement = $lowestCommonParent.find($entityElement); + var $lowestCommonParent = $(entityElementSelector).parents().has(fieldElement).first(); + entityElement = $lowestCommonParent.find(entityElementSelector); } var entityInstanceID = entityElement .get(0) diff -u b/core/modules/quickedit/js/quickedit.js b/core/modules/quickedit/js/quickedit.js --- b/core/modules/quickedit/js/quickedit.js +++ b/core/modules/quickedit/js/quickedit.js @@ -159,7 +159,12 @@ var entityID = extractEntityID(fieldID); var entityElementSelector = '[data-quickedit-entity-id="' + entityID + '"]'; - var entityElement = $(fieldElement).closest(entityElementSelector); + var $entityElement = $(fieldElement).closest(entityElementSelector); + + if (!$entityElement.length) { + throw Drupal.formatString('Quick Edit could not associate the rendered entity field markup (with [data-quickedit-field-id="' + fieldID + '"]) with the corresponding rendered entity markup: no parent DOM node found with [data-quickedit-entity-id="' + entityID + '"]. This is typically caused by the theme\'s template for this entity type forgetting to print the attributes.'); + } + var entityElement = $(fieldElement).closest($entityElement); if (entityElement.length === 0) { var $lowestCommonParent = $(entityElementSelector).parents().has(fieldElement).first(); @@ -167,19 +172,11 @@ var entityID = extractEntityID(fieldID); var entityElementSelector = '[data-quickedit-entity-id="' + entityID + '"]'; - var $entityElement = $(entityElementSelector); - - if (!$entityElement.length) { - throw Drupal.t('The field [data-quickedit-field-id="@fieldID"] parent attribute [data-quickedit-entity-id] is missing.', { - '@fieldID': fieldID - }); - } - - var entityElement = $(fieldElement).closest($entityElement); + var entityElement = $(fieldElement).closest(entityElementSelector); if (entityElement.length === 0) { - var $lowestCommonParent = $entityElement.parents().has(fieldElement).first(); - entityElement = $lowestCommonParent.find($entityElement); + var $lowestCommonParent = $(entityElementSelector).parents().has(fieldElement).first(); + entityElement = $lowestCommonParent.find(entityElementSelector); } var entityInstanceID = entityElement.get(0).getAttribute('data-quickedit-entity-instance-id');