diff options
Diffstat (limited to 'views/default/input/autocomplete.php')
| -rw-r--r-- | views/default/input/autocomplete.php | 113 |
1 files changed, 30 insertions, 83 deletions
diff --git a/views/default/input/autocomplete.php b/views/default/input/autocomplete.php index 7dc088d0e..e58eb1ae8 100644 --- a/views/default/input/autocomplete.php +++ b/views/default/input/autocomplete.php @@ -4,99 +4,46 @@ * * @package Elgg * @subpackage Core - * @author Curverider Ltd - * @link http://elgg.org/ * - * @TODO: This currently only works for ONE AUTOCOMPLETE TEXT FIELD on a page. + * @todo This currently only works for ONE AUTOCOMPLETE TEXT FIELD on a page. * - * @uses $vars['value'] The current value, if any - * @uses $vars['js'] Any Javascript to enter into the input tag - * @uses $vars['internalname'] The name of the input field - * @uses $vars['match_on'] Array | str What to match on. all|array(group|user|friend|subtype) + * @uses $vars['value'] Current value for the text input + * @uses $vars['match_on'] Array | str What to match on. all|array(groups|users|friends) * @uses $vars['match_owner'] Bool. Match only entities that are owned by logged in user. - * + * @uses $vars['class'] Additional CSS class */ -global $autocomplete_js_loaded; - -$internalname = $vars['internalname']; -$value = $vars['value']; - -if(!$value) { - $value= ''; +if (isset($vars['class'])) { + $vars['class'] = "elgg-input-autocomplete {$vars['class']}"; +} else { + $vars['class'] = "elgg-input-autocomplete"; } -if($vars['internal_id']) { - $id_autocomplete = $vars['internal_id']; -} +$defaults = array( + 'value' => '', + 'disabled' => false, +); -$ac_url_params = http_build_query(array( - 'match_on' => $vars['match_on'], - 'match_owner' => $vars['match_owner'], -)); -$ac_url = $vars['url'] . 'pg/autocomplete?' . $ac_url_params; +$vars = array_merge($defaults, $vars); -if (!isset($autocomplete_js_loaded)) { - $autocomplete_js_loaded = false; +$params = array(); +if (isset($vars['match_on'])) { + $params['match_on'] = $vars['match_on']; + unset($vars['match_on']); } +if (isset($vars['match_owner'])) { + $params['match_owner'] = $vars['match_owner']; + unset($vars['match_owner']); +} +$ac_url_params = http_build_query($params); -?> - -<!-- show the input --> -<input type="text" class='autocomplete' name ='<?php echo $internalname; ?>_autocomplete' value='<?php echo $value?>' /> -<input type="hidden" name="<?php echo $internalname; ?>" value='<?php echo $value; ?>' /> - -<?php -if (!$autocomplete_js_loaded) { - ?> - - <!-- include autocomplete --> - <script language="javascript" type="text/javascript" src="<?php echo $vars['url']; ?>vendors/jquery/jquery.autocomplete.min.js"></script> - <script type="text/javascript"> - function bindAutocomplete() { - $('input[type=text].autocomplete').autocomplete("<?php echo $ac_url; ?>", { - minChars: 1, - matchContains: true, - autoFill: false, - formatItem: function(row, i, max, term) { - eval("var info = " + row + ";"); - var r = ''; - - switch (info.type) { - case 'user': - case 'group': - r = info.icon + info.name + ' - ' + info.desc; - break; - - default: - r = info.name + ' - ' + info.desc; - break; - } - return r.replace(new RegExp("(" + term + ")", "gi"), "<b>$1</b>"); - } - }); - - $('input[type=text].autocomplete').result(function(event, data, formatted) { - eval("var info = " + data + ";"); - $(this).val(info.name); - - var hidden = $(this).next(); - hidden.val(info.guid); - }); - } - - $(document).ready(function() { - bindAutocomplete(); - }); - - </script> +elgg_load_js('elgg.autocomplete'); +elgg_load_js('jquery.ui.autocomplete.html'); - <?php +?> - $autocomplete_js_loaded = true; -} else { - ?> - <!-- rebind autocomplete --> - <script type="text/javascript">bindAutocomplete();</script> - <?php -}
\ No newline at end of file +<script type="text/javascript"> +elgg.provide('elgg.autocomplete'); +elgg.autocomplete.url = "<?php echo elgg_get_site_url() . 'livesearch?' . $ac_url_params; ?>"; +</script> +<input type="text" <?php echo elgg_format_attributes($vars); ?> /> |
