'.$title.''; } /** * Creates an HTML anchor to a file. Note that the title is not escaped, * to allow HTML elements within links (images, etc). * * echo HTML::file_anchor('media/doc/user_guide.pdf', 'User Guide'); * * @param string $file name of file to link to * @param string $title link text * @param array $attributes HTML anchor attributes * @param mixed $protocol protocol to pass to URL::base() * @param boolean $index include the index page * @return string * @uses URL::base * @uses HTML::attributes */ public static function file_anchor($file, $title = NULL, array $attributes = NULL, $protocol = NULL, $index = FALSE) { if ($title === NULL) { // Use the file name as the title $title = basename($file); } // Add the file link to the attributes $attributes['href'] = URL::site($file, $protocol, $index); return ''.$title.''; } /** * Creates an email (mailto:) anchor. Note that the title is not escaped, * to allow HTML elements within links (images, etc). * * echo HTML::mailto($address); * * @param string $email email address to send to * @param string $title link text * @param array $attributes HTML anchor attributes * @return string * @uses HTML::attributes */ public static function mailto($email, $title = NULL, array $attributes = NULL) { if ($title === NULL) { // Use the email address as the title $title = $email; } return ''.$title.''; } /** * Creates a style sheet link element. * * echo HTML::style('media/css/screen.css'); * * @param string $file file name * @param array $attributes default attributes * @param mixed $protocol protocol to pass to URL::base() * @param boolean $index include the index page * @return string * @uses URL::base * @uses HTML::attributes */ public static function style($file, array $attributes = NULL, $protocol = NULL, $index = FALSE) { if (strpos($file, '://') === FALSE) { // Add the base URL $file = URL::site($file, $protocol, $index); } // Set the stylesheet link $attributes['href'] = $file; // Set the stylesheet rel $attributes['rel'] = empty($attributes['rel']) ? 'stylesheet' : $attributes['rel']; // Set the stylesheet type $attributes['type'] = 'text/css'; return ''; } /** * Creates a script link. * * echo HTML::script('media/js/jquery.min.js'); * * @param string $file file name * @param array $attributes default attributes * @param mixed $protocol protocol to pass to URL::base() * @param boolean $index include the index page * @return string * @uses URL::base * @uses HTML::attributes */ public static function script($file, array $attributes = NULL, $protocol = NULL, $index = FALSE) { if (strpos($file, '://') === FALSE) { // Add the base URL $file = URL::site($file, $protocol, $index); } // Set the script link $attributes['src'] = $file; // Set the script type $attributes['type'] = 'text/javascript'; return ''; } /** * Creates a image link. * * echo HTML::image('media/img/logo.png', array('alt' => 'My Company')); * * @param string $file file name * @param array $attributes default attributes * @param mixed $protocol protocol to pass to URL::base() * @param boolean $index include the index page * @return string * @uses URL::base * @uses HTML::attributes */ public static function image($file, array $attributes = NULL, $protocol = NULL, $index = FALSE) { if (strpos($file, '://') === FALSE) { // Add the base URL $file = URL::site($file, $protocol, $index); } // Add the image link $attributes['src'] = $file; return ''; } /** * Compiles an array of HTML attributes into an attribute string. * Attributes will be sorted using HTML::$attribute_order for consistency. * * echo ''.$content.''; * * @param array $attributes attribute list * @return string */ public static function attributes(array $attributes = NULL) { if (empty($attributes)) return ''; $sorted = array(); foreach (HTML::$attribute_order as $key) { if (isset($attributes[$key])) { // Add the attribute to the sorted list $sorted[$key] = $attributes[$key]; } } // Combine the sorted attributes $attributes = $sorted + $attributes; $compiled = ''; foreach ($attributes as $key => $value) { if ($value === NULL) { // Skip attributes that have NULL values continue; } if (is_int($key)) { // Assume non-associative keys are mirrored attributes $key = $value; if ( ! HTML::$strict) { // Just use a key $value = FALSE; } } // Add the attribute key $compiled .= ' '.$key; if ($value OR HTML::$strict) { // Add the attribute value $compiled .= '="'.HTML::chars($value).'"'; } } return $compiled; } }