1 | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
---|
2 | /** |
---|
3 | * CodeIgniter |
---|
4 | * |
---|
5 | * An open source application development framework for PHP 5.1.6 or newer |
---|
6 | * |
---|
7 | * @package CodeIgniter |
---|
8 | * @author ExpressionEngine Dev Team |
---|
9 | * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. |
---|
10 | * @license http://codeigniter.com/user_guide/license.html |
---|
11 | * @link http://codeigniter.com |
---|
12 | * @since Version 1.0 |
---|
13 | * @filesource |
---|
14 | */ |
---|
15 | |
---|
16 | // ------------------------------------------------------------------------ |
---|
17 | |
---|
18 | /** |
---|
19 | * CodeIgniter Smiley Helpers |
---|
20 | * |
---|
21 | * @package CodeIgniter |
---|
22 | * @subpackage Helpers |
---|
23 | * @category Helpers |
---|
24 | * @author ExpressionEngine Dev Team |
---|
25 | * @link http://codeigniter.com/user_guide/helpers/smiley_helper.html |
---|
26 | */ |
---|
27 | |
---|
28 | // ------------------------------------------------------------------------ |
---|
29 | |
---|
30 | /** |
---|
31 | * Smiley Javascript |
---|
32 | * |
---|
33 | * Returns the javascript required for the smiley insertion. Optionally takes |
---|
34 | * an array of aliases to loosely couple the smiley array to the view. |
---|
35 | * |
---|
36 | * @access public |
---|
37 | * @param mixed alias name or array of alias->field_id pairs |
---|
38 | * @param string field_id if alias name was passed in |
---|
39 | * @return array |
---|
40 | */ |
---|
41 | if ( ! function_exists('smiley_js')) |
---|
42 | { |
---|
43 | function smiley_js($alias = '', $field_id = '', $inline = TRUE) |
---|
44 | { |
---|
45 | static $do_setup = TRUE; |
---|
46 | |
---|
47 | $r = ''; |
---|
48 | |
---|
49 | if ($alias != '' && ! is_array($alias)) |
---|
50 | { |
---|
51 | $alias = array($alias => $field_id); |
---|
52 | } |
---|
53 | |
---|
54 | if ($do_setup === TRUE) |
---|
55 | { |
---|
56 | $do_setup = FALSE; |
---|
57 | |
---|
58 | $m = array(); |
---|
59 | |
---|
60 | if (is_array($alias)) |
---|
61 | { |
---|
62 | foreach ($alias as $name => $id) |
---|
63 | { |
---|
64 | $m[] = '"'.$name.'" : "'.$id.'"'; |
---|
65 | } |
---|
66 | } |
---|
67 | |
---|
68 | $m = '{'.implode(',', $m).'}'; |
---|
69 | |
---|
70 | $r .= <<<EOF |
---|
71 | var smiley_map = {$m}; |
---|
72 | |
---|
73 | function insert_smiley(smiley, field_id) { |
---|
74 | var el = document.getElementById(field_id), newStart; |
---|
75 | |
---|
76 | if ( ! el && smiley_map[field_id]) { |
---|
77 | el = document.getElementById(smiley_map[field_id]); |
---|
78 | |
---|
79 | if ( ! el) |
---|
80 | return false; |
---|
81 | } |
---|
82 | |
---|
83 | el.focus(); |
---|
84 | smiley = " " + smiley; |
---|
85 | |
---|
86 | if ('selectionStart' in el) { |
---|
87 | newStart = el.selectionStart + smiley.length; |
---|
88 | |
---|
89 | el.value = el.value.substr(0, el.selectionStart) + |
---|
90 | smiley + |
---|
91 | el.value.substr(el.selectionEnd, el.value.length); |
---|
92 | el.setSelectionRange(newStart, newStart); |
---|
93 | } |
---|
94 | else if (document.selection) { |
---|
95 | document.selection.createRange().text = smiley; |
---|
96 | } |
---|
97 | } |
---|
98 | EOF; |
---|
99 | } |
---|
100 | else |
---|
101 | { |
---|
102 | if (is_array($alias)) |
---|
103 | { |
---|
104 | foreach ($alias as $name => $id) |
---|
105 | { |
---|
106 | $r .= 'smiley_map["'.$name.'"] = "'.$id.'";'."\n"; |
---|
107 | } |
---|
108 | } |
---|
109 | } |
---|
110 | |
---|
111 | if ($inline) |
---|
112 | { |
---|
113 | return '<script type="text/javascript" charset="utf-8">/*<![CDATA[ */'.$r.'// ]]></script>'; |
---|
114 | } |
---|
115 | else |
---|
116 | { |
---|
117 | return $r; |
---|
118 | } |
---|
119 | } |
---|
120 | } |
---|
121 | |
---|
122 | // ------------------------------------------------------------------------ |
---|
123 | |
---|
124 | /** |
---|
125 | * Get Clickable Smileys |
---|
126 | * |
---|
127 | * Returns an array of image tag links that can be clicked to be inserted |
---|
128 | * into a form field. |
---|
129 | * |
---|
130 | * @access public |
---|
131 | * @param string the URL to the folder containing the smiley images |
---|
132 | * @return array |
---|
133 | */ |
---|
134 | if ( ! function_exists('get_clickable_smileys')) |
---|
135 | { |
---|
136 | function get_clickable_smileys($image_url, $alias = '', $smileys = NULL) |
---|
137 | { |
---|
138 | // For backward compatibility with js_insert_smiley |
---|
139 | |
---|
140 | if (is_array($alias)) |
---|
141 | { |
---|
142 | $smileys = $alias; |
---|
143 | } |
---|
144 | |
---|
145 | if ( ! is_array($smileys)) |
---|
146 | { |
---|
147 | if (FALSE === ($smileys = _get_smiley_array())) |
---|
148 | { |
---|
149 | return $smileys; |
---|
150 | } |
---|
151 | } |
---|
152 | |
---|
153 | // Add a trailing slash to the file path if needed |
---|
154 | $image_url = rtrim($image_url, '/').'/'; |
---|
155 | |
---|
156 | $used = array(); |
---|
157 | foreach ($smileys as $key => $val) |
---|
158 | { |
---|
159 | // Keep duplicates from being used, which can happen if the |
---|
160 | // mapping array contains multiple identical replacements. For example: |
---|
161 | // :-) and :) might be replaced with the same image so both smileys |
---|
162 | // will be in the array. |
---|
163 | if (isset($used[$smileys[$key][0]])) |
---|
164 | { |
---|
165 | continue; |
---|
166 | } |
---|
167 | |
---|
168 | $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>"; |
---|
169 | |
---|
170 | $used[$smileys[$key][0]] = TRUE; |
---|
171 | } |
---|
172 | |
---|
173 | return $link; |
---|
174 | } |
---|
175 | } |
---|
176 | |
---|
177 | // ------------------------------------------------------------------------ |
---|
178 | |
---|
179 | /** |
---|
180 | * Parse Smileys |
---|
181 | * |
---|
182 | * Takes a string as input and swaps any contained smileys for the actual image |
---|
183 | * |
---|
184 | * @access public |
---|
185 | * @param string the text to be parsed |
---|
186 | * @param string the URL to the folder containing the smiley images |
---|
187 | * @return string |
---|
188 | */ |
---|
189 | if ( ! function_exists('parse_smileys')) |
---|
190 | { |
---|
191 | function parse_smileys($str = '', $image_url = '', $smileys = NULL) |
---|
192 | { |
---|
193 | if ($image_url == '') |
---|
194 | { |
---|
195 | return $str; |
---|
196 | } |
---|
197 | |
---|
198 | if ( ! is_array($smileys)) |
---|
199 | { |
---|
200 | if (FALSE === ($smileys = _get_smiley_array())) |
---|
201 | { |
---|
202 | return $str; |
---|
203 | } |
---|
204 | } |
---|
205 | |
---|
206 | // Add a trailing slash to the file path if needed |
---|
207 | $image_url = preg_replace("/(.+?)\/*$/", "\\1/", $image_url); |
---|
208 | |
---|
209 | foreach ($smileys as $key => $val) |
---|
210 | { |
---|
211 | $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); |
---|
212 | } |
---|
213 | |
---|
214 | return $str; |
---|
215 | } |
---|
216 | } |
---|
217 | |
---|
218 | // ------------------------------------------------------------------------ |
---|
219 | |
---|
220 | /** |
---|
221 | * Get Smiley Array |
---|
222 | * |
---|
223 | * Fetches the config/smiley.php file |
---|
224 | * |
---|
225 | * @access private |
---|
226 | * @return mixed |
---|
227 | */ |
---|
228 | if ( ! function_exists('_get_smiley_array')) |
---|
229 | { |
---|
230 | function _get_smiley_array() |
---|
231 | { |
---|
232 | if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/smileys.php')) |
---|
233 | { |
---|
234 | include(APPPATH.'config/'.ENVIRONMENT.'/smileys.php'); |
---|
235 | } |
---|
236 | elseif (file_exists(APPPATH.'config/smileys.php')) |
---|
237 | { |
---|
238 | include(APPPATH.'config/smileys.php'); |
---|
239 | } |
---|
240 | |
---|
241 | if (isset($smileys) AND is_array($smileys)) |
---|
242 | { |
---|
243 | return $smileys; |
---|
244 | } |
---|
245 | |
---|
246 | return FALSE; |
---|
247 | } |
---|
248 | } |
---|
249 | |
---|
250 | // ------------------------------------------------------------------------ |
---|
251 | |
---|
252 | /** |
---|
253 | * JS Insert Smiley |
---|
254 | * |
---|
255 | * Generates the javascript function needed to insert smileys into a form field |
---|
256 | * |
---|
257 | * DEPRECATED as of version 1.7.2, use smiley_js instead |
---|
258 | * |
---|
259 | * @access public |
---|
260 | * @param string form name |
---|
261 | * @param string field name |
---|
262 | * @return string |
---|
263 | */ |
---|
264 | if ( ! function_exists('js_insert_smiley')) |
---|
265 | { |
---|
266 | function js_insert_smiley($form_name = '', $form_field = '') |
---|
267 | { |
---|
268 | return <<<EOF |
---|
269 | <script type="text/javascript"> |
---|
270 | function insert_smiley(smiley) |
---|
271 | { |
---|
272 | document.{$form_name}.{$form_field}.value += " " + smiley; |
---|
273 | } |
---|
274 | </script> |
---|
275 | EOF; |
---|
276 | } |
---|
277 | } |
---|
278 | |
---|
279 | |
---|
280 | /* End of file smiley_helper.php */ |
---|
281 | /* Location: ./system/helpers/smiley_helper.php */ |
---|