Source code for file /joomla/document/html/html.php
Documentation is available at html.php
* @version $Id: html.php 6634 2007-02-15 18:27:18Z Jinx $
* @package Joomla.Framework
* @copyright Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
// Check to ensure this file is within the rest of the framework
jimport('joomla.application.module.helper');
* DocumentHTML class, provides an easy interface to parse and display an html document
* @package Joomla.Framework
* Array of Header <link> tags
* @param array $options Associative array of options
$this->_mime =
'text/html';
//set default document metadata
$this->setMetaData('Content-Type', $this->_mime .
'; charset=' .
$this->_charset , true );
* Get the document head data
* @return array The document head data in array form
$data['title'] =
$this->title;
$data['link'] =
$this->link;
$data['metaTags'] =
$this->_metaTags;
$data['links'] =
$this->_links;
$data['styleSheets'] =
$this->_styleSheets;
$data['style'] =
$this->_style;
$data['scripts'] =
$this->_scripts;
$data['script'] =
$this->_script;
$data['custom'] =
$this->_custom;
* Set the document head data
* @param array $data The document head data in array form
$this->title =
(isset
($data['title'])) ?
$data['title'] :
$this->title;
$this->link =
(isset
($data['link'])) ?
$data['link'] :
$this->link;
$this->_metaTags =
(isset
($data['metaTags'])) ?
$data['metaTags'] :
$this->_metaTags;
$this->_links =
(isset
($data['links'])) ?
$data['links'] :
$this->_links;
$this->_styleSheets =
(isset
($data['styleSheets'])) ?
$data['styleSheets'] :
$this->_styleSheets;
$this->_style =
(isset
($data['style'])) ?
$data['style'] :
$this->_style;
$this->_scripts =
(isset
($data['scripts'])) ?
$data['scripts'] :
$this->_scripts;
$this->_script =
(isset
($data['script'])) ?
$data['script'] :
$this->_script;
$this->_custom =
(isset
($data['custom'])) ?
$data['custom'] :
$this->_custom;
* Adds <link> tags to the head of the document
* <p>$relType defaults to 'rel' as it is the most common relation type used.
* ('rev' refers to reverse relation, 'rel' indicates normal, forward relation.)
* Typical tag: <link href="index.php" rel="Start"></p>
* @param string $href The link that is being related.
* @param string $relation Relation of link.
* @param string $relType Relation type attribute. Either rel or rev (default: 'rel').
* @param array $attributes Associative array of remaining attributes.
function addHeadLink($href, $relation, $relType =
'rel', $attribs =
array())
$generatedTag =
"<link href=\"$href\" $relType=\"$relation\" ".
$attribs;
$this->_links[] =
$generatedTag;
* Adds a shortcut icon (favicon)
* <p>This adds a link to the icon shown in the favorites list or on
* the left of the url in the address bar. Some browsers display
* it on the tab, as well.</p>
* @param string $href The link that is being related.
* @param string $type File type
* @param string $relation Relation of link
function addFavicon($href, $type =
'image/x-icon', $relation =
'shortcut icon')
$this->_links[] =
'<link href="'.
JURI::base().
$href.
'" rel="'.
$relation.
'" type="'.
$type.
'"';
* Adds a custom html string to the head block
* @param string The html to add to the head
$this->_custom[] =
trim( $html );
* Get the contents of a document include
* @param string $type The type of renderer
* @param string $name The name of the element to render
* @param array $attribs Associative array of remaining attributes.
* @return The output of the renderer
function getBuffer($type, $name =
null, $attribs =
array())
if(isset
($this->_buffer[$type][$name])) {
$result =
$this->_buffer[$type][$name];
$result =
$renderer->render($name, $attribs, $result);
* Set the contents a document include
* @param string $type The type of renderer
* @param string $name oke The name of the element to render
* @param string $content The content to be set in the buffer
function setBuffer($contents, $type, $name =
null)
$this->_buffer[$type][$name] =
$contents;
* Outputs the template to the browser.
* @param boolean $cache If true, cache the output
* @param array $params Associative array of attributes
* @return The rendered data
function render( $caching =
false, $params =
array())
$directory = isset
($params['directory']) ?
$params['directory'] :
'templates';
$template =
$params['template'];
// Parse the template INI file if it exists for parameters and insert
// them into the template.
$this->template =
& $template;
* Count the modules based on the given condition
* @param string $condition The condition to use
* @return integer Number of modules found
for($i=
0; $i <
count($words); $i++
)
$str =
'return '.
implode(' ', $words).
';';
* @param string $template The name of the template
* @param string $filename The actual filename
* @return string The contents of the template
global $mainframe, $option;
if ($mainframe->getCfg('legacy'))
global $task, $_VERSION, $my, $cur_template, $database, $acl, $Itemid;
//For backwards compatibility extract the config vars as globals
//Check to see if we have a valid template file
$this->_file =
$directory.
DS.
$filename;
require_once($directory.
DS.
$filename );
// Try to find a favicon by checking the template and root folder
$dirs =
array( $path, JPATH_BASE .
DS );
$icon =
$dir .
'favicon.ico';
* Parse a document template
* @param string $data The data too parse
* @return The parsed contents of the template
if(preg_match_all('#<jdoc:include\ type="([^"]+)" (.*)\/>#iU', $data, $matches))
$count =
count($matches[1]);
for($i =
0; $i <
$count; $i++
)
$name = isset
($attribs['name']) ?
$attribs['name'] :
null;
$replace[$i] =
$this->getBuffer($type, $name, $attribs);