--- 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;
}
-
-
-
}