Вход Регистрация
Файл: Form Generator/Project Files/system/helpers/smiley_helper.php
Строк: 182
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package        CodeIgniter
 * @author        ExpressionEngine Dev Team
 * @copyright    Copyright (c) 2008 - 2011, EllisLab, Inc.
 * @license        http://codeigniter.com/user_guide/license.html
 * @link        http://codeigniter.com
 * @since        Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * CodeIgniter Smiley Helpers
 *
 * @package        CodeIgniter
 * @subpackage    Helpers
 * @category    Helpers
 * @author        ExpressionEngine Dev Team
 * @link        http://codeigniter.com/user_guide/helpers/smiley_helper.html
 */

// ------------------------------------------------------------------------

/**
 * Smiley Javascript
 *
 * Returns the javascript required for the smiley insertion.  Optionally takes
 * an array of aliases to loosely couple the smiley array to the view.
 *
 * @access    public
 * @param    mixed    alias name or array of alias->field_id pairs
 * @param    string    field_id if alias name was passed in
 * @return    array
 */
if ( ! function_exists('smiley_js'))
{
    function 
smiley_js($alias ''$field_id ''$inline TRUE)
    {
        static 
$do_setup TRUE;

        
$r '';

        if (
$alias != '' && ! is_array($alias))
        {
            
$alias = array($alias => $field_id);
        }

        if (
$do_setup === TRUE)
        {
                
$do_setup FALSE;

                
$m = array();

                if (
is_array($alias))
                {
                    foreach (
$alias as $name => $id)
                    {
                        
$m[] = '"'.$name.'" : "'.$id.'"';
                    }
                }

                
$m '{'.implode(','$m).'}';

                
$r .= <<<EOF
                var smiley_map = {$m};

                function insert_smiley(smiley, field_id) {
                    var el = document.getElementById(field_id), newStart;

                    if ( ! el && smiley_map[field_id]) {
                        el = document.getElementById(smiley_map[field_id]);

                        if ( ! el)
                            return false;
                    }

                    el.focus();
                    smiley = " " + smiley;

                    if ('selectionStart' in el) {
                        newStart = el.selectionStart + smiley.length;

                        el.value = el.value.substr(0, el.selectionStart) +
                                        smiley +
                                        el.value.substr(el.selectionEnd, el.value.length);
                        el.setSelectionRange(newStart, newStart);
                    }
                    else if (document.selection) {
                        document.selection.createRange().text = smiley;
                    }
                }
EOF;
        }
        else
        {
            if (
is_array($alias))
            {
                foreach (
$alias as $name => $id)
                {
                    
$r .= 'smiley_map["'.$name.'"] = "'.$id.'";'."n";
                }
            }
        }

        if (
$inline)
        {
            return 
'<script type="text/javascript" charset="utf-8">/*<![CDATA[ */'.$r.'// ]]></script>';
        }
        else
        {
            return 
$r;
        }
    }
}

// ------------------------------------------------------------------------

/**
 * Get Clickable Smileys
 *
 * Returns an array of image tag links that can be clicked to be inserted
 * into a form field.
 *
 * @access    public
 * @param    string    the URL to the folder containing the smiley images
 * @return    array
 */
if ( ! function_exists('get_clickable_smileys'))
{
    function 
get_clickable_smileys($image_url$alias ''$smileys NULL)
    {
        
// For backward compatibility with js_insert_smiley

        
if (is_array($alias))
        {
            
$smileys $alias;
        }

        if ( ! 
is_array($smileys))
        {
            if (
FALSE === ($smileys _get_smiley_array()))
            {
                return 
$smileys;
            }
        }

        
// Add a trailing slash to the file path if needed
        
$image_url rtrim($image_url'/').'/';

        
$used = array();
        foreach (
$smileys as $key => $val)
        {
            
// Keep duplicates from being used, which can happen if the
            // mapping array contains multiple identical replacements.  For example:
            // :-) and :) might be replaced with the same image so both smileys
            // will be in the array.
            
if (isset($used[$smileys[$key][0]]))
            {
                continue;
            }

            
$link[] = "<a href="javascript:void(0);" onclick="insert_smiley('".$key."''".$alias."')"><img src="".$image_url.$smileys[$key][0]."" width="".$smileys[$key][1]."" height="".$smileys[$key][2]."" alt="".$smileys[$key][3]."" style="border:0;" /></a>";

            
$used[$smileys[$key][0]] = TRUE;
        }

        return 
$link;
    }
}

// ------------------------------------------------------------------------

/**
 * Parse Smileys
 *
 * Takes a string as input and swaps any contained smileys for the actual image
 *
 * @access    public
 * @param    string    the text to be parsed
 * @param    string    the URL to the folder containing the smiley images
 * @return    string
 */
if ( ! function_exists('parse_smileys'))
{
    function 
parse_smileys($str ''$image_url ''$smileys NULL)
    {
        if (
$image_url == '')
        {
            return 
$str;
        }

        if ( ! 
is_array($smileys))
        {
            if (
FALSE === ($smileys _get_smiley_array()))
            {
                return 
$str;
            }
        }

        
// Add a trailing slash to the file path if needed
        
$image_url preg_replace("/(.+?)/*$/""\1/",  $image_url);

        foreach (
$smileys as $key => $val)
        {
            
$str str_replace($key"<img src="".$image_url.$smileys[$key][0]."" width="".$smileys[$key][1]."" height="".$smileys[$key][2]."" alt="".$smileys[$key][3]."" style="border:0;" />"$str);
        }

        return 
$str;
    }
}

// ------------------------------------------------------------------------

/**
 * Get Smiley Array
 *
 * Fetches the config/smiley.php file
 *
 * @access    private
 * @return    mixed
 */
if ( ! function_exists('_get_smiley_array'))
{
    function 
_get_smiley_array()
    {
        if (
defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/smileys.php'))
        {
            include(
APPPATH.'config/'.ENVIRONMENT.'/smileys.php');
        }
        elseif (
file_exists(APPPATH.'config/smileys.php'))
        {
            include(
APPPATH.'config/smileys.php');
        }
        
        if (isset(
$smileys) AND is_array($smileys))
        {
            return 
$smileys;
        }

        return 
FALSE;
    }
}

// ------------------------------------------------------------------------

/**
 * JS Insert Smiley
 *
 * Generates the javascript function needed to insert smileys into a form field
 *
 * DEPRECATED as of version 1.7.2, use smiley_js instead
 *
 * @access    public
 * @param    string    form name
 * @param    string    field name
 * @return    string
 */
if ( ! function_exists('js_insert_smiley'))
{
    function 
js_insert_smiley($form_name ''$form_field '')
    {
        return <<<EOF
<script type="text/javascript">
    function insert_smiley(smiley)
    {
        document.
{$form_name}.{$form_field}.value += " " + smiley;
    }
</script>
EOF;
    }
}


/* End of file smiley_helper.php */
/* Location: ./system/helpers/smiley_helper.php */
Онлайн: 0
Реклама