blob: 91a397e3703f16954bfe77f81b21dc601eaf311f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<?php
/**
* User Picker. Sends an array of user guids.
*
* @package Elgg
* @subpackage Core
*
* @uses $vars['value'] Array of user guids for already selected users or null
*
* The name of the hidden fields is members[]
*
* @warning Only a single input/userpicker is supported per web page.
*
* Defaults to lazy load user lists in alphabetical order. User needs
* to type two characters before seeing the user popup list.
*
* As users are selected they move down to a "users" box.
* When this happens, a hidden input is created with the
* name of members[] and a value of the GUID.
*/
elgg_load_js('elgg.userpicker');
elgg_load_js('jquery.ui.autocomplete.html');
function user_picker_add_user($user_id) {
$user = get_entity($user_id);
if (!$user || !($user instanceof ElggUser)) {
return false;
}
$icon = elgg_view_entity_icon($user, 'tiny', array('use_hover' => false));
// this html must be synced with the userpicker.js library
$code = '<li><div class="elgg-image-block">';
$code .= "<div class='elgg-image'>$icon</div>";
$code .= "<div class='elgg-image-alt'><a href='#' class='elgg-userpicker-remove'>X</a></div>";
$code .= "<div class='elgg-body'>" . $user->name . "</div>";
$code .= "</div>";
$code .= "<input type=\"hidden\" name=\"members[]\" value=\"$user_id\">";
$code .= '</li>';
return $code;
}
// loop over all values and prepare them so that "in" will work in javascript
$values = array();
if (!is_array($vars['value'])) {
$vars['value'] = array($vars['value']);
}
foreach ($vars['value'] as $value) {
$values[$value] = TRUE;
}
// convert the values to a json-encoded list
$json_values = json_encode($values);
// create an HTML list of users
$user_list = '';
foreach ($vars['value'] as $user_id) {
$user_list .= user_picker_add_user($user_id);
}
?>
<div class="elgg-user-picker">
<input type="text" class="elgg-input-user-picker" size="30"/>
<input type="checkbox" name="match_on" value="true" />
<label><?php echo elgg_echo('userpicker:only_friends'); ?></label>
<ul class="elgg-user-picker-list"><?php echo $user_list; ?></ul>
</div>
<script type="text/javascript">
// @todo grab the values in the init function rather than using inline JS
elgg.userpicker.userList = <?php echo $json_values ?>;
</script>
|