--- library/Zend/Tool/Project/Provider/Layout.php (revision 24165) +++ library/Zend/Tool/Project/Provider/Layout.php (working copy) @@ -33,6 +33,10 @@ */ 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') { @@ -100,9 +104,35 @@ 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(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; + } }