Файл: 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 */