From 67512372613e56f223d810af3bc368834167707d Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 8 Dec 2005 14:38:53 +0000 Subject: --- framework/Web/UI/WebControls/THead.php | 273 +++++++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 framework/Web/UI/WebControls/THead.php (limited to 'framework/Web/UI') diff --git a/framework/Web/UI/WebControls/THead.php b/framework/Web/UI/WebControls/THead.php new file mode 100644 index 00000000..0e074519 --- /dev/null +++ b/framework/Web/UI/WebControls/THead.php @@ -0,0 +1,273 @@ + and Qiang Xue + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Revision: $ $Date: $ + * @package System.Web.UI.WebControls + */ + +/** + * THead class + * + * This component is used to provide access to the <head> HTML + * element through prado code. You can access it via the + * + * + $this->Page->Head + + * property. + * + * The THead component provides functionality that is also available through + * the TPage component (it will remain in the TPage component for cases where a THead + * component is not included on the page), including: + * + * - registerScriptFile + * - registerStyleFile + * + * Additionally, there are additional methods + * + * - registerScriptBlock + *
Register script to be output between <script> tags + * - registerStyleBlock + *
Register script to be output between <style> tags + * - registerMetaInfo + *
Register information to be output in a <meta> tag + * + * Namespace: System.Web.UI.WebControls + * + * Properties + * - Title, string, kept in viewstate + *
Gets or sets the <title> of the page + * + * Examples + * - On a page template file, insert the following line to create a THead component, + * + * + * + * The checkbox will show "Agree" text on its right side. If the user makes any change + * to the Checked state, the checkAgree() method of the page class will be invoked automatically. + * + * @author Marcus Nyeholt and Qiang Xue + * @version $Revision: $ $Date: $ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class THead extends TControl +{ + /** + * @var array list of javascript files to be loaded by {@link THead} + */ + private $_scriptFiles=array(); + /** + * @var array list of CSS style files to be loaded by {@link THead} + */ + private $_styleFiles=array(); + /** + * @var array list of meta name tags to be loaded by {@link THead} + */ + private $_metaTags=array(); + + /** + * 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 + */ + protected function onInit($param) + { + parent::onInit($param); + $this->getPage()->setHead($this); + } + + /** + * @return string the page title. + */ + public function getTitle() + { + return $this->getPage()->getTitle(); + } + + /** + * @param string the page's title + */ + public function setTitle($value) + { + $this->getPage()->setTitle($value); + } + + /** + * Registers a javascript file to be loaded in client side + * @param string a key that identifies the script file to avoid repetitive registration + * @param string the javascript file which can be relative or absolute URL + * @see isScriptFileRegistered() + */ + public function registerScriptFile($key,$scriptFile) + { + $this->_scriptFiles[$key] = $scriptFile; + } + + /** + * Registers a CSS style file to be imported with the page body + * @param string a key that identifies the style file to avoid repetitive registration + * @param string the javascript file which can be relative or absolute URL + * @see isStyleFileRegistered() + */ + public function registerStyleFile($key,$styleFile) + { + $this->_styleFiles[$key] = $styleFile; + } + + /** + * Registers a meta tag to be imported with the page body + * @param string a key that identifies the meta tag to avoid repetitive registration + * @param string the content of the meta tag + * @param string the language of the tag + * @see isTagRegistered() + */ + public function registerMetaTag($key,$metaTag) + { + $this->_metaTags[$key] = $metaTag; + } + + /** + * Indicates whether the named scriptfile has been registered before. + * @param string the name of the scriptfile + * @return boolean + * @see registerScriptFile() + */ + public function isScriptFileRegistered($key) + { + return isset($this->_scriptFiles[$key]); + } + + /** + * Indicates whether the named CSS style file has been registered before. + * @param string the name of the style file + * @return boolean + * @see registerStyleFile() + */ + public function isStyleFileRegistered($key) + { + return isset($this->_styleFiles[$key]); + } + + /** + * Indicates whether the named meta tag has been registered before. + * @param string the name of tag + * @param string the lang of the tag + * @return boolean + * @see registerMetaTag() + */ + public function isMetaTagRegistered($key) + { + return isset($this->_metaTags[$key]); + } + + /** + * Render the <head> tag + * @return the rendering result. + */ + public function render($writer) + { + $writer->renderBeginTag('head'); + $writer->writeLine(); + $writer->renderBeginTag('title'); + $writer->write($this->getPage()->getTitle()); + $writer->renderEndTag(); + $writer->writeLine(); + foreach($this->_metaTags as $metaTag) + { + $metaTag->render($writer); + $writer->writeLine(); + } + foreach($this->_scriptFiles as $scriptFile) + { + } + foreach($this->_styleFiles as $styleFile) + { + } + parent::render($writer); + $writer->renderEndTag(); + } +} + +class TMetaTag extends TComponent +{ + private $_id=''; + private $_httpEquiv=''; + private $_name=''; + private $_content=''; + private $_scheme=''; + + public function getID() + { + return $this->_id; + } + + public function setID($value) + { + $this->_id=$value; + } + + public function getHttpEquiv() + { + return $this->_httpEquiv; + } + + public function setHttpEquiv($value) + { + $this->_httpEquiv=$value; + } + + public function getName() + { + return $this->_name; + } + + public function setName($value) + { + $this->_name=$value; + } + + public function getContent() + { + return $this->_content; + } + + public function setContent($value) + { + $this->_content=$value; + } + + public function getScheme() + { + return $this->_scheme; + } + + public function setScheme($value) + { + $this->_scheme=$value; + } + + 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->_name); + if($this->_scheme!=='') + $writer->addAttribute('scheme',$this->_name); + $writer->addAttribute('content',$this->_name); + $writer->renderBeginTag('meta'); + $writer->renderEndTag(); + } +} + +?> \ No newline at end of file -- cgit v1.2.3