diff options
-rw-r--r-- | hyperkitty/static/css/hyperkitty-message.css | 6 | ||||
-rw-r--r-- | hyperkitty/static/js/hyperkitty.js | 7 | ||||
-rw-r--r-- | hyperkitty/templates/messages/temp_message.html | 38 | ||||
-rw-r--r-- | hyperkitty/views/message.py | 16 |
4 files changed, 62 insertions, 5 deletions
diff --git a/hyperkitty/static/css/hyperkitty-message.css b/hyperkitty/static/css/hyperkitty-message.css index edc5cab..3978015 100644 --- a/hyperkitty/static/css/hyperkitty-message.css +++ b/hyperkitty/static/css/hyperkitty-message.css @@ -194,7 +194,7 @@ } /* The email thread */ -.even, .odd { +.even, .odd, .temporary { border-top: 1px solid rgb(179, 179, 179); padding: 1em; margin: 20px 0px 20px 0px; @@ -205,6 +205,10 @@ .odd { background-color: rgb(238, 238, 238); } +.temporary { + background-color: rgb(215, 215, 229); + display: none; +} .email-body { white-space: pre; diff --git a/hyperkitty/static/js/hyperkitty.js b/hyperkitty/static/js/hyperkitty.js index ddebd09..a06aa79 100644 --- a/hyperkitty/static/js/hyperkitty.js +++ b/hyperkitty/static/js/hyperkitty.js @@ -202,14 +202,17 @@ function setup_replies(baseElem) { $.ajax({ type: "POST", url: form.attr("action"), - //dataType: "json", + dataType: "json", data: data, success: function(response) { + var reply = $(response.message_html); + reply.insertAfter(form.parents(".email").first().parent()); form.parents(".reply-form").first().slideUp(function() { form.find("textarea").val(""); + reply.slideDown(); }); $('<div class="reply-result"><div class="alert alert-success">' - + response + '</div></div>') + + response.result + '</div></div>') .appendTo(form.parents('.email-info').first()) .delay(2000).fadeOut('slow', function() { $(this).remove(); }); }, diff --git a/hyperkitty/templates/messages/temp_message.html b/hyperkitty/templates/messages/temp_message.html new file mode 100644 index 0000000..f518114 --- /dev/null +++ b/hyperkitty/templates/messages/temp_message.html @@ -0,0 +1,38 @@ +{% load url from future %} +{% load gravatar %} +{% load hk_generic %} + +<div class="temporary" + {% if email.level %}style="margin-left:{{ email.level|multiply:"2" }}em;"{% endif %}> + <!-- Start email --> + <div class="email"> + + <div class="email-header"> + <div class="email-date inline-block pull-right"> + <span class="date">Sent just now, not yet distributed</span> + </div> + <div class="gravatar{% if use_mockups %} pull-left{% endif %}"> + {% gravatar email.sender_email 40 %} + </div> + <div class="email-author inline-block"> + <span class="name">{{email.sender_name|escapeemail}}</span> + {% if use_mockups %} + <br /> + <span class="rank"> + Rank 8 + </span> + {% endif %} + </div> + </div> + + <div class="email-body" + >{{ email.content|snip_quoted|wordwrap:90|urlizetrunc:76|escapeemail }}</div> + + <div class="email-info"> + </div> + + </div> + <!-- End of email --> +</div> + +{# vim: set noet: #} diff --git a/hyperkitty/views/message.py b/hyperkitty/views/message.py index e526977..25d1e6f 100644 --- a/hyperkitty/views/message.py +++ b/hyperkitty/views/message.py @@ -171,8 +171,20 @@ def reply(request, mlist_fqdn, message_id_hash): post_to_list(request, mlist, subject, form.cleaned_data["message"], headers) except PostingFailed, e: return HttpResponse(str(e), content_type="text/plain", status=500) - return HttpResponse("The reply has been sent successfully.", - mimetype="text/plain") + + reply = { + "sender_name": "%s %s" % (request.user.first_name, + request.user.last_name), + "sender_email": request.user.email, + "content": form.cleaned_data["message"], + "level": message.thread_depth, # no need to increment, level = thread_depth - 1 + } + t = loader.get_template('messages/temp_message.html') + html = t.render(RequestContext(request, { 'email': reply })) + result = {"result": "The reply has been sent successfully.", + "message_html": html} + return HttpResponse(json.dumps(result), + mimetype="application/javascript") @login_required |