From 63312113a25ce9ad629c6771bef1fa0767955c12 Mon Sep 17 00:00:00 2001 From: David Rothstein Date: Wed, 25 Dec 2013 17:39:50 -0500 Subject: [PATCH] Issue #2011918 by jesse.d, Liam Morland, scor: Titles are often double-escaped (including in the content attribute of the dc:title meta element for nodes). --- modules/rdf/rdf.module | 2 +- modules/rdf/rdf.test | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/rdf/rdf.module b/modules/rdf/rdf.module index e22d5a93f40..877b598cdbf 100644 --- a/modules/rdf/rdf.module +++ b/modules/rdf/rdf.module @@ -484,7 +484,7 @@ function rdf_preprocess_node(&$variables) { $element = array( '#tag' => 'meta', '#attributes' => array( - 'content' => $variables['title'], + 'content' => $variables['node']->title, 'about' => $variables['node_url'], ), ); diff --git a/modules/rdf/rdf.test b/modules/rdf/rdf.test index 4d73377f550..0d1b023a4df 100644 --- a/modules/rdf/rdf.test +++ b/modules/rdf/rdf.test @@ -313,13 +313,18 @@ class RdfMappingDefinitionTestCase extends TaxonomyWebTestCase { */ function testAttributesInMarkup2() { $type = $this->drupalCreateContentType(array('type' => 'test_bundle_hook_install')); - $node = $this->drupalCreateNode(array('type' => 'test_bundle_hook_install')); + // Create node with single quotation mark title to ensure it does not get + // escaped more than once. + $node = $this->drupalCreateNode(array( + 'type' => 'test_bundle_hook_install', + 'title' => $this->randomName(8) . "'", + )); $isoDate = date('c', $node->changed); $url = url('node/' . $node->nid); $this->drupalGet('node/' . $node->nid); // Ensure the mapping defined in rdf_module.test is used. - $test_bundle_title = $this->xpath("//meta[@property='dc:title' and @content='$node->title']"); + $test_bundle_title = $this->xpath('//meta[@property="dc:title" and @content="' . $node->title . '"]'); $test_bundle_meta = $this->xpath("//div[(@about='$url') and contains(@typeof, 'foo:mapping_install1') and contains(@typeof, 'bar:mapping_install2')]//span[contains(@property, 'dc:date') and contains(@property, 'dc:created') and @datatype='xsd:dateTime' and @content='$isoDate']"); $this->assertTrue(!empty($test_bundle_title), 'Property dc:title is present in meta tag.'); $this->assertTrue(!empty($test_bundle_meta), 'RDF type is present on post. Properties dc:date and dc:created are present on post date.');