diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Tool/Project/Provider/Layout.php --- a/web/lib/Zend/Tool/Project/Provider/Layout.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Tool/Project/Provider/Layout.php Thu Mar 21 19:50:53 2013 +0100 @@ -15,9 +15,9 @@ * @category Zend * @package Zend_Tool * @subpackage Framework - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Layout.php 20785 2010-01-31 09:43:03Z mikaelkael $ + * @version $Id: Layout.php 24593 2012-01-05 20:35:02Z matthew $ */ /** @@ -28,82 +28,113 @@ /** * @category Zend * @package Zend_Tool - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Tool_Project_Provider_Layout extends Zend_Tool_Project_Provider_Abstract implements Zend_Tool_Framework_Provider_Pretendable { - + /** + * @var string Layout path + */ + protected $_layoutPath = 'APPLICATION_PATH "/layouts/scripts/"'; + public static function createResource(Zend_Tool_Project_Profile $profile, $layoutName = 'layout') { $applicationDirectory = $profile->search('applicationDirectory'); $layoutDirectory = $applicationDirectory->search('layoutsDirectory'); - + if ($layoutDirectory == false) { $layoutDirectory = $applicationDirectory->createResource('layoutsDirectory'); } - + $layoutScriptsDirectory = $layoutDirectory->search('layoutScriptsDirectory'); - + if ($layoutScriptsDirectory == false) { $layoutScriptsDirectory = $layoutDirectory->createResource('layoutScriptsDirectory'); } - + $layoutScriptFile = $layoutScriptsDirectory->search('layoutScriptFile', array('layoutName' => 'layout')); if ($layoutScriptFile == false) { $layoutScriptFile = $layoutScriptsDirectory->createResource('layoutScriptFile', array('layoutName' => 'layout')); } - + return $layoutScriptFile; } - + public function enable() { $profile = $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); - + $applicationConfigResource = $profile->search('ApplicationConfigFile'); if (!$applicationConfigResource) { throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); } - + $zc = $applicationConfigResource->getAsZendConfig(); - - if (isset($zc->resources) && isset($zf->resources->layout)) { + + if (isset($zc->resources) && isset($zc->resources->layout)) { $this->_registry->getResponse()->appendContent('A layout resource already exists in this project\'s application configuration file.'); return; } - - $layoutPath = 'APPLICATION_PATH "/layouts/scripts/"'; - + if ($this->_registry->getRequest()->isPretend()) { $this->_registry->getResponse()->appendContent('Would add "resources.layout.layoutPath" key to the application config file.'); } else { - $applicationConfigResource->addStringItem('resources.layout.layoutPath', $layoutPath, 'production', false); - $applicationConfigResource->create(); + $applicationConfigResource->addStringItem('resources.layout.layoutPath', $this->_layoutPath, 'production', false); + $applicationConfigResource->create(); + + $this->_registry->getResponse()->appendContent('A layout entry has been added to the application config file.'); $layoutScriptFile = self::createResource($profile); - - $layoutScriptFile->create(); - - $this->_registry->getResponse()->appendContent( - 'Layouts have been enabled, and a default layout created at ' - . $layoutScriptFile->getPath() - ); - - $this->_registry->getResponse()->appendContent('A layout entry has been added to the application config file.'); + if (!$layoutScriptFile->exists()) { + $layoutScriptFile->create(); + $this->_registry->getResponse()->appendContent( + 'A default layout has been created at ' + . $layoutScriptFile->getPath() + ); + + } + + $this->_storeProfile(); } - - - } - + public function disable() { - // @todo + $profile = $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $applicationConfigResource = $this->_getApplicationConfigResource($profile); + $zc = $applicationConfigResource->getAsZendConfig(); + + if (isset($zc->resources) && !isset($zc->resources->layout)) { + $this->_registry->getResponse()->appendContent('No layout configuration exists in application config file.'); + return; + } + + if ($this->_registry->getRequest()->isPretend()) { + $this->_registry->getResponse()->appendContent('Would remove "resources.layout.layoutPath" key from the application config file.'); + } else { + + // Remove the resources.layout.layoutPath directive from application config + $applicationConfigResource->removeStringItem('resources.layout.layoutPath', $this->_layoutPath, 'production', false); + $applicationConfigResource->create(); + + // Tell the user about the good work we've done + $this->_registry->getResponse()->appendContent('Layout entry has been removed from the application config file.'); + + $this->_storeProfile(); + } + } + + protected function _getApplicationConfigResource(Zend_Tool_Project_Profile $profile) + { + $applicationConfigResource = $profile->search('ApplicationConfigFile'); + if (!$applicationConfigResource) { + throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); + } + + return $applicationConfigResource; } - - - }