user gets notified interatively or by email in case of a CIS error
[living-lab-site.git] / system / 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 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  */
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       integer
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                 // 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  */
253 if ( ! 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  */
303 if ( ! 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  */
378 if ( ! 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  */
421 if ( ! function_exists('nbs'))
422 {
423         function nbs($num = 1)
424         {
425                 return str_repeat("&nbsp;", $num);
426         }
427 }
428
429
430 /* End of file html_helper.php */
431 /* Location: ./system/helpers/html_helper.php */