From eb21fc37a77a4a61144d9046a2303fac6dba3de2 Mon Sep 17 00:00:00 2001
From: webchick <drupal@webchick.net>
Date: Tue, 26 Aug 2014 10:25:49 -0700
Subject: [PATCH] Issue #2301245 by sun, joelpittet | larowlan: Fixed Entity
 system invokes non-existing theme hooks: 'Theme hook  not found.'

---
 core/includes/theme.inc                              | 12 +++++-------
 .../block_content/src/BlockContentViewBuilder.php    | 11 +++++++++++
 core/modules/contact/src/MessageViewBuilder.php      | 11 +++++++++++
 .../modules/system/src/Tests/Theme/FunctionsTest.php |  1 -
 .../entity_test/src/EntityTestViewBuilder.php        | 10 ++++++++++
 5 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index cd09a884f128..15ef789bb7e9 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -2223,10 +2223,14 @@ function template_preprocess_field_multiple_value_form(&$variables) {
   if ($variables['multiple']) {
     $table_id = drupal_html_id($element['#field_name'] . '_values');
     $order_class = $element['#field_name'] . '-delta-order';
+    $header_attributes = new Attribute(array('class' => array('label')));
+    if (!empty($element['#required'])) {
+      $header_attributes['class'][] = 'form-required';
+    }
     $header = array(
       array(
         'data' => array(
-          '#prefix' => '<h4 class="label">',
+          '#prefix' => '<h4' . $header_attributes . '>',
           'title' => array(
             '#markup' => t($element['#title']),
           ),
@@ -2237,12 +2241,6 @@ function template_preprocess_field_multiple_value_form(&$variables) {
       ),
       t('Order', array(), array('context' => 'Sort order')),
     );
-    if (!empty($element['#required'])) {
-      $header[0]['data']['required'] = array(
-        '#theme' => 'form_required_marker',
-        '#element' => $element,
-      );
-    }
     $rows = array();
 
     // Sort items according to '_weight' (needed when the form comes back after
diff --git a/core/modules/block_content/src/BlockContentViewBuilder.php b/core/modules/block_content/src/BlockContentViewBuilder.php
index 0977e9f1eb86..ff2a8536b3cb 100644
--- a/core/modules/block_content/src/BlockContentViewBuilder.php
+++ b/core/modules/block_content/src/BlockContentViewBuilder.php
@@ -16,6 +16,17 @@
  */
 class BlockContentViewBuilder extends EntityViewBuilder {
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
+    $build = parent::getBuildDefaults($entity, $view_mode, $langcode);
+    // The custom block will be rendered in the wrapped block template already
+    // and thus has no entity template itself.
+    unset($build['#theme']);
+    return $build;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/contact/src/MessageViewBuilder.php b/core/modules/contact/src/MessageViewBuilder.php
index 4cbbd2c17208..23e9b4300432 100644
--- a/core/modules/contact/src/MessageViewBuilder.php
+++ b/core/modules/contact/src/MessageViewBuilder.php
@@ -17,6 +17,17 @@
  */
 class MessageViewBuilder extends EntityViewBuilder {
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
+    $build = parent::getBuildDefaults($entity, $view_mode, $langcode);
+    // The message fields are individually rendered into email templates, so
+    // the entity has no template itself.
+    unset($build['#theme']);
+    return $build;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/system/src/Tests/Theme/FunctionsTest.php b/core/modules/system/src/Tests/Theme/FunctionsTest.php
index b0fe3050980e..58ffcde40e19 100644
--- a/core/modules/system/src/Tests/Theme/FunctionsTest.php
+++ b/core/modules/system/src/Tests/Theme/FunctionsTest.php
@@ -64,7 +64,6 @@ function testItemList() {
     // Verify that title set to a render array is output.
     $variables = array();
     $variables['title'] = array(
-      '#theme' => 'markup',
       '#markup' => '<span>Render array</span>',
     );
     $variables['empty'] = 'No items found.';
diff --git a/core/modules/system/tests/modules/entity_test/src/EntityTestViewBuilder.php b/core/modules/system/tests/modules/entity_test/src/EntityTestViewBuilder.php
index 535faff120b9..345651254215 100644
--- a/core/modules/system/tests/modules/entity_test/src/EntityTestViewBuilder.php
+++ b/core/modules/system/tests/modules/entity_test/src/EntityTestViewBuilder.php
@@ -8,6 +8,7 @@
 namespace Drupal\entity_test;
 
 use Drupal\Component\Utility\String;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityViewBuilder;
 
 /**
@@ -17,6 +18,15 @@
  */
 class EntityTestViewBuilder extends EntityViewBuilder {
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
+    $build = parent::getBuildDefaults($entity, $view_mode, $langcode);
+    unset($build['#theme']);
+    return $build;
+  }
+
   /**
    * {@inheritdoc}
    */
-- 
GitLab