upgrade to codeigniter 1.7.2 for f12
[www-register-wizard.git] / helpers / smiley_helper.php
index 51c9dd0..f085e53 100644 (file)
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\r
-/**\r
- * CodeIgniter\r
- *\r
- * An open source application development framework for PHP 4.3.2 or newer\r
- *\r
- * @package            CodeIgniter\r
- * @author             ExpressionEngine Dev Team\r
- * @copyright  Copyright (c) 2008, EllisLab, Inc.\r
- * @license            http://codeigniter.com/user_guide/license.html\r
- * @link               http://codeigniter.com\r
- * @since              Version 1.0\r
- * @filesource\r
- */\r
-\r
-// ------------------------------------------------------------------------\r
-\r
-/**\r
- * CodeIgniter Smiley Helpers\r
- *\r
- * @package            CodeIgniter\r
- * @subpackage Helpers\r
- * @category   Helpers\r
- * @author             ExpressionEngine Dev Team\r
- * @link               http://codeigniter.com/user_guide/helpers/smiley_helper.html\r
- */\r
-\r
-// ------------------------------------------------------------------------\r
-\r
-/**\r
- * JS Insert Smiley\r
- *\r
- * Generates the javascrip function needed to insert smileys into a form field\r
- *\r
- * @access     public\r
- * @param      string  form name\r
- * @param      string  field name\r
- * @return     string\r
- */\r
-if ( ! function_exists('js_insert_smiley'))\r
-{\r
-       function js_insert_smiley($form_name = '', $form_field = '')\r
-       {\r
-               return <<<EOF\r
-<script type="text/javascript">\r
-       function insert_smiley(smiley)\r
-       {\r
-               document.{$form_name}.{$form_field}.value += " " + smiley;\r
-       }\r
-</script>\r
-EOF;\r
-       }\r
-}\r
-// ------------------------------------------------------------------------\r
-\r
-/**\r
- * Get Clickable Smileys\r
- *\r
- * Returns an array of image tag links that can be clicked to be inserted \r
- * into a form field.  \r
- *\r
- * @access     public\r
- * @param      string  the URL to the folder containing the smiley images\r
- * @return     array\r
- */\r
-if ( ! function_exists('get_clickable_smileys'))\r
-{\r
-       function get_clickable_smileys($image_url = '', $smileys = NULL)\r
-       {\r
-               if ( ! is_array($smileys))\r
-               {\r
-                       if (FALSE === ($smileys = _get_smiley_array()))\r
-                       {\r
-                               return $smileys;\r
-                       }\r
-               }\r
-\r
-               // Add a trailing slash to the file path if needed\r
-               $image_url = preg_replace("/(.+?)\/*$/", "\\1/",  $image_url);\r
-\r
-               $used = array();\r
-               foreach ($smileys as $key => $val)\r
-               {\r
-                       // Keep duplicates from being used, which can happen if the\r
-                       // mapping array contains multiple identical replacements.  For example:\r
-                       // :-) and :) might be replaced with the same image so both smileys\r
-                       // will be in the array.\r
-                       if (isset($used[$smileys[$key][0]]))\r
-                       {\r
-                               continue;\r
-                       }\r
-\r
-                       $link[] = "<a href=\"javascript:void(0);\" onClick=\"insert_smiley('".$key."')\"><img src=\"".$image_url.$smileys[$key][0]."\" width=\"".$smileys[$key][1]."\" height=\"".$smileys[$key][2]."\" alt=\"".$smileys[$key][3]."\" style=\"border:0;\" /></a>";\r
-\r
-                       $used[$smileys[$key][0]] = TRUE;\r
-               }\r
-\r
-               return $link;\r
-       }\r
-}\r
-\r
-// ------------------------------------------------------------------------\r
-\r
-/**\r
- * Parse Smileys\r
- *\r
- * Takes a string as input and swaps any contained smileys for the actual image\r
- *\r
- * @access     public\r
- * @param      string  the text to be parsed\r
- * @param      string  the URL to the folder containing the smiley images\r
- * @return     string\r
- */\r
-if ( ! function_exists('parse_smileys'))\r
-{\r
-       function parse_smileys($str = '', $image_url = '', $smileys = NULL)\r
-       {\r
-               if ($image_url == '')\r
-               {\r
-                       return $str;\r
-               }\r
-\r
-               if ( ! is_array($smileys))\r
-               {\r
-                       if (FALSE === ($smileys = _get_smiley_array()))\r
-                       {\r
-                               return $str;\r
-                       }\r
-               }\r
-\r
-               // Add a trailing slash to the file path if needed\r
-               $image_url = preg_replace("/(.+?)\/*$/", "\\1/",  $image_url);\r
-\r
-               foreach ($smileys as $key => $val)\r
-               {\r
-                       $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);\r
-               }\r
-\r
-               return $str;\r
-       }\r
-}\r
-\r
-// ------------------------------------------------------------------------\r
-\r
-/**\r
- * Get Smiley Array\r
- *\r
- * Fetches the config/smiley.php file\r
- *\r
- * @access     private\r
- * @return     mixed\r
- */\r
-if ( ! function_exists('_get_smiley_array'))\r
-{\r
-       function _get_smiley_array()\r
-       {\r
-               if ( ! file_exists(APPPATH.'config/smileys'.EXT))\r
-               {\r
-                       return FALSE;\r
-               }\r
-\r
-               include(APPPATH.'config/smileys'.EXT);\r
-\r
-               if ( ! isset($smileys) OR ! is_array($smileys))\r
-               {\r
-                       return FALSE;\r
-               }\r
-\r
-               return $smileys;\r
-       }\r
-}\r
-\r
-\r
-/* End of file smiley_helper.php */\r
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * CodeIgniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package            CodeIgniter
+ * @author             ExpressionEngine Dev Team
+ * @copyright  Copyright (c) 2008 - 2009, 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 = '')
+       {
+               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 = text;
+                                       }
+                               }
+EOF;
+               }
+               else
+               {
+                       if (is_array($alias))
+                       {
+                               foreach($alias as $name => $id)
+                               {
+                                       $r .= 'smiley_map["'.$name.'"] = "'.$id.'";'."\n";
+                               }
+                       }
+               }
+
+               return '<script type="text/javascript" charset="utf-8">'.$r.'</script>';
+       }
+}
+
+// ------------------------------------------------------------------------
+
+/**
+ * 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 ( ! file_exists(APPPATH.'config/smileys'.EXT))
+               {
+                       return FALSE;
+               }
+
+               include(APPPATH.'config/smileys'.EXT);
+
+               if ( ! isset($smileys) OR ! is_array($smileys))
+               {
+                       return FALSE;
+               }
+
+               return $smileys;
+       }
+}
+
+// ------------------------------------------------------------------------
+
+/**
+ * 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 */
\ No newline at end of file