Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** THead class file** @author Marcus Nyeholt <tanus@users.sourceforge.net> and Qiang Xue <qiang.xue@gmail.com>* @link http://www.pradosoft.com/* @copyright Copyright © 2005-2008 PradoSoft* @license http://www.pradosoft.com/license/* @version $Id: THead.php 2590 2008-12-10 11:34:24Z carlgmathisen $* @package System.Web.UI*//*** THead class** THead displays a head element on a page. It displays the content* enclosed in its body and the page title set by the* {@link setTitle Title} property. In addition, stylesheets and JavaScripts registered via* {@link TClientScriptManager::registerStyleSheet}, {@link TClientScriptManager::registerStyleSheetFile}* {@link TClientScriptManager::registerHeadJavaScript}, and* {@link TClientScriptManager::registerHeadJavaScriptFile} will also be displayed* in the head.* THead also manages and displays meta tags through its {@link getMetaTags MetaTags}* property. You can add a meta object to the collection in code dynamically,* or add it in template using the following syntax,* <code>* <com:THead>* <com:TMetaTag HttpEquiv="Pragma" Content="no-cache" />* <com:TMetaTag Name="keywords" Content="Prado" />* </com:THead>* </code>** Note, {@link TPage} has a property {@link TPage::getHead Head} that refers to* the THead control currently on the page. A page can have at most once THead* control. Although not required, it is recommended to place a THead on your page.* Without a THead on the page, stylesheets and javascripts in the current page* theme will not be rendered.** @author Marcus Nyeholt <tanus@users.sourceforge.net> and Qiang Xue <qiang.xue@gmail.com>* @version $Id: THead.php 2590 2008-12-10 11:34:24Z carlgmathisen $* @package System.Web.UI* @since 3.0*/class THead extends TControl{/*** @var TList list of meta name tags to be loaded by {@link THead}*/private $_metaTags=null;/*** Registers the head control with the current page.* This method is invoked when the control enters 'Init' stage.* The method raises 'Init' event.* If you override this method, be sure to call the parent implementation* so that the event handlers can be invoked.* @param TEventParameter event parameter to be passed to the event handlers*/public function onInit($param){parent::onInit($param);$this->getPage()->setHead($this);}/*** Processes an object that is created during parsing template.* This method adds TMetaTag components into the {@link getMetaTags MetaTags}* collection of the head control.* @param string|TComponent text string or component parsed and instantiated in template* @see createdOnTemplate*/public function addParsedObject($object){if($object instanceof TMetaTag)$this->getMetaTags()->add($object);elseparent::addParsedObject($object);}/*** @return string the page title.*/public function getTitle(){return $this->getViewState('Title','');}/*** Sets the page title.* This title will be rendered only if the {@link TPage::getTitle Title} property* of the page is empty.* @param string the page title.*/public function setTitle($value){$this->setViewState('Title',$value,'');}/*** @return string base URL of the page. This URL is rendered as the 'href' attribute of <base> tag. Defaults to ''.*/public function getBaseUrl(){return $this->getViewState('BaseUrl','');}/*** @param string base URL of the page. This URL is rendered as the 'href' attribute of <base> tag.*/public function setBaseUrl($url){$this->setViewState('BaseUrl',$url,'');}/*** @return string the URL for the shortcut icon of the page. Defaults to ''.*/public function getShortcutIcon(){return $this->getViewState('ShortcutIcon','');}/*** @param string the URL for the shortcut icon of the page.*/public function setShortcutIcon($url){$this->setViewState('ShortcutIcon',$url,'');}/*** @return TMetaTagCollection meta tag collection*/public function getMetaTags(){if(($metaTags=$this->getViewState('MetaTags',null))===null){$metaTags=new TMetaTagCollection;$this->setViewState('MetaTags',$metaTags,null);}return $metaTags;}/*** Renders the head control.* @param THtmlWriter the writer for rendering purpose.*/public function render($writer){$page=$this->getPage();$title=$this->getTitle();$writer->write("<head>\n<title>".THttpUtility::htmlEncode($title)."</title>\n");if(($baseUrl=$this->getBaseUrl())!=='')$writer->write('<base href="'.$baseUrl."\" />\n");if(($icon=$this->getShortcutIcon())!=='')$writer->write('<link rel="shortcut icon" href="'.$icon."\" />\n");if(($metaTags=$this->getMetaTags())!==null){foreach($metaTags as $metaTag){$metaTag->render($writer);$writer->writeLine();}}$cs=$page->getClientScript();$cs->renderStyleSheetFiles($writer);$cs->renderStyleSheets($writer);if($page->getClientSupportsJavaScript()){$cs->renderHeadScriptFiles($writer);$cs->renderHeadScripts($writer);}parent::render($writer);$writer->write("</head>\n");}}/*** TMetaTag class.** TMetaTag represents a meta tag appearing in a page head section.* You can set its {@link setID ID}, {@link setHttpEquiv HttpEquiv},* {@link setName Name}, {@link setContent Content}, {@link setScheme Scheme}* properties, which correspond to id, http-equiv, name, content, and scheme* attributes for a meta tag, respectively.** @author Qiang Xue <qiang.xue@gmail.com>* @version $Id: THead.php 2590 2008-12-10 11:34:24Z carlgmathisen $* @package System.Web.UI.WebControls* @since 3.0*/class TMetaTag extends TComponent{/*** @var string id of the meta tag*/private $_id='';/*** @var string http-equiv attribute of the meta tag*/private $_httpEquiv='';/*** @var string name attribute of the meta tag*/private $_name='';/*** @var string content attribute of the meta tag*/private $_content='';/*** @var string scheme attribute of the meta tag*/private $_scheme='';/*** @return string id of the meta tag*/public function getID(){return $this->_id;}/*** @param string id of the meta tag*/public function setID($value){$this->_id=$value;}/*** @return string http-equiv attribute of the meta tag*/public function getHttpEquiv(){return $this->_httpEquiv;}/*** @param string http-equiv attribute of the meta tag*/public function setHttpEquiv($value){$this->_httpEquiv=$value;}/*** @return string name attribute of the meta tag*/public function getName(){return $this->_name;}/*** @param string name attribute of the meta tag*/public function setName($value){$this->_name=$value;}/*** @return string content attribute of the meta tag*/public function getContent(){return $this->_content;}/*** @param string content attribute of the meta tag*/public function setContent($value){$this->_content=$value;}/*** @return string scheme attribute of the meta tag*/public function getScheme(){return $this->_scheme;}/*** @param string scheme attribute of the meta tag*/public function setScheme($value){$this->_scheme=$value;}/*** Renders the meta tag.* @param THtmlWriter writer for the rendering purpose*/public function render($writer){if($this->_id!=='')$writer->addAttribute('id',$this->_id);if($this->_name!=='')$writer->addAttribute('name',$this->_name);if($this->_httpEquiv!=='')$writer->addAttribute('http-equiv',$this->_httpEquiv);if($this->_scheme!=='')$writer->addAttribute('scheme',$this->_scheme);$writer->addAttribute('content',$this->_content);$writer->renderBeginTag('meta');$writer->renderEndTag();}}/*** TMetaTagCollection class** TMetaTagCollection represents a collection of meta tags* contained in a {@link THead} control.** @author Qiang Xue <qiang.xue@gmail.com>* @version $Id: THead.php 2590 2008-12-10 11:34:24Z carlgmathisen $* @package System.Web.UI.WebControls* @since 3.0*/class TMetaTagCollection extends TList{/*** Inserts an item at the specified position.* This overrides the parent implementation by performing type* check on the item being added.* @param integer the speicified position.* @param mixed new item* @throws TInvalidDataTypeException if the item to be inserted is not a {@link TMetaTag}*/public function insertAt($index,$item){if($item instanceof TMetaTag)parent::insertAt($index,$item);elsethrow new TInvalidDataTypeException('metatagcollection_metatag_invalid');}/*** Finds the lowest cardinal index of the meta tag whose id is the one being looked for.* @param string the ID of the meta tag to be looked for* @return integer the index of the meta tag found, -1 if not found.*/public function findIndexByID($id){$index=0;foreach($this as $item){if($item->getID()===$id)return $index;$index++;}return -1;}/*** Finds the item whose value is the one being looked for.* @param string the id of the meta tag to be looked for* @return TMetaTag the meta tag found, null if not found.*/public function findMetaTagByID($id){if(($index=$this->findIndexByID($id))>=0)return $this->itemAt($index);elsereturn null;}}?>