From 28da2f9dcb560687d4904e7629ad38049ed3188a Mon Sep 17 00:00:00 2001 From: cash Date: Thu, 6 Oct 2011 22:27:33 -0400 Subject: using html extension to jquery.ui autocomplete --- views/default/input/autocomplete.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'views/default/input') diff --git a/views/default/input/autocomplete.php b/views/default/input/autocomplete.php index 421541e24..e58eb1ae8 100644 --- a/views/default/input/autocomplete.php +++ b/views/default/input/autocomplete.php @@ -8,7 +8,7 @@ * @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|subtype) + * @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 */ @@ -26,15 +26,19 @@ $defaults = array( $vars = array_merge($defaults, $vars); -$ac_url_params = http_build_query(array( - 'match_on' => $vars['match_on'], - 'match_owner' => $vars['match_owner'], -)); - -unset($vars['match_on']); -unset($vars['match_owner']); +$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); elgg_load_js('elgg.autocomplete'); +elgg_load_js('jquery.ui.autocomplete.html'); ?> -- cgit v1.2.3 From 7e23a3bd6382190084f136ed5aeb6b910ae00eee Mon Sep 17 00:00:00 2001 From: cash Date: Thu, 13 Oct 2011 20:45:40 -0400 Subject: got the friends option working for user picker --- js/lib/userpicker.js | 53 ++++++++++---------------------------- views/default/input/userpicker.php | 3 ++- 2 files changed, 16 insertions(+), 40 deletions(-) (limited to 'views/default/input') diff --git a/js/lib/userpicker.js b/js/lib/userpicker.js index 826bf21a0..780fa47c6 100644 --- a/js/lib/userpicker.js +++ b/js/lib/userpicker.js @@ -1,14 +1,14 @@ elgg.provide('elgg.userpicker'); elgg.userpicker.init = function() { + // binding autocomplete. // doing this as an each so we can pass this to functions. $('.elgg-input-user-picker').each(function() { - - var _this = this; - + $(this).autocomplete({ source: function(request, response) { + var params = elgg.userpicker.getSearchParams(this); elgg.get('livesearch', { @@ -20,53 +20,28 @@ elgg.userpicker.init = function() { }); }, minLength: 2, + html: "html", select: elgg.userpicker.addUser }) - - //@todo This seems convoluted - .data("autocomplete")._renderItem = elgg.userpicker.formatItem; }); }; -elgg.userpicker.formatItem = function(ul, item) { - switch (item.type) { - case 'user': - case 'group': - r = item.icon + item.name + ' - ' + item.desc; - break; - - default: - r = item.name + ' - ' + item.desc; - break; - } - - return $("
  • ") - .data("item.autocomplete", item) - .append(r) - .appendTo(ul); -}; - +/** + * elgg.userpicker.userList is defined in the input/userpicker view + */ elgg.userpicker.addUser = function(event, ui) { var info = ui.item; - + // do not allow users to be added multiple times if (!(info.guid in elgg.userpicker.userList)) { elgg.userpicker.userList[info.guid] = true; - - var picker = $(this).closest('.elgg-user-picker'); - var users = picker.find('.elgg-user-picker-entries'); - var internalName = users.find('[type=hidden]').attr('name'); - - // not sure why formatted isn't. - var formatted = elgg.userpicker.formatItem(data); - - // add guid as hidden input and to list. - var li = formatted + ' ' - + ''; + var users = $(this).siblings('.elgg-user-picker-entries'); + var li = ''; $('
  • ').html(li).appendTo(users); - - $(this).val(''); } + + $(this).val(''); + event.preventDefault(); }; elgg.userpicker.removeUser = function(link, guid) { @@ -74,7 +49,7 @@ elgg.userpicker.removeUser = function(link, guid) { }; elgg.userpicker.getSearchParams = function(e) { - if ($(e).closest('.elgg-user-picker').find('[name=match_on]').attr('checked')) { + if (e.element.siblings('[name=match_on]').attr('checked')) { return {'match_on[]': 'friends', 'term' : e.term}; } else { return {'match_on[]': 'users', 'term' : e.term}; diff --git a/views/default/input/userpicker.php b/views/default/input/userpicker.php index b852d24fc..94129d1e0 100644 --- a/views/default/input/userpicker.php +++ b/views/default/input/userpicker.php @@ -62,7 +62,8 @@ foreach ($vars['value'] as $user_id) { ?>
    - + +
    \ No newline at end of file -- cgit v1.2.3