diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index 440cb1f4..73c16409 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -203,6 +203,14 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid */ private static $enforce_strict_hierarchy = true; + /** + * The value used for the meta generator tag. Leave blank to omit the tag. + * + * @config + * @var string + */ + private static $meta_generator = 'SilverStripe - http://silverstripe.org'; + protected $_cache_statusFlags = null; /** @@ -1298,7 +1306,10 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid $tags .= "" . $this->Title . "\n"; } - $tags .= "\n"; + $generator = trim(Config::inst()->get('SiteTree', 'meta_generator')); + if (!empty($generator)) { + $tags .= "\n"; + } $charset = Config::inst()->get('ContentNegotiator', 'encoding'); $tags .= "\n"; diff --git a/tests/model/SiteTreeTest.php b/tests/model/SiteTreeTest.php index 863e290b..b8ebc8d1 100644 --- a/tests/model/SiteTreeTest.php +++ b/tests/model/SiteTreeTest.php @@ -889,6 +889,37 @@ class SiteTreeTest extends SapphireTest { $page = SiteTree::get()->byID($page->ID); $this->assertEquals(null, $page->getField('MenuTitle')); } + + public function testMetaTagGeneratorDisabling() { + $generator = Config::inst()->get('SiteTree', 'meta_generator'); + + $page = new SiteTreeTest_PageNode(); + + $meta = $page->MetaTags(); + $this->assertEquals( + 1, + preg_match('/.*meta name="generator" content="SilverStripe - http:\/\/silverstripe.org".*/', $meta), + 'test default functionality - uses value from Config'); + + // test proper escaping of quotes in attribute value + Config::inst()->update('SiteTree', 'meta_generator', 'Generator with "quotes" in it'); + $meta = $page->MetaTags(); + $this->assertEquals( + 1, + preg_match('/.*meta name="generator" content="Generator with "quotes" in it".*/', $meta), + 'test proper escaping of values from Config'); + + // test empty generator - no tag should appear at all + Config::inst()->update('SiteTree', 'meta_generator', ''); + $meta = $page->MetaTags(); + $this->assertEquals( + 0, + preg_match('/.*meta name=.generator..*/', $meta), + 'test blank value means no tag generated'); + + // reset original value + Config::inst()->update('SiteTree', 'meta_generator', $generator); + } }