Current File : /home/k/a/r/karenpetzb/www/items/category/Layout.php.tar |
home/karenpetzb/library/Zend/Layout.php 0000604 00000044502 15071176700 0014200 0 ustar 00 <?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Layout
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Layout.php 13017 2008-12-04 15:29:24Z doctorrock83 $
*/
/**
* Provide Layout support for MVC applications
*
* @category Zend
* @package Zend_Layout
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Layout
{
/**
* Placeholder container for layout variables
* @var Zend_View_Helper_Placeholder_Container
*/
protected $_container;
/**
* Key used to store content from 'default' named response segment
* @var string
*/
protected $_contentKey = 'content';
/**
* Are layouts enabled?
* @var bool
*/
protected $_enabled = true;
/**
* Helper class
* @var string
*/
protected $_helperClass = 'Zend_Layout_Controller_Action_Helper_Layout';
/**
* Inflector used to resolve layout script
* @var Zend_Filter_Inflector
*/
protected $_inflector;
/**
* Flag: is inflector enabled?
* @var bool
*/
protected $_inflectorEnabled = true;
/**
* Inflector target
* @var string
*/
protected $_inflectorTarget = ':script.:suffix';
/**
* Layout view
* @var string
*/
protected $_layout = 'layout';
/**
* Layout view script path
* @var string
*/
protected $_viewScriptPath = null;
protected $_viewBasePath = null;
protected $_viewBasePrefix = 'Layout_View';
/**
* Flag: is MVC integration enabled?
* @var bool
*/
protected $_mvcEnabled = true;
/**
* Instance registered with MVC, if any
* @var Zend_Layout
*/
protected static $_mvcInstance;
/**
* Flag: is MVC successful action only flag set?
* @var bool
*/
protected $_mvcSuccessfulActionOnly = true;
/**
* Plugin class
* @var string
*/
protected $_pluginClass = 'Zend_Layout_Controller_Plugin_Layout';
/**
* @var Zend_View_Interface
*/
protected $_view;
/**
* View script suffix for layout script
* @var string
*/
protected $_viewSuffix = 'phtml';
/**
* Constructor
*
* Accepts either:
* - A string path to layouts
* - An array of options
* - A Zend_Config object with options
*
* Layout script path, either as argument or as key in options, is
* required.
*
* If mvcEnabled flag is false from options, simply sets layout script path.
* Otherwise, also instantiates and registers action helper and controller
* plugin.
*
* @param string|array|Zend_Config $options
* @return void
*/
public function __construct($options = null, $initMvc = false)
{
if (null !== $options) {
if (is_string($options)) {
$this->setLayoutPath($options);
} elseif (is_array($options)) {
$this->setOptions($options);
} elseif ($options instanceof Zend_Config) {
$this->setConfig($options);
} else {
require_once 'Zend/Layout/Exception.php';
throw new Zend_Layout_Exception('Invalid option provided to constructor');
}
}
$this->_initVarContainer();
if ($initMvc) {
$this->_setMvcEnabled(true);
$this->_initMvc();
} else {
$this->_setMvcEnabled(false);
}
}
/**
* Static method for initialization with MVC support
*
* @param string|array|Zend_Config $options
* @return Zend_Layout
*/
public static function startMvc($options = null)
{
if (null === self::$_mvcInstance) {
self::$_mvcInstance = new self($options, true);
} elseif (is_string($options)) {
self::$_mvcInstance->setLayoutPath($options);
} else {
self::$_mvcInstance->setOptions($options);
}
return self::$_mvcInstance;
}
/**
* Retrieve MVC instance of Zend_Layout object
*
* @return Zend_Layout|null
*/
public static function getMvcInstance()
{
return self::$_mvcInstance;
}
/**
* Reset MVC instance
*
* Unregisters plugins and helpers, and destroys MVC layout instance.
*
* @return void
*/
public static function resetMvcInstance()
{
if (null !== self::$_mvcInstance) {
$layout = self::$_mvcInstance;
$pluginClass = $layout->getPluginClass();
$front = Zend_Controller_Front::getInstance();
if ($front->hasPlugin($pluginClass)) {
$front->unregisterPlugin($pluginClass);
}
if (Zend_Controller_Action_HelperBroker::hasHelper('layout')) {
Zend_Controller_Action_HelperBroker::removeHelper('layout');
}
unset($layout);
self::$_mvcInstance = null;
}
}
/**
* Set options en masse
*
* @param array $options
* @return void
*/
public function setOptions($options)
{
if ($options instanceof Zend_Config) {
$options = $options->toArray();
} elseif (!is_array($options)) {
require_once 'Zend/Layout/Exception.php';
throw new Zend_Layout_Exception('setOptions() expects either an array or a Zend_Config object');
}
foreach ($options as $key => $value) {
$method = 'set' . ucfirst($key);
if (method_exists($this, $method)) {
$this->$method($value);
}
}
}
/**
* Initialize MVC integration
*
* @return void
*/
protected function _initMvc()
{
$this->_initPlugin();
$this->_initHelper();
}
/**
* Initialize front controller plugin
*
* @return void
*/
protected function _initPlugin()
{
$pluginClass = $this->getPluginClass();
require_once 'Zend/Controller/Front.php';
$front = Zend_Controller_Front::getInstance();
if (!$front->hasPlugin($pluginClass)) {
require_once 'Zend/Loader.php';
Zend_Loader::loadClass($pluginClass);
$front->registerPlugin(
// register to run last | BUT before the ErrorHandler (if its available)
new $pluginClass($this),
99
);
}
}
/**
* Initialize action helper
*
* @return void
*/
protected function _initHelper()
{
$helperClass = $this->getHelperClass();
require_once 'Zend/Controller/Action/HelperBroker.php';
if (!Zend_Controller_Action_HelperBroker::hasHelper('layout')) {
require_once 'Zend/Loader.php';
Zend_Loader::loadClass($helperClass);
Zend_Controller_Action_HelperBroker::getStack()->offsetSet(-90, new $helperClass($this));
}
}
/**
* Set options from a config object
*
* @param Zend_Config $config
* @return Zend_Layout
*/
public function setConfig(Zend_Config $config)
{
$this->setOptions($config->toArray());
return $this;
}
/**
* Initialize placeholder container for layout vars
*
* @return Zend_View_Helper_Placeholder_Container
*/
protected function _initVarContainer()
{
if (null === $this->_container) {
require_once 'Zend/View/Helper/Placeholder/Registry.php';
$this->_container = Zend_View_Helper_Placeholder_Registry::getRegistry()->getContainer(__CLASS__);
}
return $this->_container;
}
/**
* Set layout script to use
*
* Note: enables layout.
*
* @param string $name
* @return Zend_Layout
*/
public function setLayout($name)
{
$this->_layout = (string) $name;
$this->enableLayout();
return $this;
}
/**
* Get current layout script
*
* @return string
*/
public function getLayout()
{
return $this->_layout;
}
/**
* Disable layout
*
* @return Zend_Layout
*/
public function disableLayout()
{
$this->_enabled = false;
return $this;
}
/**
* Enable layout
*
* @return Zend_Layout
*/
public function enableLayout()
{
$this->_enabled = true;
return $this;
}
/**
* Is layout enabled?
*
* @return bool
*/
public function isEnabled()
{
return $this->_enabled;
}
public function setViewBasePath($path, $prefix = 'Layout_View')
{
$this->_viewBasePath = $path;
$this->_viewBasePrefix = $prefix;
return $this;
}
public function getViewBasePath()
{
return $this->_viewBasePath;
}
public function setViewScriptPath($path)
{
$this->_viewScriptPath = $path;
return $this;
}
public function getViewScriptPath()
{
return $this->_viewScriptPath;
}
/**
* Set layout script path
*
* @param string $path
* @return Zend_Layout
*/
public function setLayoutPath($path)
{
return $this->setViewScriptPath($path);
}
/**
* Get current layout script path
*
* @return string
*/
public function getLayoutPath()
{
return $this->getViewScriptPath();
}
/**
* Set content key
*
* Key in namespace container denoting default content
*
* @param string $contentKey
* @return Zend_Layout
*/
public function setContentKey($contentKey)
{
$this->_contentKey = (string) $contentKey;
return $this;
}
/**
* Retrieve content key
*
* @return string
*/
public function getContentKey()
{
return $this->_contentKey;
}
/**
* Set MVC enabled flag
*
* @param bool $mvcEnabled
* @return Zend_Layout
*/
protected function _setMvcEnabled($mvcEnabled)
{
$this->_mvcEnabled = ($mvcEnabled) ? true : false;
return $this;
}
/**
* Retrieve MVC enabled flag
*
* @return bool
*/
public function getMvcEnabled()
{
return $this->_mvcEnabled;
}
/**
* Set MVC Successful Action Only flag
*
* @param bool $successfulActionOnly
* @return Zend_Layout
*/
public function setMvcSuccessfulActionOnly($successfulActionOnly)
{
$this->_mvcSuccessfulActionOnly = ($successfulActionOnly) ? true : false;
return $this;
}
/**
* Get MVC Successful Action Only Flag
*
* @return bool
*/
public function getMvcSuccessfulActionOnly()
{
return $this->_mvcSuccessfulActionOnly;
}
/**
* Set view object
*
* @param Zend_View_Interface $view
* @return Zend_Layout
*/
public function setView(Zend_View_Interface $view)
{
$this->_view = $view;
return $this;
}
/**
* Retrieve helper class
*
* @return string
*/
public function getHelperClass()
{
return $this->_helperClass;
}
/**
* Set helper class
*
* @param string $helperClass
* @return Zend_Layout
*/
public function setHelperClass($helperClass)
{
$this->_helperClass = (string) $helperClass;
return $this;
}
/**
* Retrieve plugin class
*
* @return string
*/
public function getPluginClass()
{
return $this->_pluginClass;
}
/**
* Set plugin class
*
* @param string $pluginClass
* @return Zend_Layout
*/
public function setPluginClass($pluginClass)
{
$this->_pluginClass = (string) $pluginClass;
return $this;
}
/**
* Get current view object
*
* If no view object currently set, retrieves it from the ViewRenderer.
*
* @todo Set inflector from view renderer at same time
* @return Zend_View_Interface
*/
public function getView()
{
if (null === $this->_view) {
require_once 'Zend/Controller/Action/HelperBroker.php';
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
if (null === $viewRenderer->view) {
$viewRenderer->initView();
}
$this->setView($viewRenderer->view);
}
return $this->_view;
}
/**
* Set layout view script suffix
*
* @param string $viewSuffix
* @return Zend_Layout
*/
public function setViewSuffix($viewSuffix)
{
$this->_viewSuffix = (string) $viewSuffix;
return $this;
}
/**
* Retrieve layout view script suffix
*
* @return string
*/
public function getViewSuffix()
{
return $this->_viewSuffix;
}
/**
* Retrieve inflector target
*
* @return string
*/
public function getInflectorTarget()
{
return $this->_inflectorTarget;
}
/**
* Set inflector target
*
* @param string $inflectorTarget
* @return Zend_Layout
*/
public function setInflectorTarget($inflectorTarget)
{
$this->_inflectorTarget = (string) $inflectorTarget;
return $this;
}
/**
* Set inflector to use when resolving layout names
*
* @param Zend_Filter_Inflector $inflector
* @return Zend_Layout
*/
public function setInflector(Zend_Filter_Inflector $inflector)
{
$this->_inflector = $inflector;
return $this;
}
/**
* Retrieve inflector
*
* @return Zend_Filter_Inflector
*/
public function getInflector()
{
if (null === $this->_inflector) {
require_once 'Zend/Filter/Inflector.php';
$inflector = new Zend_Filter_Inflector();
$inflector->setTargetReference($this->_inflectorTarget)
->addRules(array(':script' => array('Word_CamelCaseToDash', 'StringToLower')))
->setStaticRuleReference('suffix', $this->_viewSuffix);
$this->setInflector($inflector);
}
return $this->_inflector;
}
/**
* Enable inflector
*
* @return Zend_Layout
*/
public function enableInflector()
{
$this->_inflectorEnabled = true;
return $this;
}
/**
* Disable inflector
*
* @return Zend_Layout
*/
public function disableInflector()
{
$this->_inflectorEnabled = false;
return $this;
}
/**
* Return status of inflector enabled flag
*
* @return bool
*/
public function inflectorEnabled()
{
return $this->_inflectorEnabled;
}
/**
* Set layout variable
*
* @param string $key
* @param mixed $value
* @return void
*/
public function __set($key, $value)
{
$this->_container[$key] = $value;
}
/**
* Get layout variable
*
* @param string $key
* @return mixed
*/
public function __get($key)
{
if (isset($this->_container[$key])) {
return $this->_container[$key];
}
return null;
}
/**
* Is a layout variable set?
*
* @param string $key
* @return bool
*/
public function __isset($key)
{
return (isset($this->_container[$key]));
}
/**
* Unset a layout variable?
*
* @param string $key
* @return void
*/
public function __unset($key)
{
if (isset($this->_container[$key])) {
unset($this->_container[$key]);
}
}
/**
* Assign one or more layout variables
*
* @param mixed $spec Assoc array or string key; if assoc array, sets each
* key as a layout variable
* @param mixed $value Value if $spec is a key
* @return Zend_Layout
* @throws Zend_Layout_Exception if non-array/string value passed to $spec
*/
public function assign($spec, $value = null)
{
if (is_array($spec)) {
$orig = $this->_container->getArrayCopy();
$merged = array_merge($orig, $spec);
$this->_container->exchangeArray($merged);
return $this;
}
if (is_string($spec)) {
$this->_container[$spec] = $value;
return $this;
}
require_once 'Zend/Layout/Exception.php';
throw new Zend_Layout_Exception('Invalid values passed to assign()');
}
/**
* Render layout
*
* Sets internal script path as last path on script path stack, assigns
* layout variables to view, determines layout name using inflector, and
* renders layout view script.
*
* $name will be passed to the inflector as the key 'script'.
*
* @param mixed $name
* @return mixed
*/
public function render($name = null)
{
if (null === $name) {
$name = $this->getLayout();
}
if ($this->inflectorEnabled() && (null !== ($inflector = $this->getInflector())))
{
$name = $this->_inflector->filter(array('script' => $name));
}
$view = $this->getView();
if (null !== ($path = $this->getViewScriptPath())) {
if (method_exists($view, 'addScriptPath')) {
$view->addScriptPath($path);
} else {
$view->setScriptPath($path);
}
} elseif (null !== ($path = $this->getViewBasePath())) {
$view->addBasePath($path, $this->_viewBasePrefix);
}
return $view->render($name);
}
}
home/karenpetzb/library/Zend/Layout/Controller/Action/Helper/Layout.php 0000604 00000011515 15071454676 0022245 0 ustar 00 <?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Controller
* @subpackage Zend_Controller_Action
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
* @version $Id: Layout.php 11508 2008-09-24 14:21:30Z doctorrock83 $
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/** Zend_Controller_Action_Helper_Abstract */
require_once 'Zend/Controller/Action/Helper/Abstract.php';
/**
* Helper for interacting with Zend_Layout objects
*
* @uses Zend_Controller_Action_Helper_Abstract
* @category Zend
* @package Zend_Controller
* @subpackage Zend_Controller_Action
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Layout_Controller_Action_Helper_Layout extends Zend_Controller_Action_Helper_Abstract
{
/**
* @var Zend_Controller_Front
*/
protected $_frontController;
/**
* @var Zend_Layout
*/
protected $_layout;
/**
* @var bool
*/
protected $_isActionControllerSuccessful = false;
/**
* Constructor
*
* @param Zend_Layout $layout
* @return void
*/
public function __construct(Zend_Layout $layout = null)
{
if (null !== $layout) {
$this->setLayoutInstance($layout);
} else {
/**
* @see Zend_Layout
*/
require_once 'Zend/Layout.php';
$layout = Zend_Layout::getMvcInstance();
}
if (null !== $layout) {
$pluginClass = $layout->getPluginClass();
$front = $this->getFrontController();
if ($front->hasPlugin($pluginClass)) {
$plugin = $front->getPlugin($pluginClass);
$plugin->setLayoutActionHelper($this);
}
}
}
public function init()
{
$this->_isActionControllerSuccessful = false;
}
/**
* Get front controller instance
*
* @return Zend_Controller_Front
*/
public function getFrontController()
{
if (null === $this->_frontController) {
/**
* @see Zend_Controller_Front
*/
require_once 'Zend/Controller/Front.php';
$this->_frontController = Zend_Controller_Front::getInstance();
}
return $this->_frontController;
}
/**
* Get layout object
*
* @return Zend_Layout
*/
public function getLayoutInstance()
{
if (null === $this->_layout) {
/**
* @see Zend_Layout
*/
require_once 'Zend/Layout.php';
if (null === ($this->_layout = Zend_Layout::getMvcInstance())) {
$this->_layout = new Zend_Layout();
}
}
return $this->_layout;
}
/**
* Set layout object
*
* @param Zend_Layout $layout
* @return Zend_Layout_Controller_Action_Helper_Layout
*/
public function setLayoutInstance(Zend_Layout $layout)
{
$this->_layout = $layout;
return $this;
}
/**
* Mark Action Controller (according to this plugin) as Running successfully
*
* @return Zend_Layout_Controller_Action_Helper_Layout
*/
public function postDispatch()
{
$this->_isActionControllerSuccessful = true;
return $this;
}
/**
* Did the previous action successfully complete?
*
* @return bool
*/
public function isActionControllerSuccessful()
{
return $this->_isActionControllerSuccessful;
}
/**
* Strategy pattern; call object as method
*
* Returns layout object
*
* @return Zend_Layout
*/
public function direct()
{
return $this->getLayoutInstance();
}
/**
* Proxy method calls to layout object
*
* @param string $method
* @param array $args
* @return mixed
*/
public function __call($method, $args)
{
$layout = $this->getLayoutInstance();
if (method_exists($layout, $method)) {
return call_user_func_array(array($layout, $method), $args);
}
require_once 'Zend/Layout/Exception.php';
throw new Zend_Layout_Exception(sprintf("Invalid method '%s' called on layout action helper", $method));
}
}
home/karenpetzb/library/Zend/Layout/Controller/Plugin/Layout.php 0000604 00000010270 15071545104 0021027 0 ustar 00 <?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Controller
* @subpackage Plugins
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/** Zend_Controller_Plugin_Abstract */
require_once 'Zend/Controller/Plugin/Abstract.php';
/**
* Render layouts
*
* @uses Zend_Controller_Plugin_Abstract
* @category Zend
* @package Zend_Controller
* @subpackage Plugins
* @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Layout.php 8064 2008-02-16 10:58:39Z thomas $
*/
class Zend_Layout_Controller_Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
protected $_layoutActionHelper = null;
/**
* @var Zend_Layout
*/
protected $_layout;
/**
* Constructor
*
* @param Zend_Layout $layout
* @return void
*/
public function __construct(Zend_Layout $layout = null)
{
if (null !== $layout) {
$this->setLayout($layout);
}
}
/**
* Retrieve layout object
*
* @return Zend_Layout
*/
public function getLayout()
{
return $this->_layout;
}
/**
* Set layout object
*
* @param Zend_Layout $layout
* @return Zend_Layout_Controller_Plugin_Layout
*/
public function setLayout(Zend_Layout $layout)
{
$this->_layout = $layout;
return $this;
}
/**
* Set layout action helper
*
* @param Zend_Layout_Controller_Action_Helper_Layout $layoutActionHelper
* @return Zend_Layout_Controller_Plugin_Layout
*/
public function setLayoutActionHelper(Zend_Layout_Controller_Action_Helper_Layout $layoutActionHelper)
{
$this->_layoutActionHelper = $layoutActionHelper;
return $this;
}
/**
* Retrieve layout action helper
*
* @return Zend_Layout_Controller_Action_Helper_Layout
*/
public function getLayoutActionHelper()
{
return $this->_layoutActionHelper;
}
/**
* postDispatch() plugin hook -- render layout
*
* @param Zend_Controller_Request_Abstract $request
* @return void
*/
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$layout = $this->getLayout();
$helper = $this->getLayoutActionHelper();
// Return early if forward detected
if (!$request->isDispatched()
|| ($layout->getMvcSuccessfulActionOnly()
&& (!empty($helper) && !$helper->isActionControllerSuccessful())))
{
return;
}
// Return early if layout has been disabled
if (!$layout->isEnabled()) {
return;
}
$response = $this->getResponse();
$content = $response->getBody(true);
$contentKey = $layout->getContentKey();
if (isset($content['default'])) {
$content[$contentKey] = $content['default'];
}
if ('default' != $contentKey) {
unset($content['default']);
}
$layout->assign($content);
$fullContent = null;
$obStartLevel = ob_get_level();
try {
$fullContent = $layout->render();
$response->setBody($fullContent);
} catch (Exception $e) {
while (ob_get_level() > $obStartLevel) {
$fullContent .= ob_get_clean();
}
$request->setParam('layoutFullContent', $fullContent);
$request->setParam('layoutContent', $layout->content);
$response->setBody(null);
throw $e;
}
}
}