diff --git a/token.info b/token.info index 4a00628..115b3e9 100644 --- a/token.info +++ b/token.info @@ -2,3 +2,4 @@ name = Token description = Provides a user interface for the Token API and some missing core tokens. core = 7.x files[] = token.test +dependencies[] = entity diff --git a/token.tokens.inc b/token.tokens.inc index f584bda..a572529 100644 --- a/token.tokens.inc +++ b/token.tokens.inc @@ -1393,6 +1393,7 @@ function field_token_info_alter(&$info) { function field_tokens($type, $tokens, array $data = array(), array $options = array()) { $replacements = array(); $langcode = isset($options['language']) ? $options['language']->language : NULL; + $sanitize = !empty($options['sanitize']); // Entity tokens. if ($type == 'entity' && !empty($data['entity_type']) && !empty($data['entity']) && !empty($data['token_type'])) { @@ -1419,10 +1420,24 @@ function field_tokens($type, $tokens, array $data = array(), array $options = ar if (isset($tokens[$field_name]) && _token_module($data['token_type'], $field_name) == 'token') { $original = $tokens[$field_name]; - $field_output = field_view_field($entity_type, $entity, $field_name, 'token', $langcode); - $field_output['#token_options'] = $options; - $field_output['#pre_render'][] = 'token_pre_render_field_token'; - $replacements[$original] = drupal_render($field_output); + if ($sanitize) { + $field_output = field_view_field($entity_type, $entity, $field_name, 'token', $langcode); + $field_output['#token_options'] = $options; + $field_output['#pre_render'][] = 'token_pre_render_field_token'; + $replacements[$original] = drupal_render($field_output); + } + else { + $wrapper = entity_metadata_wrapper($entity_type, $entity); + $values = $wrapper->language($langcode)->{$field_name}->raw(); + + if (is_array($values)) { + $join = isset($options['join']) ? $options['join'] : ', '; + $replacements[$original] = implode($join, $values); + } + else { + $replacements[$original] = $values; + } + } } }