summaryrefslogtreecommitdiffstats
path: root/system/helpers/smiley_helper.php
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xssn.at>2010-02-06 23:14:56 +0100
committerFlorian Pritz <bluewind@xssn.at>2010-02-06 23:31:27 +0100
commit9e9d77b4072de4f8c73e8bbade07a8f27734e4bd (patch)
treea5d709254968fed8f3acdb9eec68fde2faa14b94 /system/helpers/smiley_helper.php
Initial commit
Signed-off-by: Florian Pritz <bluewind@xssn.at>
Diffstat (limited to 'system/helpers/smiley_helper.php')
-rw-r--r--system/helpers/smiley_helper.php273
1 files changed, 273 insertions, 0 deletions
diff --git a/system/helpers/smiley_helper.php b/system/helpers/smiley_helper.php
new file mode 100644
index 000000000..f085e53b1
--- /dev/null
+++ b/system/helpers/smiley_helper.php
@@ -0,0 +1,273 @@
+<?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