}
function editor_replace(item) {
- if(typeof item.replace !== 'undefined') {
+ if (typeof item.replace !== 'undefined') {
return '$1$2' + item.replace;
}
+ if (typeof item.addr !== 'undefined') {
+ return '$1$2' + item.addr + ' ';
+ }
+
// $2 ensures that prefix (@,@!) is preserved
var id = item.id;
// don't add the id if it is empty (the id empty eg. if there are unknow contacts in thread)
- if(id.length < 1)
+ if (id.length < 1) {
return '$1$2' + item.nick.replace(' ', '') + ' ';
-
+ }
// 16 chars of hash should be enough. Full hash could be used if it can be done in a visually appealing way.
// 16 chars is also the minimum length in the backend (otherwise it's interpreted as a local id).
- if(id.length > 16)
+ if (id.length > 16) {
id = item.id.substring(0,16);
-
+ }
return '$1$2' + item.nick.replace(' ', '') + '+' + id + ' ';
}
if (word != null) {
var textBefore = text.value.substring(0, caretPos);
var textAfter = text.value.substring(caretPos, text.length);
- $('#' + id).val(textBefore + '\r\n[*] ' + textAfter);
+ $('#' + id).val(textBefore + '\r\n[*] ' + textAfter).trigger('change');
setCaretPosition(text, caretPos + 5);
return true;
}
template: contact_format,
};
+ // Autocomplete forums
+ forums = {
+ match: /(^|\s)(!\!*)([^ \n]+)$/,
+ index: 3,
+ search: function(term, callback) { contact_search(term, callback, backend_url, 'f'); },
+ replace: editor_replace,
+ template: contact_format,
+ };
+
// Autocomplete smilies e.g. ":like"
smilies = {
match: /(^|\s)(:[a-z]{2,})$/,
};
this.attr('autocomplete','off');
- this.textcomplete([contacts,smilies], {className:'acpopup', zIndex:10000});
+ this.textcomplete([contacts, forums, smilies], {className:'acpopup', zIndex:10000});
};
})( jQuery );