/system/helpers/html_helper.php
PHP | 431 lines | 227 code | 57 blank | 147 comment | 35 complexity | ca35f30c66b4f6b5bb147ec81b67b1cb MD5 | raw file
1<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2/** 3 * CodeIgniter 4 * 5 * An open source application development framework for PHP 5.1.6 or newer 6 * 7 * @package CodeIgniter 8 * @author ExpressionEngine Dev Team 9 * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. 10 * @license http://codeigniter.com/user_guide/license.html 11 * @link http://codeigniter.com 12 * @since Version 1.0 13 * @filesource 14 */ 15 16// ------------------------------------------------------------------------ 17 18/** 19 * CodeIgniter HTML Helpers 20 * 21 * @package CodeIgniter 22 * @subpackage Helpers 23 * @category Helpers 24 * @author ExpressionEngine Dev Team 25 * @link http://codeigniter.com/user_guide/helpers/html_helper.html 26 */ 27 28// ------------------------------------------------------------------------ 29 30/** 31 * Heading 32 * 33 * Generates an HTML heading tag. First param is the data. 34 * Second param is the size of the heading tag. 35 * 36 * @access public 37 * @param string 38 * @param integer 39 * @return string 40 */ 41if ( ! function_exists('heading')) 42{ 43 function heading($data = '', $h = '1') 44 { 45 return "<h".$h.">".$data."</h".$h.">"; 46 } 47} 48 49// ------------------------------------------------------------------------ 50 51/** 52 * Unordered List 53 * 54 * Generates an HTML unordered list from an single or multi-dimensional array. 55 * 56 * @access public 57 * @param array 58 * @param mixed 59 * @return string 60 */ 61if ( ! function_exists('ul')) 62{ 63 function ul($list, $attributes = '') 64 { 65 return _list('ul', $list, $attributes); 66 } 67} 68 69// ------------------------------------------------------------------------ 70 71/** 72 * Ordered List 73 * 74 * Generates an HTML ordered list from an single or multi-dimensional array. 75 * 76 * @access public 77 * @param array 78 * @param mixed 79 * @return string 80 */ 81if ( ! function_exists('ol')) 82{ 83 function ol($list, $attributes = '') 84 { 85 return _list('ol', $list, $attributes); 86 } 87} 88 89// ------------------------------------------------------------------------ 90 91/** 92 * Generates the list 93 * 94 * Generates an HTML ordered list from an single or multi-dimensional array. 95 * 96 * @access private 97 * @param string 98 * @param mixed 99 * @param mixed 100 * @param integer 101 * @return string 102 */ 103if ( ! function_exists('_list')) 104{ 105 function _list($type = 'ul', $list, $attributes = '', $depth = 0) 106 { 107 // If an array wasn't submitted there's nothing to do... 108 if ( ! is_array($list)) 109 { 110 return $list; 111 } 112 113 // Set the indentation based on the depth 114 $out = str_repeat(" ", $depth); 115 116 // Were any attributes submitted? If so generate a string 117 if (is_array($attributes)) 118 { 119 $atts = ''; 120 foreach ($attributes as $key => $val) 121 { 122 $atts .= ' ' . $key . '="' . $val . '"'; 123 } 124 $attributes = $atts; 125 } 126 127 // Write the opening list tag 128 $out .= "<".$type.$attributes.">\n"; 129 130 // Cycle through the list elements. If an array is 131 // encountered we will recursively call _list() 132 133 static $_last_list_item = ''; 134 foreach ($list as $key => $val) 135 { 136 $_last_list_item = $key; 137 138 $out .= str_repeat(" ", $depth + 2); 139 $out .= "<li>"; 140 141 if ( ! is_array($val)) 142 { 143 $out .= $val; 144 } 145 else 146 { 147 $out .= $_last_list_item."\n"; 148 $out .= _list($type, $val, '', $depth + 4); 149 $out .= str_repeat(" ", $depth + 2); 150 } 151 152 $out .= "</li>\n"; 153 } 154 155 // Set the indentation for the closing tag 156 $out .= str_repeat(" ", $depth); 157 158 // Write the closing list tag 159 $out .= "</".$type.">\n"; 160 161 return $out; 162 } 163} 164 165// ------------------------------------------------------------------------ 166 167/** 168 * Generates HTML BR tags based on number supplied 169 * 170 * @access public 171 * @param integer 172 * @return string 173 */ 174if ( ! function_exists('br')) 175{ 176 function br($num = 1) 177 { 178 return str_repeat("<br />", $num); 179 } 180} 181 182// ------------------------------------------------------------------------ 183 184/** 185 * Image 186 * 187 * Generates an <img /> element 188 * 189 * @access public 190 * @param mixed 191 * @return string 192 */ 193if ( ! function_exists('img')) 194{ 195 function img($src = '', $index_page = FALSE) 196 { 197 if ( ! is_array($src) ) 198 { 199 $src = array('src' => $src); 200 } 201 202 // If there is no alt attribute defined, set it to an empty string 203 if ( ! isset($src['alt'])) 204 { 205 $src['alt'] = ''; 206 } 207 208 $img = '<img'; 209 210 foreach ($src as $k=>$v) 211 { 212 213 if ($k == 'src' AND strpos($v, '://') === FALSE) 214 { 215 $CI =& get_instance(); 216 217 if ($index_page === TRUE) 218 { 219 $img .= ' src="'.$CI->config->site_url($v).'"'; 220 } 221 else 222 { 223 $img .= ' src="'.$CI->config->slash_item('base_url').$v.'"'; 224 } 225 } 226 else 227 { 228 $img .= " $k=\"$v\""; 229 } 230 } 231 232 $img .= '/>'; 233 234 return $img; 235 } 236} 237 238// ------------------------------------------------------------------------ 239 240/** 241 * Doctype 242 * 243 * Generates a page document type declaration 244 * 245 * Valid options are xhtml-11, xhtml-strict, xhtml-trans, xhtml-frame, 246 * html4-strict, html4-trans, and html4-frame. Values are saved in the 247 * doctypes config file. 248 * 249 * @access public 250 * @param string type The doctype to be generated 251 * @return string 252 */ 253if ( ! function_exists('doctype')) 254{ 255 function doctype($type = 'xhtml1-strict') 256 { 257 global $_doctypes; 258 259 if ( ! is_array($_doctypes)) 260 { 261 if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/doctypes'.EXT)) 262 { 263 include(APPPATH.'config/'.ENVIRONMENT.'/doctypes'.EXT); 264 } 265 elseif (is_file(APPPATH.'config/doctypes'.EXT)) 266 { 267 include(APPPATH.'config/doctypes'.EXT); 268 } 269 270 if ( ! is_array($_doctypes)) 271 { 272 return FALSE; 273 } 274 } 275 276 if (isset($_doctypes[$type])) 277 { 278 return $_doctypes[$type]; 279 } 280 else 281 { 282 return FALSE; 283 } 284 } 285} 286 287// ------------------------------------------------------------------------ 288 289/** 290 * Link 291 * 292 * Generates link to a CSS file 293 * 294 * @access public 295 * @param mixed stylesheet hrefs or an array 296 * @param string rel 297 * @param string type 298 * @param string title 299 * @param string media 300 * @param boolean should index_page be added to the css path 301 * @return string 302 */ 303if ( ! function_exists('link_tag')) 304{ 305 function link_tag($href = '', $rel = 'stylesheet', $type = 'text/css', $title = '', $media = '', $index_page = FALSE) 306 { 307 $CI =& get_instance(); 308 309 $link = '<link '; 310 311 if (is_array($href)) 312 { 313 foreach ($href as $k=>$v) 314 { 315 if ($k == 'href' AND strpos($v, '://') === FALSE) 316 { 317 if ($index_page === TRUE) 318 { 319 $link .= 'href="'.$CI->config->site_url($v).'" '; 320 } 321 else 322 { 323 $link .= 'href="'.$CI->config->slash_item('base_url').$v.'" '; 324 } 325 } 326 else 327 { 328 $link .= "$k=\"$v\" "; 329 } 330 } 331 332 $link .= "/>"; 333 } 334 else 335 { 336 if ( strpos($href, '://') !== FALSE) 337 { 338 $link .= 'href="'.$href.'" '; 339 } 340 elseif ($index_page === TRUE) 341 { 342 $link .= 'href="'.$CI->config->site_url($href).'" '; 343 } 344 else 345 { 346 $link .= 'href="'.$CI->config->slash_item('base_url').$href.'" '; 347 } 348 349 $link .= 'rel="'.$rel.'" type="'.$type.'" '; 350 351 if ($media != '') 352 { 353 $link .= 'media="'.$media.'" '; 354 } 355 356 if ($title != '') 357 { 358 $link .= 'title="'.$title.'" '; 359 } 360 361 $link .= '/>'; 362 } 363 364 365 return $link; 366 } 367} 368 369// ------------------------------------------------------------------------ 370 371/** 372 * Generates meta tags from an array of key/values 373 * 374 * @access public 375 * @param array 376 * @return string 377 */ 378if ( ! function_exists('meta')) 379{ 380 function meta($name = '', $content = '', $type = 'name', $newline = "\n") 381 { 382 // Since we allow the data to be passes as a string, a simple array 383 // or a multidimensional one, we need to do a little prepping. 384 if ( ! is_array($name)) 385 { 386 $name = array(array('name' => $name, 'content' => $content, 'type' => $type, 'newline' => $newline)); 387 } 388 else 389 { 390 // Turn single array into multidimensional 391 if (isset($name['name'])) 392 { 393 $name = array($name); 394 } 395 } 396 397 $str = ''; 398 foreach ($name as $meta) 399 { 400 $type = ( ! isset($meta['type']) OR $meta['type'] == 'name') ? 'name' : 'http-equiv'; 401 $name = ( ! isset($meta['name'])) ? '' : $meta['name']; 402 $content = ( ! isset($meta['content'])) ? '' : $meta['content']; 403 $newline = ( ! isset($meta['newline'])) ? "\n" : $meta['newline']; 404 405 $str .= '<meta '.$type.'="'.$name.'" content="'.$content.'" />'.$newline; 406 } 407 408 return $str; 409 } 410} 411 412// ------------------------------------------------------------------------ 413 414/** 415 * Generates non-breaking space entities based on number supplied 416 * 417 * @access public 418 * @param integer 419 * @return string 420 */ 421if ( ! function_exists('nbs')) 422{ 423 function nbs($num = 1) 424 { 425 return str_repeat(" ", $num); 426 } 427} 428 429 430/* End of file html_helper.php */ 431/* Location: ./system/helpers/html_helper.php */