diff options
Diffstat (limited to 'views')
-rw-r--r-- | views/default/input/autocomplete.php | 86 |
1 files changed, 11 insertions, 75 deletions
diff --git a/views/default/input/autocomplete.php b/views/default/input/autocomplete.php index 1b2652c16..8fe5ab664 100644 --- a/views/default/input/autocomplete.php +++ b/views/default/input/autocomplete.php @@ -7,95 +7,31 @@ * * @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(groups|users|friends|subtype) * @uses $vars['match_owner'] Bool. Match only entities that are owned by logged in user. * */ -global $autocomplete_js_loaded; +$defaults = array( + 'class' => '', + 'value' => '', +); -$internalname = $vars['internalname']; -$value = $vars['value']; +$vars = array_merge($defaults, $vars); -if(!$value) { - $value= ''; -} - -if($vars['internal_id']) { - $id_autocomplete = $vars['internal_id']; -} +$vars['class'] = trim("elgg-input-autocomplete {$vars['class']}"); $ac_url_params = http_build_query(array( 'match_on' => $vars['match_on'], 'match_owner' => $vars['match_owner'], )); -$ac_url = elgg_get_site_url() . 'pg/livesearch?' . $ac_url_params; -if (!isset($autocomplete_js_loaded)) { - $autocomplete_js_loaded = false; -} +elgg_register_js('js/lib/autocomplete.js', 'autocomplete', 'footer'); ?> -<!-- 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) { - ?> -<?php //@todo JS 1.8: no ?> - <!-- include autocomplete --> - <script type="text/javascript" src="<?php echo elgg_get_site_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> - - <?php +<script type="text/javascript"> +elgg.autocomplete.url = "<?php elgg_get_site_url() . 'pg/livesearch?' . $ac_url_params; ?>"; +</script> +<input type="text" <?php echo elgg_format_attributes($vars); ?> /> - $autocomplete_js_loaded = true; -} else { - ?> - <!-- rebind autocomplete --> - <?php //@todo JS 1.8: no ?> - <script type="text/javascript">bindAutocomplete();</script> - <?php -}
\ No newline at end of file |