/** * Displays a field for user selection, includes user array in json format, and the jQuery autocomplete() function. * * * @since 3.0 */ function draw_user_auto_complete_field($args = '') { global $wpi_settings, $wpdb, $wp_scripts; //** Check if autocomplete scrip is loaded, and load it inline */ if(!wp_script_is('jquery.autocomplete')) { ?> <script type='text/javascript' src='<?php echo WPI_URL . "/core/js/jquery.autocomplete.pack.js"; ?>'></script> <?php } //** Extract passed args and load defaults */ extract(wp_parse_args($args, array( 'input_name' => 'wpi[new_invoice][user_email]', 'input_class' => 'nput_field', 'input_id' => 'wp_invoice_userlookup', 'input_style' => '' )), EXTR_SKIP); //** Get array of users */ $user_array = WPI_Functions::build_user_array(); //** Create string of users to use for autocompletion script */ $user_array_js_string = ''; foreach ($user_array as $key => $user) { if (empty($user['user_email'])) break; $user_array_js_string .= "{name:'{$user['display_name']}',email:'{$user['user_email']}',ID:'{$user['ID']}'}"; $user_array_js_string .= ( $key != end(array_keys($user_array)) ? ", " : ""); } ?> <script type="text/javascript"> var wp_invoice_users = [<?php echo $user_array_js_string; ?>]; jQuery(document).ready(function() { jQuery("#<?php echo $input_id; ?>").focus(); jQuery("#<?php echo $input_id; ?>").autocomplete(wp_invoice_users, { minChars: 0, width: 500, scrollHeight: 500, matchContains: true, autoFill: false, formatItem: function(row, i, max) { return row.name + " (" + row.email + ")"; }, formatMatch: function(row, i, max) { return row.name + " " + row.email; }, formatResult: function(row) { return row.email; } }); }); </script> <input name="<?php echo $input_name; ?>" class="<?php echo $input_class; ?>" id="<?php echo $input_id; ?>" style="<?php echo $input_style; ?>" /> <?php }