upgrade to codeigniter 1.7.2 for f12
[www-register-wizard.git] / helpers / html_helper.php
1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3  * CodeIgniter
4  *
5  * An open source application development framework for PHP 4.3.2 or newer
6  *
7  * @package             CodeIgniter
8  * @author              ExpressionEngine Dev Team
9  * @copyright   Copyright (c) 2008 - 2009, 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  */
41 if ( ! 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  */
61 if ( ! 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  */
81 if ( ! 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       intiger
101  * @return      string
102  */
103 if ( ! 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  */
174 if ( ! 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  */
193 if ( ! 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                 $img = '<img';
203
204                 foreach ($src as $k=>$v)
205                 {
206
207                         if ($k == 'src' AND strpos($v, '://') === FALSE)
208                         {
209                                 $CI =& get_instance();
210
211                                 if ($index_page === TRUE)
212                                 {
213                                         $img .= ' src="'.$CI->config->site_url($v).'" ';
214                                 }
215                                 else
216                                 {
217                                         $img .= ' src="'.$CI->config->slash_item('base_url').$v.'" ';
218                                 }
219                         }
220                         else
221                         {
222                                 $img .= " $k=\"$v\" ";
223                         }
224                 }
225
226                 $img .= '/>';
227
228                 return $img;
229         }
230 }
231
232 // ------------------------------------------------------------------------
233
234 /**
235  * Doctype
236  *
237  * Generates a page document type declaration
238  *
239  * Valid options are xhtml-11, xhtml-strict, xhtml-trans, xhtml-frame,
240  * html4-strict, html4-trans, and html4-frame.  Values are saved in the
241  * doctypes config file.
242  *
243  * @access      public
244  * @param       string  type    The doctype to be generated
245  * @return      string
246  */
247 if ( ! function_exists('doctype'))
248 {
249         function doctype($type = 'xhtml1-strict')
250         {
251                 global $_doctypes;
252
253                 if ( ! is_array($_doctypes))
254                 {
255                         if ( ! require_once(APPPATH.'config/doctypes.php'))
256                         {
257                                 return FALSE;
258                         }
259                 }
260
261                 if (isset($_doctypes[$type]))
262                 {
263                         return $_doctypes[$type];
264                 }
265                 else
266                 {
267                         return FALSE;
268                 }
269         }
270 }
271
272 // ------------------------------------------------------------------------
273
274 /**
275  * Link
276  *
277  * Generates link to a CSS file
278  *
279  * @access      public
280  * @param       mixed   stylesheet hrefs or an array
281  * @param       string  rel
282  * @param       string  type
283  * @param       string  title
284  * @param       string  media
285  * @param       boolean should index_page be added to the css path
286  * @return      string
287  */
288 if ( ! function_exists('link_tag'))
289 {
290         function link_tag($href = '', $rel = 'stylesheet', $type = 'text/css', $title = '', $media = '', $index_page = FALSE)
291         {
292                 $CI =& get_instance();
293
294                 $link = '<link ';
295
296                 if (is_array($href))
297                 {
298                         foreach ($href as $k=>$v)
299                         {
300                                 if ($k == 'href' AND strpos($v, '://') === FALSE)
301                                 {
302                                         if ($index_page === TRUE)
303                                         {
304                                                 $link .= ' href="'.$CI->config->site_url($v).'" ';
305                                         }
306                                         else
307                                         {
308                                                 $link .= ' href="'.$CI->config->slash_item('base_url').$v.'" ';
309                                         }
310                                 }
311                                 else
312                                 {
313                                         $link .= "$k=\"$v\" ";
314                                 }
315                         }
316
317                         $link .= "/>";
318                 }
319                 else
320                 {
321                         if ( strpos($href, '://') !== FALSE)
322                         {
323                                 $link .= ' href="'.$href.'" ';
324                         }
325                         elseif ($index_page === TRUE)
326                         {
327                                 $link .= ' href="'.$CI->config->site_url($href).'" ';
328                         }
329                         else
330                         {
331                                 $link .= ' href="'.$CI->config->slash_item('base_url').$href.'" ';
332                         }
333
334                         $link .= 'rel="'.$rel.'" type="'.$type.'" ';
335
336                         if ($media      != '')
337                         {
338                                 $link .= 'media="'.$media.'" ';
339                         }
340
341                         if ($title      != '')
342                         {
343                                 $link .= 'title="'.$title.'" ';
344                         }
345
346                         $link .= '/>';
347                 }
348
349
350                 return $link;
351         }
352 }
353
354 // ------------------------------------------------------------------------
355
356 /**
357  * Generates meta tags from an array of key/values
358  *
359  * @access      public
360  * @param       array
361  * @return      string
362  */
363 if ( ! function_exists('meta'))
364 {
365         function meta($name = '', $content = '', $type = 'name', $newline = "\n")
366         {
367                 // Since we allow the data to be passes as a string, a simple array
368                 // or a multidimensional one, we need to do a little prepping.
369                 if ( ! is_array($name))
370                 {
371                         $name = array(array('name' => $name, 'content' => $content, 'type' => $type, 'newline' => $newline));
372                 }
373                 else
374                 {
375                         // Turn single array into multidimensional
376                         if (isset($name['name']))
377                         {
378                                 $name = array($name);
379                         }
380                 }
381
382                 $str = '';
383                 foreach ($name as $meta)
384                 {
385                         $type           = ( ! isset($meta['type']) OR $meta['type'] == 'name') ? 'name' : 'http-equiv';
386                         $name           = ( ! isset($meta['name']))     ? ''    : $meta['name'];
387                         $content        = ( ! isset($meta['content']))  ? ''    : $meta['content'];
388                         $newline        = ( ! isset($meta['newline']))  ? "\n"  : $meta['newline'];
389
390                         $str .= '<meta '.$type.'="'.$name.'" content="'.$content.'" />'.$newline;
391                 }
392
393                 return $str;
394         }
395 }
396
397 // ------------------------------------------------------------------------
398
399 /**
400  * Generates non-breaking space entities based on number supplied
401  *
402  * @access      public
403  * @param       integer
404  * @return      string
405  */
406 if ( ! function_exists('nbs'))
407 {
408         function nbs($num = 1)
409         {
410                 return str_repeat("&nbsp;", $num);
411         }
412 }
413
414
415 /* End of file html_helper.php */
416 /* Location: ./system/helpers/html_helper.php */