diff --git a/src/Context/ContextDefinition.php b/src/Context/ContextDefinition.php index f1abe5c..9f4e3a7 100644 --- a/src/Context/ContextDefinition.php +++ b/src/Context/ContextDefinition.php @@ -78,6 +78,19 @@ class ContextDefinition extends ContextDefinitionCore implements ContextDefiniti if (isset($values['class']) && !in_array('Drupal\rules\Context\ContextDefinitionInterface', class_implements($values['class']))) { throw new \Exception('ContextDefinition class must implement \Drupal\rules\Context\ContextDefinitionInterface.'); } + + // Annotation classes extract data from passed annotation classes directly + // used in the classes they pass to. + foreach (['label', 'description'] as $key) { + // @todo Remove this workaround in https://www.drupal.org/node/2362727. + if (isset($values[$key]) && $values[$key] instanceof TranslatableMarkup) { + $values[$key] = (string) $values[$key]->get(); + } + else { + $values[$key] = NULL; + } + } + // Default to Rules context definition class. $values['class'] = isset($values['class']) ? $values['class'] : '\Drupal\rules\Context\ContextDefinition'; if (!isset($values['type'])) {