Allow Emoji to be overwritten. Show added Emoji in search.

This commit is contained in:
Robin Ward 2014-11-04 12:19:35 -05:00
parent bc037a317d
commit 1302a0a276
1 changed files with 43 additions and 34 deletions

View File

@ -6,17 +6,20 @@
_extendedEmoji[code] = url; _extendedEmoji[code] = url;
}; };
function imageFor(code) { function urlFor(code) {
if (emoji.indexOf(code) !== -1) {
var url = Discourse.getURL('/plugins/emoji/images/' + code + '.png');
return ['img', {href: url, title: ':' + code + ':', 'class': 'emoji', alt: code}];
} else {
var url = _extendedEmoji[code]; var url = _extendedEmoji[code];
if (!url && emoji.indexOf(code) !== -1) {
url = Discourse.getURL('/plugins/emoji/images/' + code + '.png');
}
return url;
}
function imageFor(code) {
var url = urlFor(code);
if (url) { if (url) {
return ['img', {href: url, title: ':' + code + ':', 'class': 'emoji', alt: code}]; return ['img', {href: url, title: ':' + code + ':', 'class': 'emoji', alt: code}];
} }
} }
}
// Also support default emotions // Also support default emotions
var translations = { var translations = {
@ -125,49 +128,55 @@
"{{#each options}}" + "{{#each options}}" +
"<li>" + "<li>" +
"<a href='#'>" + "<a href='#'>" +
"<img src='" + baseUrl + "plugins/emoji/images/{{this}}.png?v=1' class='emoji'> " + "<img src='{{src}}' class='emoji'> " +
"{{this}}</a>" + "{{code}}</a>" +
"</li>" + "</li>" +
"{{/each}}" + "{{/each}}" +
"</ul>" + "</ul>" +
"</div>"); "</div>");
var toSearch = emoji.concat(Object.keys(_extendedEmoji));
$('#wmd-input').autocomplete({ $('#wmd-input').autocomplete({
template: template, template: template,
key: ":", key: ":",
transformComplete: function(v){ return v + ":"; }, transformComplete: function(v){ return v.code + ":"; },
dataSource: function(term){ dataSource: function(term){
return new Ember.RSVP.Promise(function(resolve) {
var full = ":" + term; var full = ":" + term;
term = term.toLowerCase(); term = term.toLowerCase();
if (term === "") { if (term === "") {
return Ember.RSVP.resolve(["smile", "smiley", "wink", "sunny", "blush"]); return resolve(["smile", "smiley", "wink", "sunny", "blush"]);
} }
if (translations[full]) { if (translations[full]) {
return Ember.RSVP.resolve([translations[full]]); return resolve([translations[full]]);
} }
var options = []; var options = [];
var i; var i;
for (i=0; i < emoji.length; i++) { for (i=0; i < toSearch.length; i++) {
if (emoji[i].indexOf(term) === 0) { if (toSearch[i].indexOf(term) === 0) {
options.push(emoji[i]); options.push(toSearch[i]);
if(options.length > 4) { break; } if(options.length > 4) { break; }
} }
} }
if (options.length <= 4) { if (options.length <= 4) {
for (i=0; i < emoji.length; i++) { for (i=0; i < toSearch.length; i++) {
if (emoji[i].indexOf(term) > 0) { if (toSearch[i].indexOf(term) > 0) {
options.push(emoji[i]); options.push(toSearch[i]);
if(options.length > 4) { break; } if(options.length > 4) { break; }
} }
} }
} }
return Ember.RSVP.resolve(options); return resolve(options);
}).then(function(list) {
return list.map(function(i) {
return {code: i, src: urlFor(i)};
});
});
} }
}); });
}); });