aboutsummaryrefslogtreecommitdiff
path: root/views/default/input
diff options
context:
space:
mode:
Diffstat (limited to 'views/default/input')
-rw-r--r--views/default/input/autocomplete.php110
1 files changed, 110 insertions, 0 deletions
diff --git a/views/default/input/autocomplete.php b/views/default/input/autocomplete.php
new file mode 100644
index 000000000..71f287a2d
--- /dev/null
+++ b/views/default/input/autocomplete.php
@@ -0,0 +1,110 @@
+<?php
+
+ /**
+ * 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'];
+
+ if(!$internalname)
+ $internalname = 'entity_selected_guid';
+
+ $internalname_text = $vars['internalname_text'];
+ if(!$internalname_text)
+ $internalname_text = 'selected_text';
+
+ $value_id = $vars['value_id'];
+ if(!$value_id)
+ $value_id = 0;
+
+ $value_text = $vars['value_text'];
+ if(!$value_text)
+ $value_text = '';
+
+ 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="autocomplete_params" value="<?php echo $ac_url_params; ?>" />
+ <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>
+
+<?php
+
+ $autocomplete_js_loaded = true;
+ } else {
+?>
+<!-- rebind autocomplete -->
+<script type="text/javascript">bindAutocomplete();</script>
+<?php
+ } \ No newline at end of file