aboutsummaryrefslogtreecommitdiff
path: root/views/default/input/autocomplete.php
diff options
context:
space:
mode:
Diffstat (limited to 'views/default/input/autocomplete.php')
-rw-r--r--views/default/input/autocomplete.php132
1 files changed, 41 insertions, 91 deletions
diff --git a/views/default/input/autocomplete.php b/views/default/input/autocomplete.php
index 052219a1b..e58eb1ae8 100644
--- a/views/default/input/autocomplete.php
+++ b/views/default/input/autocomplete.php
@@ -1,99 +1,49 @@
<?php
+/**
+ * Displays an autocomplete text input.
+ *
+ * @package Elgg
+ * @subpackage Core
+ *
+ * @todo This currently only works for ONE AUTOCOMPLETE TEXT FIELD on a page.
+ *
+ * @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
+ */
+
+if (isset($vars['class'])) {
+ $vars['class'] = "elgg-input-autocomplete {$vars['class']}";
+} else {
+ $vars['class'] = "elgg-input-autocomplete";
+}
- /**
- * Displays an autocomplete text input.
- *
- * @package Elgg
- * @subpackage Core
- * @author Curverider Ltd
- * @link http://elgg.org/
- *
- * @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['match_owner'] Bool. Match only entities that are owned by logged in user.
- *
- */
-
- global $autocomplete_js_loaded;
-
- $internalname = $vars['internalname'];
- $value = $vars['value'];
-
- if(!$value)
- $value= '';
-
- if($vars['internal_id'])
- $id_autocomplete = $vars['internal_id'];
-
- $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;
-
- if (!isset($autocomplete_js_loaded)) $autocomplete_js_loaded = false;
-
-?>
-
-<!-- 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>");
- }
- });
+$defaults = array(
+ 'value' => '',
+ 'disabled' => false,
+);
- $('input[type=text].autocomplete').result(function(event, data, formatted) {
- eval("var info = " + data + ";");
- $(this).val(info.name);
+$vars = array_merge($defaults, $vars);
- var hidden = $(this).next();
- hidden.val(info.guid);
- });
+$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);
-$(document).ready(function() {
- bindAutocomplete();
-});
-
-</script>
-
-<?php
+elgg_load_js('elgg.autocomplete');
+elgg_load_js('jquery.ui.autocomplete.html');
- $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); ?> />