From c6a14d6c6a04eeee2c126ea20ec0e9ee23489ef3 Mon Sep 17 00:00:00 2001 From: cash Date: Thu, 13 Oct 2011 21:31:27 -0400 Subject: displaying users that have been selected and added remove capability --- engine/lib/input.php | 39 ++++++++++++++++++++++++++++++++--- js/lib/userpicker.js | 40 +++++++++++++++++++++++++++--------- views/default/css/elements/forms.php | 15 ++++++-------- views/default/input/userpicker.php | 19 ++++++++--------- 4 files changed, 81 insertions(+), 32 deletions(-) diff --git a/engine/lib/input.php b/engine/lib/input.php index ceda2be3b..f2cefc3e5 100644 --- a/engine/lib/input.php +++ b/engine/lib/input.php @@ -288,17 +288,26 @@ function input_livesearch_page_handler($page) { if ($entities = get_data($query)) { foreach ($entities as $entity) { + $entity = get_entity($entity->guid); + if (!$entity) { + continue; + } + if (in_array('groups', $match_on)) { $value = $entity->guid; } else { $value = $entity->username; } - $output = elgg_view_list_item(get_entity($entity->guid), array( + $output = elgg_view_list_item($entity, array( 'hover' => false, 'class' => 'elgg-autocomplete-item', )); + $icon = elgg_view_entity_icon($entity, 'tiny', array( + 'hover' => false, + )); + $result = array( 'type' => 'user', 'name' => $entity->name, @@ -306,6 +315,8 @@ function input_livesearch_page_handler($page) { 'guid' => $entity->guid, 'label' => $output, 'value' => $value, + 'icon' => $icon, + 'url' => $entity->getURL(), ); $results[$entity->name . rand(1, 100)] = $result; } @@ -326,11 +337,20 @@ function input_livesearch_page_handler($page) { "; if ($entities = get_data($query)) { foreach ($entities as $entity) { - $output = elgg_view_list_item(get_entity($entity->guid), array( + $entity = get_entity($entity->guid); + if (!$entity) { + continue; + } + + $output = elgg_view_list_item($entity, array( 'hover' => false, 'class' => 'elgg-autocomplete-item', )); + $icon = elgg_view_entity_icon($entity, 'tiny', array( + 'hover' => false, + )); + $result = array( 'type' => 'group', 'name' => $entity->name, @@ -338,6 +358,8 @@ function input_livesearch_page_handler($page) { 'guid' => $entity->guid, 'label' => $output, 'value' => $entity->guid, + 'icon' => $icon, + 'url' => $entity->getURL(), ); $results[$entity->name . rand(1, 100)] = $result; @@ -362,11 +384,20 @@ function input_livesearch_page_handler($page) { if ($entities = get_data($query)) { foreach ($entities as $entity) { - $output = elgg_view_list_item(get_entity($entity->guid), array( + $entity = get_entity($entity->guid); + if (!$entity) { + continue; + } + + $output = elgg_view_list_item($entity, array( 'hover' => false, 'class' => 'elgg-autocomplete-item', )); + $icon = elgg_view_entity_icon($entity, 'tiny', array( + 'hover' => false, + )); + $result = array( 'type' => 'user', 'name' => $entity->name, @@ -374,6 +405,8 @@ function input_livesearch_page_handler($page) { 'guid' => $entity->guid, 'label' => $output, 'value' => $entity->username, + 'icon' => $icon, + 'url' => $entity->getURL(), ); $results[$entity->name . rand(1, 100)] = $result; } diff --git a/js/lib/userpicker.js b/js/lib/userpicker.js index 780fa47c6..ece5a6951 100644 --- a/js/lib/userpicker.js +++ b/js/lib/userpicker.js @@ -24,7 +24,9 @@ elgg.userpicker.init = function() { select: elgg.userpicker.addUser }) }); -}; + + $('.elgg-userpicker-remove').live('click', elgg.userpicker.removeUser); +} /** * elgg.userpicker.userList is defined in the input/userpicker view @@ -35,24 +37,42 @@ elgg.userpicker.addUser = function(event, ui) { // do not allow users to be added multiple times if (!(info.guid in elgg.userpicker.userList)) { elgg.userpicker.userList[info.guid] = true; - var users = $(this).siblings('.elgg-user-picker-entries'); + var users = $(this).siblings('.elgg-user-picker-list'); var li = ''; + li += elgg.userpicker.renderUser(info); $('
  • ').html(li).appendTo(users); } $(this).val(''); event.preventDefault(); -}; +} + +elgg.userpicker.removeUser = function(event) { + $(this).closest('.elgg-user-picker-list > li').remove(); + event.preventDefault(); +} -elgg.userpicker.removeUser = function(link, guid) { - $(link).closest('.elgg-user-picker-entries > li').remove(); -}; +/** + * The html in this method has to remain sync'ed with input/userpicker + */ +elgg.userpicker.renderUser = function(info) { + + var deleteLink = "X"; + + var html = "
    "; + html += "
    " + info.icon + "
    "; + html += "
    " + deleteLink + "
    "; + html += "
    " + info.name + "
    "; + html += " li { + border-bottom: 1px dotted #ccc; } /* *************************************** diff --git a/views/default/input/userpicker.php b/views/default/input/userpicker.php index 94129d1e0..87cc6e24a 100644 --- a/views/default/input/userpicker.php +++ b/views/default/input/userpicker.php @@ -24,18 +24,17 @@ elgg_load_js('elgg.userpicker'); function user_picker_add_user($user_id) { $user = get_entity($user_id); if (!$user || !($user instanceof ElggUser)) { - return FALSE; + return false; } - $icon = $user->getIconURL('tiny'); - - $code = '
  • '; - $code .= "
    "; - $code .= ""; - $code .= "
    "; - $code .= "$user->name - $user->username"; - $code .= ""; + $icon = elgg_view_entity_icon($user, 'tiny', array('hover' => false)); + + $code = '
  • '; + $code .= "
    $icon
    "; + $code .= ""; + $code .= "
    " . $user->name . "
    "; $code .= "
    "; + $code .= ""; $code .= '
  • '; return $code; @@ -64,7 +63,7 @@ foreach ($vars['value'] as $user_id) { - +