--- library/Zend/Tool/Project/Provider/Layout.php (revision 24131) +++ library/Zend/Tool/Project/Provider/Layout.php (working copy) @@ -33,6 +33,7 @@ */ class Zend_Tool_Project_Provider_Layout extends Zend_Tool_Project_Provider_Abstract implements Zend_Tool_Framework_Provider_Pretendable { + protected $_layoutPath = 'APPLICATION_PATH "/layouts/scripts/"'; public static function createResource(Zend_Tool_Project_Profile $profile, $layoutName = 'layout') { @@ -62,25 +63,18 @@ { $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.'); - } - + $applicationConfigResource = $this->_getApplicationConfigResource($profile); $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->addStringItem('resources.layout.layoutPath', $this->_layoutPath, 'production', false); $applicationConfigResource->create(); $layoutScriptFile = self::createResource($profile); @@ -95,15 +89,40 @@ $this->_registry->getResponse()->appendContent('A layout entry has been added to the application config file.'); } - - + $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('A layout resource already disabled.'); + return; + } + + $applicationConfigResource->removeStringItem('resources.layout.layoutPath', $this->_layoutPath, 'production', false); + $applicationConfigResource->create(); + + $layoutScriptFile = self::createResource($profile); + + $layoutScriptFile->create(); + + $this->_registry->getResponse()->appendContent( + 'Layouts have been disabled.' + ); } + protected function _getApplicationConfigResource($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; + } }