summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--application/controllers/welcome.php5
-rw-r--r--system/helpers/html_helper.php59
-rw-r--r--tests/codeigniter/helpers/html_helper_test.php17
3 files changed, 60 insertions, 21 deletions
diff --git a/application/controllers/welcome.php b/application/controllers/welcome.php
index 1ed82d2a7..9aaab14ad 100644
--- a/application/controllers/welcome.php
+++ b/application/controllers/welcome.php
@@ -44,7 +44,10 @@ class Welcome extends CI_Controller {
*/
public function index()
{
- $this->load->view('welcome_message');
+ $this->load->helper('html');
+ echo img('test.png', FALSE, array('class' => 'foo'));
+
+ // $this->load->view('welcome_message');
}
}
diff --git a/system/helpers/html_helper.php b/system/helpers/html_helper.php
index 6fabf9c05..96234bb02 100644
--- a/system/helpers/html_helper.php
+++ b/system/helpers/html_helper.php
@@ -51,7 +51,7 @@ if ( ! function_exists('heading'))
*/
function heading($data = '', $h = '1', $attributes = '')
{
- return '<h'.$h.($attributes !== '' ? ' ' : '').$attributes.'>'.$data.'</h'.$h.'>';
+ return '<h'.$h._html_attributes_to_string($attributes).'>'.$data.'</h'.$h.'>';
}
}
@@ -119,23 +119,8 @@ if ( ! function_exists('_list'))
// Set the indentation based on the depth
$out = str_repeat(' ', $depth);
- // Were any attributes submitted? If so generate a string
- if (is_array($attributes))
- {
- $atts = '';
- foreach ($attributes as $key => $val)
- {
- $atts .= ' '.$key.'="'.$val.'"';
- }
- $attributes = $atts;
- }
- elseif (is_string($attributes) && strlen($attributes) > 0)
- {
- $attributes = ' '.$attributes;
- }
-
// Write the opening list tag
- $out .= '<'.$type.$attributes.">\n";
+ $out .= '<'.$type._html_attributes_to_string($attributes).">\n";
// Cycle through the list elements. If an array is
// encountered we will recursively call _list()
@@ -191,9 +176,10 @@ if ( ! function_exists('img'))
*
* @param mixed
* @param bool
+ * @param mixed
* @return string
*/
- function img($src = '', $index_page = FALSE)
+ function img($src = '', $index_page = FALSE, $attributes = '')
{
if ( ! is_array($src) )
{
@@ -229,7 +215,7 @@ if ( ! function_exists('img'))
}
}
- return $img.'/>';
+ return $img._html_attributes_to_string($attributes).'/>';
}
}
@@ -407,5 +393,40 @@ if ( ! function_exists('nbs'))
}
}
+if ( ! function_exists('_html_attributes_to_string'))
+{
+ /**
+ * Attributes To String
+ *
+ * Helper function used to convert array or object of attributes to a string
+ *
+ * @param mixed
+ * @param bool
+ * @return string
+ */
+ function _html_attributes_to_string($attributes)
+ {
+ if (is_object($attributes) && count($attributes) > 0)
+ {
+ $attributes = (array) $attributes;
+ }
+
+ if (is_array($attributes) && count($attributes) > 0)
+ {
+ $atts = '';
+ foreach ($attributes as $key => $val)
+ {
+ $atts .= ' '.$key.'="'.$val.'"';
+ }
+ return $atts;
+ }
+ elseif (is_string($attributes) && strlen($attributes) > 0)
+ {
+ return ' '.$attributes;
+ }
+
+ return $attributes;
+ }
+}
/* End of file html_helper.php */
/* Location: ./system/helpers/html_helper.php */ \ No newline at end of file
diff --git a/tests/codeigniter/helpers/html_helper_test.php b/tests/codeigniter/helpers/html_helper_test.php
index 9a7bb48bf..4dd717ff7 100644
--- a/tests/codeigniter/helpers/html_helper_test.php
+++ b/tests/codeigniter/helpers/html_helper_test.php
@@ -22,6 +22,22 @@ class Html_helper_test extends CI_TestCase {
$this->assertEquals('<h2 class="bar">foobar</h2>', heading('foobar', 2, 'class="bar"'));
}
+ public function test_heading_array_attributes()
+ {
+ // Test array of attributes
+ $this->assertEquals('<h2 class="bar" id="foo">foobar</h2>', heading('foobar', 2, array('class' => 'bar', 'id' => 'foo')));
+ }
+
+ public function test_heading_object_attributes()
+ {
+ // Test array of attributes
+ $this->assertEquals('<h2 class="bar" id="foo">foobar</h2>', heading('foobar', 2, array('class' => 'bar', 'id' => 'foo')));
+ $test = new stdClass;
+ $test->class = "bar";
+ $test->id = "foo";
+ $this->assertEquals('<h2 class="bar" id="foo">foobar</h2>', heading('foobar', 2, $test));
+ }
+
// ------------------------------------------------------------------------
public function test_Ul()
@@ -72,5 +88,4 @@ EOH;
$this->assertEquals($expect, meta(array('name' => 'foo')));
}
-
} \ No newline at end of file