Revert "Support structured data for autocompletion results; map 'type' attribute to CSS class for autocomplete list items"
This reverts commit e3773d46cb4f06aaab2747db98765edd6d871524.
| | |
| | | this.ksearch_destroy(); |
| | | |
| | | // insert all members of a group |
| | | if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].type == 'group') { |
| | | if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].id) { |
| | | insert += this.env.contacts[id].name + this.env.recipients_delimiter; |
| | | this.group2expand[this.env.contacts[id].id] = $.extend({ input: this.ksearch_input }, this.env.contacts[id]); |
| | | this.http_request('mail/group-expand', {_source: this.env.contacts[id].source, _gid: this.env.contacts[id].id}, false); |
| | | } |
| | | else if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].name) { |
| | | insert = this.env.contacts[id].name + this.env.recipients_delimiter; |
| | | trigger = true; |
| | | } |
| | | else if (typeof this.env.contacts[id] === 'string') { |
| | | insert = this.env.contacts[id] + this.env.recipients_delimiter; |
| | |
| | | this.ksearch_input.setSelectionRange(cpos, cpos); |
| | | |
| | | if (trigger) { |
| | | this.triggerEvent('autocomplete_insert', { field:this.ksearch_input, insert:insert, data:this.env.contacts[id] }); |
| | | this.triggerEvent('autocomplete_insert', { field:this.ksearch_input, insert:insert }); |
| | | this.compose_type_activity++; |
| | | } |
| | | }; |
| | |
| | | return; |
| | | |
| | | // display search results |
| | | var i, len, ul, li, text, type, init, |
| | | var i, len, ul, li, text, init, |
| | | value = this.ksearch_value, |
| | | data = this.ksearch_data, |
| | | maxlen = this.env.autocomplete_max ? this.env.autocomplete_max : 15; |
| | |
| | | if (results && (len = results.length)) { |
| | | for (i=0; i < len && maxlen > 0; i++) { |
| | | text = typeof results[i] === 'object' ? results[i].name : results[i]; |
| | | type = typeof results[i] === 'object' ? results[i].type : ''; |
| | | li = document.createElement('LI'); |
| | | li.innerHTML = text.replace(new RegExp('('+RegExp.escape(value)+')', 'ig'), '##$1%%').replace(/</g, '<').replace(/>/g, '>').replace(/##([^%]+)%%/g, '<b>$1</b>'); |
| | | li.onmouseover = function(){ ref.ksearch_select(this); }; |
| | | li.onmouseup = function(){ ref.ksearch_click(this) }; |
| | | li._rcm_id = this.env.contacts.length + i; |
| | | if (type) li.className = type; |
| | | ul.appendChild(li); |
| | | maxlen -= 1; |
| | | } |
| | |
| | | if (empty($this->prop['groups']['scope'])) |
| | | $this->prop['groups']['scope'] = 'sub'; |
| | | // extend group objectclass => member attribute mapping |
| | | if (!empty($this->prop['groups']['event-panel-summary'])) |
| | | $this->group_types = array_merge($this->group_types, $this->prop['groups']['event-panel-summary']); |
| | | if (!empty($this->prop['groups']['class_member_attr'])) |
| | | $this->group_types = array_merge($this->group_types, $this->prop['groups']['class_member_attr']); |
| | | |
| | | // add group name attrib to the list of attributes to be fetched |
| | | $fetch_attributes[] = $this->prop['groups']['name_attr']; |
| | |
| | | $out['_type'] = 'group'; |
| | | $out['readonly'] = true; |
| | | $fieldmap['name'] = $this->group_data['name_attr'] ? $this->group_data['name_attr'] : $this->prop['groups']['name_attr']; |
| | | } |
| | | |
| | | // assign object type from object class mapping |
| | | if (!empty($this->prop['class_type_map'])) { |
| | | foreach (array_map('strtolower', (array)$rec['objectclass']) as $objcls) { |
| | | if (!empty($this->prop['class_type_map'][$objcls])) { |
| | | $out['_type'] = $this->prop['class_type_map'][$objcls]; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | foreach ($fieldmap as $rf => $lf) |
| | |
| | | |
| | | // skip duplicates |
| | | if (!in_array($contact, $contacts)) { |
| | | $contacts[] = array('name' => $contact, 'type' => $sql_arr['_type']); |
| | | $contacts[] = $contact; |
| | | $sort_keys[] = sprintf('%s %03d', $sql_arr['name'] , $idx++); |
| | | |
| | | if (count($contacts) >= $MAXNUM) { |
| | |
| | | if ($group_prop['email']) { |
| | | $idx = 0; |
| | | foreach ((array)$group_prop['email'] as $email) { |
| | | $contacts[] = array('name' => format_email_recipient($email, $group['name']), 'type' => 'group'); |
| | | $contacts[] = format_email_recipient($email, $group['name']); |
| | | $sort_keys[] = sprintf('%s %03d', $group['name'] , $idx++); |
| | | |
| | | if (count($contacts) >= $MAXNUM) { |
| | |
| | | $sort_keys[] = $group['name']; |
| | | $contacts[] = array( |
| | | 'name' => $group['name'] . ' (' . intval($result->count) . ')', |
| | | 'type' => 'group', |
| | | 'id' => $group['ID'], |
| | | 'source' => $id |
| | | ); |