mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-10-31 11:24:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			219 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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_View
 | |
|  * @subpackage Helper
 | |
|  * @copyright  Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 | |
|  * @version    $Id$
 | |
|  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 | |
|  */
 | |
| 
 | |
| /** Zend_View_Helper_Placeholder_Container_Standalone */
 | |
| 
 | |
| /**
 | |
|  * Helper for setting and retrieving title element for HTML head
 | |
|  *
 | |
|  * @uses       Zend_View_Helper_Placeholder_Container_Standalone
 | |
|  * @package    Zend_View
 | |
|  * @subpackage Helper
 | |
|  * @copyright  Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 | |
|  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 | |
|  */
 | |
| class Zend_View_Helper_HeadTitle extends Zend_View_Helper_Placeholder_Container_Standalone
 | |
| {
 | |
|     /**
 | |
|      * Registry key for placeholder
 | |
|      * @var string
 | |
|      */
 | |
|     protected $_regKey = 'Zend_View_Helper_HeadTitle';
 | |
| 
 | |
|     /**
 | |
|      * Whether or not auto-translation is enabled
 | |
|      * @var boolean
 | |
|      */
 | |
|     protected $_translate = false;
 | |
| 
 | |
|     /**
 | |
|      * Translation object
 | |
|      *
 | |
|      * @var Zend_Translate_Adapter
 | |
|      */
 | |
|     protected $_translator;
 | |
| 
 | |
|     /**
 | |
|      * Default title rendering order (i.e. order in which each title attached)
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     protected $_defaultAttachOrder = null;
 | |
| 
 | |
|     /**
 | |
|      * Retrieve placeholder for title element and optionally set state
 | |
|      *
 | |
|      * @param  string $title
 | |
|      * @param  string $setType
 | |
|      * @return Zend_View_Helper_HeadTitle
 | |
|      */
 | |
|     public function headTitle($title = null, $setType = null)
 | |
|     {
 | |
|         if (null === $setType) {
 | |
|             $setType = (null === $this->getDefaultAttachOrder())
 | |
|                      ? Zend_View_Helper_Placeholder_Container_Abstract::APPEND
 | |
|                      : $this->getDefaultAttachOrder();
 | |
|         }
 | |
|         $title = (string) $title;
 | |
|         if ($title !== '') {
 | |
|             if ($setType == Zend_View_Helper_Placeholder_Container_Abstract::SET) {
 | |
|                 $this->set($title);
 | |
|             } elseif ($setType == Zend_View_Helper_Placeholder_Container_Abstract::PREPEND) {
 | |
|                 $this->prepend($title);
 | |
|             } else {
 | |
|                 $this->append($title);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set a default order to add titles
 | |
|      *
 | |
|      * @param string $setType
 | |
|      */
 | |
|     public function setDefaultAttachOrder($setType)
 | |
|     {
 | |
|         if (!in_array($setType, array(
 | |
|             Zend_View_Helper_Placeholder_Container_Abstract::APPEND,
 | |
|             Zend_View_Helper_Placeholder_Container_Abstract::SET,
 | |
|             Zend_View_Helper_Placeholder_Container_Abstract::PREPEND
 | |
|         ))) {
 | |
|             throw new Zend_View_Exception("You must use a valid attach order: 'PREPEND', 'APPEND' or 'SET'");
 | |
|         }
 | |
| 
 | |
|         $this->_defaultAttachOrder = $setType;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the default attach order, if any.
 | |
|      *
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function getDefaultAttachOrder()
 | |
|     {
 | |
|         return $this->_defaultAttachOrder;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Sets a translation Adapter for translation
 | |
|      *
 | |
|      * @param  Zend_Translate|Zend_Translate_Adapter $translate
 | |
|      * @return Zend_View_Helper_HeadTitle
 | |
|      */
 | |
|     public function setTranslator($translate)
 | |
|     {
 | |
|         if ($translate instanceof Zend_Translate_Adapter) {
 | |
|             $this->_translator = $translate;
 | |
|         } elseif ($translate instanceof Zend_Translate) {
 | |
|             $this->_translator = $translate->getAdapter();
 | |
|         } else {
 | |
|             $e = new Zend_View_Exception("You must set an instance of Zend_Translate or Zend_Translate_Adapter");
 | |
|             $e->setView($this->view);
 | |
|             throw $e;
 | |
|         }
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Retrieve translation object
 | |
|      *
 | |
|      * If none is currently registered, attempts to pull it from the registry
 | |
|      * using the key 'Zend_Translate'.
 | |
|      *
 | |
|      * @return Zend_Translate_Adapter|null
 | |
|      */
 | |
|     public function getTranslator()
 | |
|     {
 | |
|         if (null === $this->_translator) {
 | |
|             if (Zend_Registry::isRegistered('Zend_Translate')) {
 | |
|                 $this->setTranslator(Zend_Registry::get('Zend_Translate'));
 | |
|             }
 | |
|         }
 | |
|         return $this->_translator;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Enables translation
 | |
|      *
 | |
|      * @return Zend_View_Helper_HeadTitle
 | |
|      */
 | |
|     public function enableTranslation()
 | |
|     {
 | |
|         $this->_translate = true;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Disables translation
 | |
|      *
 | |
|      * @return Zend_View_Helper_HeadTitle
 | |
|      */
 | |
|     public function disableTranslation()
 | |
|     {
 | |
|         $this->_translate = false;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Turn helper into string
 | |
|      *
 | |
|      * @param  string|null $indent
 | |
|      * @param  string|null $locale
 | |
|      * @return string
 | |
|      */
 | |
|     public function toString($indent = null, $locale = null)
 | |
|     {
 | |
|         $indent = (null !== $indent)
 | |
|                 ? $this->getWhitespace($indent)
 | |
|                 : $this->getIndent();
 | |
| 
 | |
|         $items = array();
 | |
| 
 | |
|         if($this->_translate && $translator = $this->getTranslator()) {
 | |
|             foreach ($this as $item) {
 | |
|                 $items[] = $translator->translate($item, $locale);
 | |
|             }
 | |
|         } else {
 | |
|             foreach ($this as $item) {
 | |
|                 $items[] = $item;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         $separator = $this->getSeparator();
 | |
|         $output = '';
 | |
|         if(($prefix = $this->getPrefix())) {
 | |
|             $output  .= $prefix;
 | |
|         }
 | |
|         $output .= implode($separator, $items);
 | |
|         if(($postfix = $this->getPostfix())) {
 | |
|             $output .= $postfix;
 | |
|         }
 | |
| 
 | |
|         $output = ($this->_autoEscape) ? $this->_escape($output) : $output;
 | |
| 
 | |
|         return $indent . '<title>' . $output . '</title>';
 | |
|     }
 | |
| }
 |