diff --git a/plugins/emoji/assets/javascripts/emoji.js.erb b/plugins/emoji/assets/javascripts/emoji.js.erb
index cceea054b0f..147f91ca344 100644
--- a/plugins/emoji/assets/javascripts/emoji.js.erb
+++ b/plugins/emoji/assets/javascripts/emoji.js.erb
@@ -6,15 +6,18 @@
_extendedEmoji[code] = url;
};
+ function urlFor(code) {
+ var url = _extendedEmoji[code];
+ if (!url && emoji.indexOf(code) !== -1) {
+ url = Discourse.getURL('/plugins/emoji/images/' + code + '.png');
+ }
+ return url;
+ }
+
function imageFor(code) {
- if (emoji.indexOf(code) !== -1) {
- var url = Discourse.getURL('/plugins/emoji/images/' + code + '.png');
+ var url = urlFor(code);
+ if (url) {
return ['img', {href: url, title: ':' + code + ':', 'class': 'emoji', alt: code}];
- } else {
- var url = _extendedEmoji[code];
- if (url) {
- return ['img', {href: url, title: ':' + code + ':', 'class': 'emoji', alt: code}];
- }
}
}
@@ -125,49 +128,55 @@
"{{#each options}}" +
"
" +
"" +
- "
" +
- "{{this}}" +
+ "
" +
+ "{{code}}" +
"" +
"{{/each}}" +
"" +
"");
+ var toSearch = emoji.concat(Object.keys(_extendedEmoji));
$('#wmd-input').autocomplete({
template: template,
key: ":",
- transformComplete: function(v){ return v + ":"; },
+ transformComplete: function(v){ return v.code + ":"; },
dataSource: function(term){
+ return new Ember.RSVP.Promise(function(resolve) {
+ var full = ":" + term;
+ term = term.toLowerCase();
- var full = ":" + term;
- term = term.toLowerCase();
-
- if (term === "") {
- return Ember.RSVP.resolve(["smile", "smiley", "wink", "sunny", "blush"]);
- }
-
- if (translations[full]) {
- return Ember.RSVP.resolve([translations[full]]);
- }
-
- var options = [];
- var i;
- for (i=0; i < emoji.length; i++) {
- if (emoji[i].indexOf(term) === 0) {
- options.push(emoji[i]);
- if(options.length > 4) { break; }
+ if (term === "") {
+ return resolve(["smile", "smiley", "wink", "sunny", "blush"]);
}
- }
- if (options.length <= 4) {
- for (i=0; i < emoji.length; i++) {
- if (emoji[i].indexOf(term) > 0) {
- options.push(emoji[i]);
+ if (translations[full]) {
+ return resolve([translations[full]]);
+ }
+
+ var options = [];
+ var i;
+ for (i=0; i < toSearch.length; i++) {
+ if (toSearch[i].indexOf(term) === 0) {
+ options.push(toSearch[i]);
if(options.length > 4) { break; }
}
}
- }
- return Ember.RSVP.resolve(options);
+ if (options.length <= 4) {
+ for (i=0; i < toSearch.length; i++) {
+ if (toSearch[i].indexOf(term) > 0) {
+ options.push(toSearch[i]);
+ if(options.length > 4) { break; }
+ }
+ }
+ }
+
+ return resolve(options);
+ }).then(function(list) {
+ return list.map(function(i) {
+ return {code: i, src: urlFor(i)};
+ });
+ });
}
});
});