Hola,

Después de mucho tiempo sin escribir, y habiendo salido ya la versión 1.6.2 de CodeIgniter, escribo para presentar una mejora a un helper de CodeIgniter. Concretamente se trata del HTML Helper, el cual incluye funcione para la ayuda en el HTML.

¿Qué hace? ¿Por qué? La última versión del framework añadía la posibilidad de crear tags <link /> con lo que podíamos añadir facilmente archivos CSS, shorcuts.ico u otros similares. Esto se hace mediante:

link_tag('archivo.css);

Y… ¿porqué no para incluir archivos JavaScript? Así que me decidí a hacer mi primer aportación al core de CodeIgniter (y espero que la añadan, claro). Esto consiste en la función script_tag(); para añadir tags <script />.

Y… ¿Cómo se usa? Simplemente es una extensión del helper existente así que debemos colocar el archivo dentro de la carpeta helpers dentro de application con el nombre MY_html_helper.php teniendo en cuenta que el prefijo para las extensiones es “MY_” ($config['subclass_prefix'] = ‘MY_’; en config.php).

El código en cuestión es el siguiente:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
* Script
*
* Generates a script inclusion of a JavaScript file
* Based on the CodeIgniters original Link Tag.
*
* Author(s): Isern Palaus <ipalaus@ipalaus.es>, Viktor Rutberg <wishie@gmail.com>
*
* @access    public
* @param    mixed    javascript sources or an array
* @param    string    language
* @param    string    type
* @param    boolean    should index_page be added to the javascript path
* @return    string
*/
   

if ( ! function_exists('script_tag'))
{
    function script_tag($src = '', $language = 'javascript', $type = 'text/javascript', $index_page = FALSE)
    {
        $CI =& get_instance();

        $script = '<script ';

        if(is_array($src))
        {
            foreach($src as $v)
            {
                if ($k == 'src' AND strpos($v, '://') === FALSE)
                {
                    if ($index_page === TRUE)
                    {
                        $script .= ' src="'.$CI->config->site_url($v).'"';
                    }
                    else
                    {
                        $script .= ' src="'.$CI->config->slash_item('base_url').$v.'"';
                    }
                }
                else
                {
                    $script .= "$k=\"$v\"";
                }
            }

            $script .= ">\n";
        }
        else
        {
            if ( strpos($src, '://') !== FALSE)
            {
                $script .= ' src="'.$src.'" ';
            }
            elseif ($index_page === TRUE)
            {
                $script .= ' src="'.$CI->config->site_url($src).'" ';
            }
            else
            {
                $script .= ' src="'.$CI->config->slash_item('base_url').$src.'" ';
            }

            $script .= 'language="'.$language.'" type="'.$type.'"';

            $script .= '>'."\n";
        }

        $script .= '</script>';

        return $script;
    }
}

En cuanto su uso es sencillo:

script_tag('archivo.js);

Pronto os presentaré también otra modificación del helper URL Helper. Hasta pronto.