diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index 526ef66338a3..bc822aba71d9 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -152,8 +152,6 @@ function rdf_get_namespaces() {
*
* @return array
* RDFa attributes suitable for Drupal\Core\Template\Attribute.
- *
- * @see theme_rdf_template_variable_wrapper()
*/
function rdf_rdfa_attributes($mapping, $data = NULL) {
$attributes = array();
@@ -215,63 +213,12 @@ function rdf_comment_load($comments) {
*/
function rdf_theme() {
return array(
- 'rdf_template_variable_wrapper' => array(
- 'variables' => array('content' => NULL, 'attributes' => array(), 'context' => array(), 'inline' => TRUE),
- ),
'rdf_metadata' => array(
'variables' => array('metadata' => array()),
),
);
}
-/**
- * Implements MODULE_process().
- *
- * Template process function for adding extra tags to hold RDFa attributes.
- *
- * Since template files already have built-in support for $attributes,
- * $title_attributes, and $content_attributes, and field templates have support
- * for $item_attributes, we try to leverage those as much as possible. However,
- * in some cases additional attributes are needed not covered by these. We deal
- * with those here.
- */
-function rdf_process(&$variables, $hook) {
- // Handles attributes needed for content not covered by title, content, and
- // field items. It does this by adjusting the variable sent to the template
- // so that the template doesn't have to worry about it. See
- // theme_rdf_template_variable_wrapper().
- if (!empty($variables['rdf_template_variable_attributes'])) {
- foreach ($variables['rdf_template_variable_attributes'] as $variable_name => $attributes) {
- $context = array(
- 'hook' => $hook,
- 'variable_name' => $variable_name,
- 'variables' => $variables,
- );
- $rdf_template_variable_wrapper = array(
- '#theme' => 'rdf_template_variable_wrapper',
- '#content' => $variables[$variable_name],
- '#attributes' => $attributes,
- '#context' => $context,
- );
- $variables[$variable_name] = drupal_render($rdf_template_variable_wrapper);
- }
- }
- // Handles additional attributes about a template entity that for RDF parsing
- // reasons, can't be placed into that template's $attributes variable. This
- // is "meta" information that is related to particular content, so render it
- // close to that content.
- if (!empty($variables['rdf_metadata_attributes'])) {
- if (!isset($variables['content']['#prefix'])) {
- $variables['content']['#prefix'] = '';
- }
- $rdf_metadata = array(
- '#theme' => 'rdf_metadata',
- '#metadata' => $variables['rdf_metadata_attributes'],
- );
- $variables['content']['#prefix'] = drupal_render($rdf_metadata) . $variables['content']['#prefix'];
- }
-}
-
/**
* Implements hook_preprocess_HOOK() for html.tpl.php.
*/
@@ -325,22 +272,18 @@ function rdf_preprocess_node(&$variables) {
drupal_add_html_head($element, 'rdf_node_title');
}
+ // Adds RDFa markup for the relation between the node and its author.
+ $author_mapping = $mapping->getPreparedFieldMapping('uid');
+ if (!empty($author_mapping['properties']) && $variables['submitted']) {
+ $author_attributes = array('rel' => $author_mapping['properties']);
+ $variables['submitted'] = '' . $variables['submitted'] . '';
+ }
+
// Adds RDFa markup for the date.
$created_mapping = $mapping->getPreparedFieldMapping('created');
- if (!empty($created_mapping)) {
+ if (!empty($created_mapping) && $variables['submitted']) {
$date_attributes = rdf_rdfa_attributes($created_mapping, $variables['node']->created);
- $variables['rdf_template_variable_attributes']['date'] = $date_attributes;
- if ($variables['submitted']) {
- $variables['rdf_template_variable_attributes']['submitted'] = $date_attributes;
- }
- }
- // Adds RDFa markup for the relation between the node and its author.
- $uid_mapping = $mapping->getPreparedFieldMapping('uid');
- if (!empty($uid_mapping)) {
- $variables['rdf_template_variable_attributes']['name']['rel'] = $uid_mapping['properties'];
- if ($variables['submitted']) {
- $variables['rdf_template_variable_attributes']['submitted']['rel'] = $uid_mapping['properties'];
- }
+ $variables['submitted'] .= theme('rdf_metadata', array('metadata' => array($date_attributes)));
}
// Adds RDFa markup annotating the number of comments a node has.
@@ -532,20 +475,19 @@ function rdf_preprocess_comment(&$variables) {
$variables['attributes']['typeof'] = $bundle_mapping['types'];
}
+ // Adds RDFa markup for the relation between the comment and its author.
+ $author_mapping = $mapping->getPreparedFieldMapping('uid');
+ if (!empty($author_mapping)) {
+ $author_attributes = array('rel' => $author_mapping['properties']);
+ $variables['submitted'] = '' . $variables['submitted'] . '';
+ }
// Adds RDFa markup for the date of the comment.
$created_mapping = $mapping->getPreparedFieldMapping('created');
if (!empty($created_mapping)) {
// The comment date is precomputed as part of the rdf_data so that it can be
// cached as part of the entity.
$date_attributes = $comment->rdf_data['date'];
- $variables['rdf_template_variable_attributes']['created'] = $date_attributes;
- $variables['rdf_template_variable_attributes']['submitted'] = $date_attributes;
- }
- // Adds RDFa markup for the relation between the comment and its author.
- $uid_mapping = $mapping->getPreparedFieldMapping('uid');
- if (!empty($uid_mapping)) {
- $variables['rdf_template_variable_attributes']['author']['rel'] = $uid_mapping['properties'];
- $variables['rdf_template_variable_attributes']['submitted']['rel'] = $uid_mapping['properties'];
+ $variables['submitted'] .= theme('rdf_metadata', array('metadata' => array($date_attributes)));
}
$title_mapping = $mapping->getPreparedFieldMapping('title');
if (!empty($title_mapping)) {
@@ -577,6 +519,13 @@ function rdf_preprocess_comment(&$variables) {
$variables['rdf_metadata_attributes'][] = $parent_comment_attributes;
}
}
+ // Adds RDF metadata markup above comment body.
+ if (!empty($variables['rdf_metadata_attributes'])) {
+ if (!isset($variables['content']['comment_body']['#prefix'])) {
+ $variables['content']['comment_body']['#prefix'] = '';
+ }
+ $variables['content']['comment_body']['#prefix'] = theme('rdf_metadata', array('metadata' => $variables['rdf_metadata_attributes'])) . $variables['content']['comment_body']['#prefix'];
+ }
}
/**
@@ -642,68 +591,6 @@ function rdf_preprocess_image(&$variables) {
$variables['attributes']['typeof'] = array('foaf:Image');
}
-/**
- * Returns HTML for a template variable wrapped in an HTML element with the
- * RDF attributes.
- *
- * This is called by rdf_process() shortly before the theme system renders
- * a template file. It is called once for each template variable for which
- * additional attributes are needed. While template files are responsible for
- * rendering the attributes for the template's primary object (via the
- * $attributes variable), title (via the $title_attributes variable), and
- * content (via the $content_attributes variable), additional template
- * variables that need containing attributes are routed through this function,
- * allowing the template file to receive properly wrapped variables.
- *
- * Tip for themers: if you're already outputting a wrapper element around a
- * particular template variable in your template file, and if you don't want
- * an extra wrapper element, you can override this function to not wrap that
- * variable and instead print the following inside your template file:
- * @code
- * new Drupal\Core\Template\Attribute($rdf_template_variable_attributes[$variable_name])
- * @endcode
- *
- * @param $variables
- * An associative array containing:
- * - content: A string of content to be wrapped with attributes.
- * - attributes: An array of attributes to be placed on the wrapping element.
- * - context: An array of context information about the content to be wrapped:
- * - hook: The theme hook that will use the wrapped content. This
- * corresponds to the key within the theme registry for this template.
- * For example, if this content is about to be used in node.html.twig or
- * node-[type].html.twig, then the 'hook' is 'node'.
- * - variable_name: The name of the variable by which the template will
- * refer to this content. Each template file has documentation about
- * the variables it uses. For example, if this function is called in
- * preparing the $author variable for comment.html.twig, then the
- * 'variable_name' is 'author'.
- * - variables: The full array of variables about to be passed to the
- * template.
- * - inline: TRUE if the content contains only inline HTML elements and
- * therefore can be validly wrapped by a tag. FALSE if the content
- * might contain block level HTML elements and therefore cannot be validly
- * wrapped by a tag. Modules implementing preprocess functions that
- * set 'rdf_template_variable_attributes' for a particular template
- * variable that might contain block level HTML must also implement
- * hook_preprocess_HOOK() for theme_rdf_template_variable_wrapper() and set
- * 'inline' to FALSE for that context. Themes that render normally inline
- * content with block level HTML must similarly implement
- * hook_preprocess_HOOK() for theme_rdf_template_variable_wrapper() and set
- * 'inline' accordingly.
- *
- * @see rdf_process()
- * @ingroup themeable
- * @ingroup rdf
- */
-function theme_rdf_template_variable_wrapper($variables) {
- $output = $variables['content'];
- if (!empty($output) && !empty($variables['attributes'])) {
- $attributes = new Attribute($variables['attributes']);
- $output = $variables['inline'] ? "$output" : "$output
";
- }
- return $output;
-}
-
/**
* Returns HTML for a series of empty spans for exporting RDF metadata in RDFa.
*