Commit 1ff9302f4d55a60ca26350b06ffc33aee70ae0fd

Authored by Sergio Oliveira
1 parent e96555e7

Not collapsing message if clicking in a btn or a

src/accounts/templatetags/gravatar.py
@@ -17,4 +17,4 @@ def gravatar(email, size=80): @@ -17,4 +17,4 @@ def gravatar(email, size=80):
17 17
18 email_md5 = getattr(email, 'md5', 'anonymous') 18 email_md5 = getattr(email, 'md5', 'anonymous')
19 19
20 - return u'<img src="http://www.gravatar.com/avatar/{}?s={}&d=mm" height="{}px" width="{}px">'.format(email_md5, size, size, size) 20 + return u'<img src="http://www.gravatar.com/avatar/{}?s={}&d=mm" height="{}px" width="{}px" />'.format(email_md5, size, size, size)
src/super_archives/templates/message-thread.html
@@ -31,53 +31,57 @@ @@ -31,53 +31,57 @@
31 31
32 if (jqXHR.status === 403) { 32 if (jqXHR.status === 403) {
33 msg = " {% trans 'You must login before voting.' %}" 33 msg = " {% trans 'You must login before voting.' %}"
34 - } else {  
35 - return;  
36 - }  
37 -  
38 - $('#alert-js #alert-message').html(msg);  
39 - $('#alert-js').show();  
40 - scroll(0, 0);  
41 - }  
42 -  
43 - function get_vote_ajax_dict(msg_id, method, context) {  
44 - var csrftoken = $.cookie('csrftoken');  
45 34
46 - return {  
47 - url: "/api/message/" + msg_id + "/vote",  
48 - type: method,  
49 - context: context,  
50 - beforeSend: function(xhr, settings) {  
51 - xhr.setRequestHeader("X-CSRFToken", csrftoken);  
52 - } 35 + $('#alert-js #alert-message').html(msg);
  36 + $('#alert-js').show();
  37 + scroll(0, 0);
53 } 38 }
  39 +
54 } 40 }
55 41
56 - function vote() { 42 + function vote(event) {
57 var $ajax; 43 var $ajax;
58 var $btn = $(this); 44 var $btn = $(this);
59 var $msg = $(this).parents('.email-message'); 45 var $msg = $(this).parents('.email-message');
60 46
  47 + var method;
  48 + var csrftoken = $.cookie('csrftoken');
61 var msg_id = $msg.attr('id').split('-')[1]; 49 var msg_id = $msg.attr('id').split('-')[1];
62 50
63 - $btn.button('loading');  
64 if($btn.hasClass('btn-default')) { 51 if($btn.hasClass('btn-default')) {
65 - $ajax = $.ajax(get_vote_ajax_dict(msg_id, 'PUT', $btn[0])); 52 + method = 'PUT';
66 } else { 53 } else {
67 - $ajax = $.ajax(get_vote_ajax_dict(msg_id, 'DELETE', $btn[0])); 54 + method = 'DELETE';
68 } 55 }
  56 +
69 console.debug('trying to vote'); 57 console.debug('trying to vote');
  58 + $btn.button('loading');
  59 + $ajax = $.ajax({
  60 + url: "/api/message/" + msg_id + "/vote",
  61 + type: method,
  62 + context: $btn.get(0),
  63 + beforeSend: function(xhr, settings) {
  64 + xhr.setRequestHeader("X-CSRFToken", csrftoken);
  65 + }
  66 + });
70 $ajax.done(vote_done_callback); 67 $ajax.done(vote_done_callback);
71 $ajax.fail(vote_fail_callback); 68 $ajax.fail(vote_fail_callback);
72 } 69 }
73 70
74 // Binding functions 71 // Binding functions
75 $(function() { 72 $(function() {
76 - $(".panel-heading").bind('click', function() { 73 + $(".panel-heading").on('click', function(event) {
  74 + var $target = $(event.target);
  75 + // Do not collapse the the message if the clicked element (target)
  76 + // is a button or a link
  77 + if($target.hasClass('btn') || $target.is('a') || $target.parent().is('a')) {
  78 + return;
  79 + }
  80 +
77 $(this).next('.panel-collapse').collapse('toggle'); 81 $(this).next('.panel-collapse').collapse('toggle');
78 }); 82 });
79 83
80 - $('.vote.btn', this).bind('click', vote); 84 + $('.vote.btn', this).on('click', vote);
81 }); 85 });
82 86
83 </script> 87 </script>
@@ -100,7 +104,7 @@ @@ -100,7 +104,7 @@
100 {% spaceless %} 104 {% spaceless %}
101 <div class="email-message" id="msg-{{ email.id }}"> 105 <div class="email-message" id="msg-{{ email.id }}">
102 <div class="panel panel-default"> 106 <div class="panel panel-default">
103 - <div class="panel-heading clearfix" data-toggle="collapse"> 107 + <div class="panel-heading clearfix">
104 <div class="col-lg-6 col-md-6 col-sm-6"> 108 <div class="col-lg-6 col-md-6 col-sm-6">
105 {% if profile_link %} 109 {% if profile_link %}
106 <a href="{{ profile_link }}"> 110 <a href="{{ profile_link }}">