mirror of
https://github.com/discourse/discourse.git
synced 2025-02-04 11:35:16 +08:00
f661fa609e
http://meta.discourse.org/t/is-it-better-for-discourse-to-use-javascript-or-coffeescript/3153
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
(function() {
|
|
|
|
Discourse.Mention = (function() {
|
|
var cache, load, localCache, lookup, lookupCache;
|
|
localCache = {};
|
|
cache = function(name, valid) {
|
|
localCache[name] = valid;
|
|
};
|
|
lookupCache = function(name) {
|
|
return localCache[name];
|
|
};
|
|
lookup = function(name, callback) {
|
|
var cached;
|
|
cached = lookupCache(name);
|
|
if (cached === true || cached === false) {
|
|
callback(cached);
|
|
return false;
|
|
} else {
|
|
jQuery.get("/users/is_local_username", {
|
|
username: name
|
|
}, function(r) {
|
|
cache(name, r.valid);
|
|
return callback(r.valid);
|
|
});
|
|
return true;
|
|
}
|
|
};
|
|
load = function(e) {
|
|
var $elem, loading, username;
|
|
$elem = jQuery(e);
|
|
if ($elem.data('mention-tested')) {
|
|
return;
|
|
}
|
|
username = $elem.text();
|
|
username = username.substr(1);
|
|
loading = lookup(username, function(valid) {
|
|
if (valid) {
|
|
return $elem.replaceWith("<a href='/users/" + (username.toLowerCase()) + "' class='mention'>@" + username + "</a>");
|
|
} else {
|
|
return $elem.removeClass('mention-loading').addClass('mention-tested');
|
|
}
|
|
});
|
|
if (loading) {
|
|
return $elem.addClass('mention-loading');
|
|
}
|
|
};
|
|
return {
|
|
load: load,
|
|
lookup: lookup,
|
|
lookupCache: lookupCache
|
|
};
|
|
})();
|
|
|
|
}).call(this);
|