diff --git a/public/javascripts/application.coffee b/public/javascripts/application.coffee index aed2847..091ba0f 100644 --- a/public/javascripts/application.coffee +++ b/public/javascripts/application.coffee @@ -5,10 +5,10 @@ class MailCatcher $('#message .views .tab').live 'click', (e) => @loadMessageBody $('#messages tr.selected').attr('data-message-id'), $(e.currentTarget).attr 'data-message-format' - + $('nav.app .clear a').live 'click', (e) => if confirm "You will lose all your received messages.\n\nAre you sure you want to clear all messages?" - $.ajax + $.ajax url: '/messages' type: 'DELETE' success: -> @@ -26,17 +26,17 @@ class MailCatcher location.replace $('body > header h1 a').attr('href') error: -> alert 'Error while quitting.' - + @refresh() @subscribe() - + # Only here because Safari's Date parsing *sucks* # We throw away the timezone, but you could use it for something... parseDateRegexp: /^(\d{4})[-\/\\](\d{2})[-\/\\](\d{2})(?:\s+|T)(\d{2})[:-](\d{2})[:-](\d{2})(?:([ +-]\d{2}:\d{2}|\s*\S+|Z?))?$/ parseDate: (date) -> if match = @parseDateRegexp.exec(date) new Date match[1], match[2], match[3], match[4], match[5], match[6], 0 - + formatDate: (date) -> date &&= @parseDate(date) if typeof(date) == "string" date &&= date.toString("dddd, d MMM yyyy h:mm:ss tt") @@ -44,7 +44,7 @@ class MailCatcher haveMessage: (message) -> message = message.id if message.id? $("#messages tbody tr[data-message-id=\"#{message}\"]").length > 0 - + addMessage: (message) -> $('#messages tbody').append \ $('').attr('data-message-id', message.id.toString()) @@ -52,15 +52,15 @@ class MailCatcher .append($('').text((message.recipients || []).join(', '))) .append($('').text(message.subject)) .append($('').text @formatDate message.created_at) - + loadMessage: (id) -> id = id.id if id?.id? id ||= $('#messages tr.selected').attr 'data-message-id' - + if id? $('#messages tbody tr:not([data-message-id="'+id+'"])').removeClass 'selected' $('#messages tbody tr[data-message-id="'+id+'"]').addClass 'selected' - + $.getJSON '/messages/' + id + '.json', (message) => $('#message .metadata dd.created_at').text @formatDate message.created_at $('#message .metadata dd.from').text message.sender @@ -73,11 +73,11 @@ class MailCatcher $el.show() else $el.hide() - + if $("#message .views .tab.selected:not(:visible)").length $("#message .views .tab.selected").removeClass "selected" $("#message .views .tab:visible:first").addClass "selected" - + if message.attachments.length $('#message .metadata dd.attachments ul').empty() $.each message.attachments, (i, attachment) -> @@ -85,22 +85,22 @@ class MailCatcher $('#message .metadata .attachments').show() else $('#message .metadata .attachments').hide() - - $('#message .actions .download a').attr 'href', "/messages/#{id}.eml" - + + $('#message .views .download a').attr 'href', "/messages/#{id}.eml" + @loadMessageBody() loadMessageBody: (id, format) -> id ||= $('#messages tr.selected').attr 'data-message-id' format ||= $('#message .views .tab.format.selected').attr 'data-message-format' format ||= 'html' - + $("#message .views .tab[data-message-format=\"#{format}\"]:not(.selected)").addClass 'selected' $("#message .views .tab:not([data-message-format=\"#{format}\"]).selected").removeClass 'selected' - + if id? $('#message iframe').attr "src", "/messages/#{id}.#{format}" - + refresh: -> $.getJSON '/messages', (messages) => $.each messages, (i, message) => @@ -124,4 +124,4 @@ class MailCatcher @refreshInterval = setInterval (=> @refresh()), 1000 -$ -> window.MailCatcher = new MailCatcher \ No newline at end of file +$ -> window.MailCatcher = new MailCatcher diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 759b8b4..61a98b0 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -99,7 +99,7 @@ } else { $('#message .metadata .attachments').hide(); } - $('#message .actions .download a').attr('href', "/messages/" + id + ".eml"); + $('#message .views .download a').attr('href', "/messages/" + id + ".eml"); return this.loadMessageBody(); }, this)); }