diff options
Diffstat (limited to 'static/pastebin.js')
-rw-r--r-- | static/pastebin.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/static/pastebin.js b/static/pastebin.js new file mode 100644 index 0000000..8507726 --- /dev/null +++ b/static/pastebin.js @@ -0,0 +1,61 @@ +(function() { + var global = this; + + var jug = new Juggernaut(); + + var lib = global.pastebin = { + urlRoot : '/', + jug : jug, + + autoHideFlashes : function() { + var flashes = $('p.flash:visible').hide(); + if (flashes.length) { + flashes.slideDown('fast'); + window.setTimeout(function() { + flashes.slideUp('slow'); + }, 5000); + } + }, + + flash : function(message) { + $('<p class=flash></p>') + .append(message) + .hide() + .insertAfter('ul.nav') + .slideDown('fast'); + }, + + onNewReply : function(reply, type) { + var pasteDescription = ''; + if (type == 'user') { + pasteDescription = 'your paste <a href="' + + pastebin.urlRoot + reply.paste_id + '">#' + reply.paste_id + '</a>'; + } else { + pasteDescription = 'this paste'; + } + var msg = $('<span>New reply to ' + pasteDescription + ': <a href="' + + pastebin.urlRoot + reply.reply_id + '">#' + reply.reply_id + '</a></span>'); + if (reply.author) + msg.append($('<span></span>').text(' ' + reply.author)) + lib.flash(msg); + }, + + subscribePaste : function(pasteID) { + jug.subscribe('paste-replies:' + pasteID, function(data) { + lib.onNewReply(data, 'paste'); + }); + }, + + subscribeUser : function(userID) { + jug.subscribe('user-replies:' + userID, function(data) { + lib.onNewReply(data, 'user'); + }); + } + }; + + + $(function() { + /* animate the server side flashes a bit */ + lib.autoHideFlashes(); + }); +})(); |