From 556fa285833a1002824db228ac5a3888159a2f7b Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Fri, 10 May 2013 09:30:57 -0400 Subject: [PATCH] Resolving VUFIND-763: configurable generator meta tag. Thanks to Tom Misilo for the suggestion. --- config/vufind/config.ini | 2 ++ module/VuFind/src/VuFind/Config/Upgrade.php | 7 ++++ .../configs/customgenerator/config.ini | 2 ++ .../configs/defaultgenerator/config.ini | 2 ++ .../unit-tests/src/Config/UpgradeTest.php | 34 ++++++++++++++++++- .../src/VuFindTheme/Initializer.php | 7 ++++ .../src/VuFindTheme/ResourceContainer.php | 29 ++++++++++++++++ .../View/Helper/HeadThemeResources.php | 6 ++++ 8 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 module/VuFind/tests/fixtures/configs/customgenerator/config.ini create mode 100644 module/VuFind/tests/fixtures/configs/defaultgenerator/config.ini diff --git a/config/vufind/config.ini b/config/vufind/config.ini index 43293286683..1d05cc463db 100644 --- a/config/vufind/config.ini +++ b/config/vufind/config.ini @@ -74,6 +74,8 @@ sidebarOnLeft = false showBookBag = false ; Set the maximum amount of items allowed in the Book Bag - Default is 100 bookBagMaxSize = 100 +; Generator value to display in an HTML header <meta> tag: +generator = "VuFind 2.0" ; This section allows you to configure the mechanism used for storing user ; sessions. Available types: File, Memcache, Database. diff --git a/module/VuFind/src/VuFind/Config/Upgrade.php b/module/VuFind/src/VuFind/Config/Upgrade.php index 6f4817619ae..fb970256290 100644 --- a/module/VuFind/src/VuFind/Config/Upgrade.php +++ b/module/VuFind/src/VuFind/Config/Upgrade.php @@ -510,6 +510,13 @@ class Upgrade unset($newConfig['Statistics']['enabled']); } + // Update generator if it is default value: + if (isset($newConfig['Site']['generator']) + && $newConfig['Site']['generator'] == 'VuFind ' . $this->from + ) { + $newConfig['Site']['generator'] = 'VuFind ' . $this->to; + } + // Deal with shard settings (which may have to be moved to another file): $this->upgradeShardSettings(); diff --git a/module/VuFind/tests/fixtures/configs/customgenerator/config.ini b/module/VuFind/tests/fixtures/configs/customgenerator/config.ini new file mode 100644 index 00000000000..30491f29f9d --- /dev/null +++ b/module/VuFind/tests/fixtures/configs/customgenerator/config.ini @@ -0,0 +1,2 @@ +[Site] +generator = "Custom Generator" \ No newline at end of file diff --git a/module/VuFind/tests/fixtures/configs/defaultgenerator/config.ini b/module/VuFind/tests/fixtures/configs/defaultgenerator/config.ini new file mode 100644 index 00000000000..8d71fe49a1b --- /dev/null +++ b/module/VuFind/tests/fixtures/configs/defaultgenerator/config.ini @@ -0,0 +1,2 @@ +[Site] +generator = "VuFind defaultgenerator" \ No newline at end of file diff --git a/module/VuFind/tests/unit-tests/src/Config/UpgradeTest.php b/module/VuFind/tests/unit-tests/src/Config/UpgradeTest.php index 0e6ae3e8472..8940274523c 100644 --- a/module/VuFind/tests/unit-tests/src/Config/UpgradeTest.php +++ b/module/VuFind/tests/unit-tests/src/Config/UpgradeTest.php @@ -40,6 +40,13 @@ use VuFind\Config\Upgrade; */ class UpgradeTest extends \VuFindTest\Unit\TestCase { + /** + * Target upgrade version + * + * @var string + */ + protected $targetVersion = '2.0'; + /** * Get an upgrade object for the specified source version: * @@ -51,7 +58,7 @@ class UpgradeTest extends \VuFindTest\Unit\TestCase { $oldDir = realpath(__DIR__ . '/../../../fixtures/configs/' . $version); $rawDir = realpath(__DIR__ . '/../../../../../../config/vufind'); - return new Upgrade($version, '2.0', $oldDir, $rawDir); + return new Upgrade($version, $this->targetVersion, $oldDir, $rawDir); } /** @@ -144,4 +151,29 @@ class UpgradeTest extends \VuFindTest\Unit\TestCase { $this->checkVersion('1.4'); } + + /** + * Test generator upgrade. + * + * @return void + */ + public function testDefaultGenerator() + { + // We expect the upgrader to switch default values: + $upgrader = $this->getUpgrader('defaultgenerator'); + $upgrader->run(); + $results = $upgrader->getNewConfigs(); + $this->assertEquals( + 'VuFind ' . $this->targetVersion, + $results['config.ini']['Site']['generator'] + ); + + // We expect the upgrader not to change custom values: + $upgrader = $this->getUpgrader('customgenerator'); + $upgrader->run(); + $results = $upgrader->getNewConfigs(); + $this->assertEquals( + 'Custom Generator', $results['config.ini']['Site']['generator'] + ); + } } \ No newline at end of file diff --git a/module/VuFindTheme/src/VuFindTheme/Initializer.php b/module/VuFindTheme/src/VuFindTheme/Initializer.php index 0e3a1de337c..751ef013c21 100644 --- a/module/VuFindTheme/src/VuFindTheme/Initializer.php +++ b/module/VuFindTheme/src/VuFindTheme/Initializer.php @@ -91,6 +91,8 @@ class Initializer * selected through the user interface; each entry is a colon-separated * name:description pair, where name may be 'standard,' 'mobile,' or one of * the parameter-values from the alternate_themes array.</li> + * <li>generator - a Generator value to display in the HTML header + * (optional)</li> * </ul> * @param MvcEvent $event Zend MVC Event object */ @@ -320,6 +322,11 @@ class Initializer // Grab the resource manager for tracking CSS, JS, etc.: $resources = $this->serviceManager->get('VuFindTheme\ResourceContainer'); + // Set generator if necessary: + if (isset($this->config->generator)) { + $resources->setGenerator($this->config->generator); + } + // Apply the loaded theme settings in reverse for proper inheritance: foreach ($themes as $key=>$currentThemeInfo) { if (isset($currentThemeInfo['helpers'])) { diff --git a/module/VuFindTheme/src/VuFindTheme/ResourceContainer.php b/module/VuFindTheme/src/VuFindTheme/ResourceContainer.php index 2fcef78e932..0743a3e28d5 100644 --- a/module/VuFindTheme/src/VuFindTheme/ResourceContainer.php +++ b/module/VuFindTheme/src/VuFindTheme/ResourceContainer.php @@ -66,6 +66,13 @@ class ResourceContainer */ protected $encoding = 'UTF-8'; + /** + * Generator value for <meta> tag + * + * @var string + */ + protected $generator = ''; + /** * Add a CSS file. * @@ -165,4 +172,26 @@ class ResourceContainer { return $this->favicon; } + + /** + * Set the generator. + * + * @param string $generator New generator. + * + * @return void + */ + public function setGenerator($generator) + { + $this->generator = $generator; + } + + /** + * Get the generator. + * + * @return string + */ + public function getGenerator() + { + return $this->generator; + } } \ No newline at end of file diff --git a/module/VuFindTheme/src/VuFindTheme/View/Helper/HeadThemeResources.php b/module/VuFindTheme/src/VuFindTheme/View/Helper/HeadThemeResources.php index aefe2af4617..f20876903af 100644 --- a/module/VuFindTheme/src/VuFindTheme/View/Helper/HeadThemeResources.php +++ b/module/VuFindTheme/src/VuFindTheme/View/Helper/HeadThemeResources.php @@ -68,6 +68,12 @@ class HeadThemeResources extends \Zend\View\Helper\AbstractHelper 'Content-Type', 'text/html; charset=' . $this->container->getEncoding() ); + // Set up generator: + $generator = $this->container->getGenerator(); + if (!empty($generator)) { + $headMeta()->appendName('Generator', $generator); + } + // Load CSS (make sure we prepend them in the appropriate order; theme // resources should load before extras added by individual templates): $headLink = $this->getView()->plugin('headlink'); -- GitLab