Commit 5e7b5b9790da01192dee4187fcea7f70a1de66ca

Authored by Zambom
1 parent 534d7f70

Updating mural notifications

Showing 2 changed files with 187 additions and 231 deletions   Show diff stats
amadeus/static/js/socket.js
@@ -10,102 +10,38 @@ socket.onmessage = function(e) { @@ -10,102 +10,38 @@ socket.onmessage = function(e) {
10 content = JSON.parse(e.data); 10 content = JSON.parse(e.data);
11 11
12 if (content.type == "mural") { 12 if (content.type == "mural") {
13 - if (content.subtype == "create") {  
14 - muralNotificationCreate(content);  
15 - } else if (content.subtype == "update") {  
16 - muralNotificationUpdate(content);  
17 - } else if (content.subtype == "delete") {  
18 - muralNotificationDelete(content); 13 + if (content.subtype == "post") {
  14 + muralNotificationPost(content);
  15 + } else if (content.subtype == "mural_update") {
  16 + muralNotificationMuralUpdate(content);
  17 + } else if (content.subtype == "mural_delete") {
  18 + muralNotificationMuralDelete(content);
19 } else if (content.subtype == "create_comment") { 19 } else if (content.subtype == "create_comment") {
20 muralNotificationComment(content); 20 muralNotificationComment(content);
21 - } else if (content.subtype == "update_comment") {  
22 - muralNotificationCommentUpdate(content);  
23 - } else if (content.subtype == "delete_comment") {  
24 - muralNotificationCommentDelete(content);  
25 - } else if (content.subtype == "create_cat") {  
26 - muralNotificationCategory(content);  
27 - } else if (content.subtype == "update_cat") {  
28 - muralNotificationCategoryUpdate(content);  
29 - } else if (content.subtype == "delete_cat") {  
30 - muralNotificationCategoryDelete(content);  
31 - } else if (content.subtype == "create_sub") {  
32 - muralNotificationSubject(content);  
33 - } else if (content.subtype == "update_sub") {  
34 - muralNotificationSubjectUpdate(content);  
35 - } else if (content.subtype == "delete_sub") {  
36 - muralNotificationSubjectDelete(content);  
37 } 21 }
38 } 22 }
39 } 23 }
40 // Call onopen directly if socket is already open 24 // Call onopen directly if socket is already open
41 if (socket.readyState == WebSocket.OPEN) socket.onopen(); 25 if (socket.readyState == WebSocket.OPEN) socket.onopen();
42 26
43 -function muralNotificationCreate(content) {  
44 - if (window.location.pathname == content.pathname) {  
45 - $('.posts').prepend(content.complete);  
46 -  
47 - $('.no-subjects').attr('style', 'display:none');  
48 - } else {  
49 - $('.mural_badge').each(function () {  
50 - var actual = $(this).text();  
51 -  
52 - if (actual != "+99") {  
53 - actual = parseInt(actual, 10) + 1;  
54 -  
55 - if (actual > 99) {  
56 - actual = "+99";  
57 - }  
58 -  
59 - $(this).text(actual);  
60 - }  
61 -  
62 - $(this).show();  
63 - });  
64 - }  
65 -  
66 - if (("Notification" in window)) {  
67 - var options = {  
68 - icon: content.user_icon,  
69 - body: content.simple  
70 - }  
71 -  
72 - if (Notification.permission === "granted") {  
73 - var notification = new Notification("", options); 27 +function muralNotificationPost(content) {
  28 + var page = window.location.pathname,
  29 + render = (content.paths.indexOf(page) != -1);
74 30
75 - setTimeout(notification.close.bind(notification), 3000);  
76 - }  
77 - }  
78 -}  
79 -  
80 -function muralNotificationUpdate(content) {  
81 - if (window.location.pathname == content.pathname) {  
82 - var post = $("#post-" + content.post_id);  
83 -  
84 - if (post.is(":visible")) {  
85 - post.before(content.complete); 31 + if (render) {
  32 + if (content.accordion) {
  33 + var section = $(content.container);
86 34
87 - post.remove();  
88 - }  
89 - }  
90 -}  
91 -  
92 -function muralNotificationDelete(content) {  
93 - if (window.location.pathname == content.pathname) {  
94 - var post = $("#post-" + content.post_id);  
95 -  
96 - if (post.is(":visible")) {  
97 - post.remove();  
98 - }  
99 - }  
100 -} 35 + if (section.is(':visible')) {
  36 + section.find('.posts').prepend(content.complete);
101 37
102 -function muralNotificationComment(content) {  
103 - if (window.location.pathname == content.pathname) {  
104 - if ($("#post-" + content.post_id).is(":visible")) {  
105 - var section = $("#post-" + content.post_id).find('.comment-section'); 38 + section.find('.no-subjects').hide();
  39 + }
  40 + } else {
  41 + $(content.container).prepend(content.complete);
106 42
107 - section.append(content.complete);  
108 - } 43 + $('.no-subjects').attr('style', 'display:none');
  44 + }
109 } else { 45 } else {
110 $('.mural_badge').each(function () { 46 $('.mural_badge').each(function () {
111 var actual = $(this).text(); 47 var actual = $(this).text();
@@ -127,7 +63,7 @@ function muralNotificationComment(content) { @@ -127,7 +63,7 @@ function muralNotificationComment(content) {
127 if (("Notification" in window)) { 63 if (("Notification" in window)) {
128 var options = { 64 var options = {
129 icon: content.user_icon, 65 icon: content.user_icon,
130 - body: content.simple 66 + body: content.simple_notify
131 } 67 }
132 68
133 if (Notification.permission === "granted") { 69 if (Notification.permission === "granted") {
@@ -138,98 +74,41 @@ function muralNotificationComment(content) { @@ -138,98 +74,41 @@ function muralNotificationComment(content) {
138 } 74 }
139 } 75 }
140 76
141 -function muralNotificationCommentUpdate(content) {  
142 - if (window.location.pathname == content.pathname) {  
143 - var comment = $("#comment-" + content.comment_id);  
144 -  
145 - if (comment.is(":visible")) {  
146 - comment.before(content.complete); 77 +function muralNotificationMuralUpdate(content) {
  78 + var page = window.location.pathname,
  79 + render = (content.paths.indexOf(page) != -1);
147 80
148 - comment.remove();  
149 - }  
150 - }  
151 -} 81 + if (render) {
  82 + var mural_item = $(content.container);
152 83
153 -function muralNotificationCommentDelete(content) {  
154 - if (window.location.pathname == content.pathname) {  
155 - var comment = $("#comment-" + content.comment_id); 84 + if (mural_item.is(":visible") || mural_item.is(":hidden")) {
  85 + mural_item.before(content.complete);
156 86
157 - if (comment.is(":visible")) {  
158 - comment.remove(); 87 + mural_item.remove();
159 } 88 }
160 } 89 }
161 } 90 }
162 91
163 -function muralNotificationCategory(content) {  
164 - var cat_section = $("#" + content.cat);  
165 -  
166 - if (window.location.pathname == content.pathname && cat_section.is(':visible')) {  
167 -  
168 - cat_section.find('.posts').prepend(content.complete);  
169 -  
170 - cat_section.find('.no-subjects').hide();  
171 - } else {  
172 - $('.mural_badge').each(function () {  
173 - var actual = $(this).text();  
174 -  
175 - if (actual != "+99") {  
176 - actual = parseInt(actual, 10) + 1;  
177 -  
178 - if (actual > 99) {  
179 - actual = "+99";  
180 - }  
181 -  
182 - $(this).text(actual);  
183 - }  
184 -  
185 - $(this).show();  
186 - });  
187 - }  
188 -  
189 - if (("Notification" in window)) {  
190 - var options = {  
191 - icon: content.user_icon,  
192 - body: content.simple  
193 - }  
194 -  
195 - if (Notification.permission === "granted") {  
196 - var notification = new Notification("", options);  
197 -  
198 - setTimeout(notification.close.bind(notification), 3000);  
199 - }  
200 - }  
201 -}  
202 -  
203 -function muralNotificationCategoryUpdate(content) {  
204 - if (window.location.pathname == content.pathname) {  
205 - var post = $("#post-" + content.post_id); 92 +function muralNotificationMuralDelete(content) {
  93 + var page = window.location.pathname,
  94 + render = (content.paths.indexOf(page) != -1);
206 95
207 - if (post.is(":visible") || post.is(":hidden")) {  
208 - post.before(content.complete); 96 + if (render) {
  97 + var mural_item = $(content.container);
209 98
210 - post.remove(); 99 + if (mural_item.is(":visible") || mural_item.is(":hidden")) {
  100 + mural_item.remove();
211 } 101 }
212 } 102 }
213 } 103 }
214 104
215 -function muralNotificationCategoryDelete(content) { 105 +function muralNotificationComment(content) {
216 if (window.location.pathname == content.pathname) { 106 if (window.location.pathname == content.pathname) {
217 - var post = $("#post-" + content.post_id); 107 + if ($("#post-" + content.post_id).is(":visible")) {
  108 + var section = $("#post-" + content.post_id).find('.comment-section');
218 109
219 - if (post.is(":visible") || post.is(":hidden")) {  
220 - post.remove(); 110 + section.append(content.complete);
221 } 111 }
222 - }  
223 -}  
224 -  
225 -function muralNotificationSubject(content) {  
226 - var sub_section = $("#" + content.sub);  
227 -  
228 - if (window.location.pathname == content.pathname && sub_section.is(':visible')) {  
229 -  
230 - sub_section.find('.posts').prepend(content.complete);  
231 -  
232 - sub_section.find('.no-subjects').hide();  
233 } else { 112 } else {
234 $('.mural_badge').each(function () { 113 $('.mural_badge').each(function () {
235 var actual = $(this).text(); 114 var actual = $(this).text();
@@ -260,26 +139,4 @@ function muralNotificationSubject(content) { @@ -260,26 +139,4 @@ function muralNotificationSubject(content) {
260 setTimeout(notification.close.bind(notification), 3000); 139 setTimeout(notification.close.bind(notification), 3000);
261 } 140 }
262 } 141 }
263 -}  
264 -  
265 -function muralNotificationSubjectUpdate(content) {  
266 - if (window.location.pathname == content.pathname) {  
267 - var post = $("#post-" + content.post_id);  
268 -  
269 - if (post.is(":visible") || post.is(":hidden")) {  
270 - post.before(content.complete);  
271 -  
272 - post.remove();  
273 - }  
274 - }  
275 -}  
276 -  
277 -function muralNotificationSubjectDelete(content) {  
278 - if (window.location.pathname == content.pathname) {  
279 - var post = $("#post-" + content.post_id);  
280 -  
281 - if (post.is(":visible") || post.is(":hidden")) {  
282 - post.remove();  
283 - }  
284 - }  
285 } 142 }
286 \ No newline at end of file 143 \ No newline at end of file
mural/views.py
@@ -119,15 +119,24 @@ class GeneralCreate(LoginRequiredMixin, generic.edit.CreateView): @@ -119,15 +119,24 @@ class GeneralCreate(LoginRequiredMixin, generic.edit.CreateView):
119 users = User.objects.all().exclude(id = self.request.user.id) 119 users = User.objects.all().exclude(id = self.request.user.id)
120 entries = [] 120 entries = []
121 121
122 - notify_type = "mural"  
123 - user_icon = self.object.user.image_url  
124 - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request)  
125 - simple_notify = _("%s has made a post in General")%(str(self.object.user))  
126 - pathname = reverse("mural:manage_general") 122 + paths = [reverse("mural:manage_general")]
  123 +
  124 + notification = {
  125 + "type": "mural",
  126 + "subtype": "post",
  127 + "paths": paths,
  128 + "user_icon": self.object.user.image_url,
  129 + "simple_notify": _("%s has made a post in General")%(str(self.object.user)),
  130 + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request),
  131 + "container": ".post",
  132 + "accordion": False
  133 + }
  134 +
  135 + notification = json.dumps(notification)
127 136
128 for user in users: 137 for user in users:
129 entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) 138 entries.append(MuralVisualizations(viewed = False, user = user, post = self.object))
130 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "create", "user_icon": user_icon, "pathname": pathname, "simple": simple_notify, "complete": _view})}) 139 + Group("user-%s" % user.id).send({'text': notification})
131 140
132 MuralVisualizations.objects.bulk_create(entries) 141 MuralVisualizations.objects.bulk_create(entries)
133 142
@@ -166,12 +175,20 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): @@ -166,12 +175,20 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView):
166 175
167 users = User.objects.all().exclude(id = self.request.user.id) 176 users = User.objects.all().exclude(id = self.request.user.id)
168 177
169 - notify_type = "mural"  
170 - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request)  
171 - pathname = reverse("mural:manage_general") 178 + paths = [reverse("mural:manage_general")]
  179 +
  180 + notification = {
  181 + "type": "mural",
  182 + "subtype": "mural_update",
  183 + "paths": paths,
  184 + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request),
  185 + "container": "#post-" + str(self.object.id),
  186 + }
  187 +
  188 + notification = json.dumps(notification)
172 189
173 for user in users: 190 for user in users:
174 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update", "pathname": pathname, "complete": _view, "post_id": self.object.id})}) 191 + Group("user-%s" % user.id).send({'text': notification})
175 192
176 return super(GeneralUpdate, self).form_valid(form) 193 return super(GeneralUpdate, self).form_valid(form)
177 194
@@ -202,12 +219,20 @@ class GeneralDelete(LoginRequiredMixin, generic.DeleteView): @@ -202,12 +219,20 @@ class GeneralDelete(LoginRequiredMixin, generic.DeleteView):
202 219
203 def get_success_url(self): 220 def get_success_url(self):
204 users = User.objects.all().exclude(id = self.request.user.id) 221 users = User.objects.all().exclude(id = self.request.user.id)
205 -  
206 - notify_type = "mural"  
207 - pathname = reverse("mural:manage_general") 222 +
  223 + paths = [reverse("mural:manage_general")]
  224 +
  225 + notification = {
  226 + "type": "mural",
  227 + "subtype": "mural_delete",
  228 + "paths": paths,
  229 + "container": "#post-" + str(self.object.id),
  230 + }
  231 +
  232 + notification = json.dumps(notification)
208 233
209 for user in users: 234 for user in users:
210 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete", "pathname": pathname, "post_id": self.object.id})}) 235 + Group("user-%s" % user.id).send({'text': notification})
211 236
212 return reverse_lazy('mural:deleted_post') 237 return reverse_lazy('mural:deleted_post')
213 238
@@ -324,16 +349,25 @@ class CategoryCreate(LoginRequiredMixin, generic.edit.CreateView): @@ -324,16 +349,25 @@ class CategoryCreate(LoginRequiredMixin, generic.edit.CreateView):
324 349
325 users = getSpaceUsers(self.request.user.id, self.object) 350 users = getSpaceUsers(self.request.user.id, self.object)
326 entries = [] 351 entries = []
  352 +
  353 + paths = [reverse("mural:manage_category")]
327 354
328 - notify_type = "mural"  
329 - user_icon = self.object.user.image_url  
330 - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request)  
331 - simple_notify = _("%s has made a post in %s")%(str(self.object.user), str(self.object.space))  
332 - pathname = reverse("mural:manage_category") 355 + notification = {
  356 + "type": "mural",
  357 + "subtype": "post",
  358 + "paths": paths,
  359 + "user_icon": self.object.user.image_url,
  360 + "simple_notify": _("%s has made a post in %s")%(str(self.object.user), str(self.object.space)),
  361 + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request),
  362 + "container": "#" + slug,
  363 + "accordion": True
  364 + }
  365 +
  366 + notification = json.dumps(notification)
333 367
334 for user in users: 368 for user in users:
335 entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) 369 entries.append(MuralVisualizations(viewed = False, user = user, post = self.object))
336 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "create_cat", "user_icon": user_icon, "pathname": pathname, "simple": simple_notify, "complete": _view, "cat": slug})}) 370 + Group("user-%s" % user.id).send({'text': notification})
337 371
338 MuralVisualizations.objects.bulk_create(entries) 372 MuralVisualizations.objects.bulk_create(entries)
339 373
@@ -372,12 +406,20 @@ class CategoryUpdate(LoginRequiredMixin, generic.UpdateView): @@ -372,12 +406,20 @@ class CategoryUpdate(LoginRequiredMixin, generic.UpdateView):
372 406
373 users = getSpaceUsers(self.request.user.id, self.object) 407 users = getSpaceUsers(self.request.user.id, self.object)
374 408
375 - notify_type = "mural"  
376 - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request)  
377 - pathname = reverse("mural:manage_category") 409 + paths = [reverse("mural:manage_category")]
  410 +
  411 + notification = {
  412 + "type": "mural",
  413 + "subtype": "mural_update",
  414 + "paths": paths,
  415 + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request),
  416 + "container": "#post-" + str(self.object.id),
  417 + }
  418 +
  419 + notification = json.dumps(notification)
378 420
379 for user in users: 421 for user in users:
380 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update_cat", "pathname": pathname, "complete": _view, "post_id": self.object.id})}) 422 + Group("user-%s" % user.id).send({'text': notification})
381 423
382 return super(CategoryUpdate, self).form_valid(form) 424 return super(CategoryUpdate, self).form_valid(form)
383 425
@@ -409,11 +451,19 @@ class CategoryDelete(LoginRequiredMixin, generic.DeleteView): @@ -409,11 +451,19 @@ class CategoryDelete(LoginRequiredMixin, generic.DeleteView):
409 def get_success_url(self): 451 def get_success_url(self):
410 users = getSpaceUsers(self.request.user.id, self.object) 452 users = getSpaceUsers(self.request.user.id, self.object)
411 453
412 - notify_type = "mural"  
413 - pathname = reverse("mural:manage_category") 454 + paths = [reverse("mural:manage_category")]
  455 +
  456 + notification = {
  457 + "type": "mural",
  458 + "subtype": "mural_delete",
  459 + "paths": paths,
  460 + "container": "#post-" + str(self.object.id),
  461 + }
  462 +
  463 + notification = json.dumps(notification)
414 464
415 for user in users: 465 for user in users:
416 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete_cat", "pathname": pathname, "post_id": self.object.id})}) 466 + Group("user-%s" % user.id).send({'text': notification})
417 467
418 return reverse_lazy('mural:deleted_post') 468 return reverse_lazy('mural:deleted_post')
419 469
@@ -542,15 +592,24 @@ class SubjectCreate(LoginRequiredMixin, generic.edit.CreateView): @@ -542,15 +592,24 @@ class SubjectCreate(LoginRequiredMixin, generic.edit.CreateView):
542 users = getSpaceUsers(self.request.user.id, self.object) 592 users = getSpaceUsers(self.request.user.id, self.object)
543 entries = [] 593 entries = []
544 594
545 - notify_type = "mural"  
546 - user_icon = self.object.user.image_url  
547 - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request)  
548 - simple_notify = _("%s has made a post in %s")%(str(self.object.user), str(self.object.space))  
549 - pathname = reverse("mural:manage_subject") 595 + paths = [reverse("mural:manage_subject")]
  596 +
  597 + notification = {
  598 + "type": "mural",
  599 + "subtype": "post",
  600 + "paths": paths,
  601 + "user_icon": self.object.user.image_url,
  602 + "simple_notify": _("%s has made a post in %s")%(str(self.object.user), str(self.object.space)),
  603 + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request),
  604 + "container": "#" + slug,
  605 + "accordion": True
  606 + }
  607 +
  608 + notification = json.dumps(notification)
550 609
551 for user in users: 610 for user in users:
552 entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) 611 entries.append(MuralVisualizations(viewed = False, user = user, post = self.object))
553 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "create_sub", "user_icon": user_icon, "pathname": pathname, "simple": simple_notify, "complete": _view, "sub": slug})}) 612 + Group("user-%s" % user.id).send({'text': notification})
554 613
555 MuralVisualizations.objects.bulk_create(entries) 614 MuralVisualizations.objects.bulk_create(entries)
556 615
@@ -596,12 +655,20 @@ class SubjectUpdate(LoginRequiredMixin, generic.UpdateView): @@ -596,12 +655,20 @@ class SubjectUpdate(LoginRequiredMixin, generic.UpdateView):
596 655
597 users = getSpaceUsers(self.request.user.id, self.object) 656 users = getSpaceUsers(self.request.user.id, self.object)
598 657
599 - notify_type = "mural"  
600 - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request)  
601 - pathname = reverse("mural:manage_subject") 658 + paths = [reverse("mural:manage_subject")]
  659 +
  660 + notification = {
  661 + "type": "mural",
  662 + "subtype": "mural_update",
  663 + "paths": paths,
  664 + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request),
  665 + "container": "#post-" + str(self.object.id),
  666 + }
  667 +
  668 + notification = json.dumps(notification)
602 669
603 for user in users: 670 for user in users:
604 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update_sub", "pathname": pathname, "complete": _view, "post_id": self.object.id})}) 671 + Group("user-%s" % user.id).send({'text': notification})
605 672
606 return super(SubjectUpdate, self).form_valid(form) 673 return super(SubjectUpdate, self).form_valid(form)
607 674
@@ -633,11 +700,19 @@ class SubjectDelete(LoginRequiredMixin, generic.DeleteView): @@ -633,11 +700,19 @@ class SubjectDelete(LoginRequiredMixin, generic.DeleteView):
633 def get_success_url(self): 700 def get_success_url(self):
634 users = getSpaceUsers(self.request.user.id, self.object) 701 users = getSpaceUsers(self.request.user.id, self.object)
635 702
636 - notify_type = "mural"  
637 - pathname = reverse("mural:manage_subject") 703 + paths = [reverse("mural:manage_subject")]
  704 +
  705 + notification = {
  706 + "type": "mural",
  707 + "subtype": "mural_delete",
  708 + "paths": paths,
  709 + "container": "#post-" + str(self.object.id),
  710 + }
  711 +
  712 + notification = json.dumps(notification)
638 713
639 for user in users: 714 for user in users:
640 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete_sub", "pathname": pathname, "post_id": self.object.id})}) 715 + Group("user-%s" % user.id).send({'text': notification})
641 716
642 return reverse_lazy('mural:deleted_post') 717 return reverse_lazy('mural:deleted_post')
643 718
@@ -762,12 +837,24 @@ class CommentUpdate(LoginRequiredMixin, generic.UpdateView): @@ -762,12 +837,24 @@ class CommentUpdate(LoginRequiredMixin, generic.UpdateView):
762 837
763 users = getSpaceUsers(self.request.user.id, self.object.post) 838 users = getSpaceUsers(self.request.user.id, self.object.post)
764 839
765 - notify_type = "mural"  
766 - _view = render_to_string("mural/_view_comment.html", {"comment": self.object}, self.request)  
767 - pathname = reverse("mural:manage_general") 840 + paths = [
  841 + reverse("mural:manage_general"),
  842 + reverse("mural:manage_category"),
  843 + reverse("mural:manage_subject")
  844 + ]
  845 +
  846 + notification = {
  847 + "type": "mural",
  848 + "subtype": "mural_update",
  849 + "paths": paths,
  850 + "complete": render_to_string("mural/_view_comment.html", {"comment": self.object}, self.request),
  851 + "container": "#comment-" + str(self.object.id),
  852 + }
  853 +
  854 + notification = json.dumps(notification)
768 855
769 for user in users: 856 for user in users:
770 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update_comment", "pathname": pathname, "complete": _view, "comment_id": self.object.id})}) 857 + Group("user-%s" % user.id).send({'text': notification})
771 858
772 return super(CommentUpdate, self).form_valid(form) 859 return super(CommentUpdate, self).form_valid(form)
773 860
@@ -798,12 +885,24 @@ class CommentDelete(LoginRequiredMixin, generic.DeleteView): @@ -798,12 +885,24 @@ class CommentDelete(LoginRequiredMixin, generic.DeleteView):
798 885
799 def get_success_url(self): 886 def get_success_url(self):
800 users = getSpaceUsers(self.request.user.id, self.object.post) 887 users = getSpaceUsers(self.request.user.id, self.object.post)
801 -  
802 - notify_type = "mural"  
803 - pathname = reverse("mural:manage_general") 888 +
  889 + paths = [
  890 + reverse("mural:manage_general"),
  891 + reverse("mural:manage_category"),
  892 + reverse("mural:manage_subject")
  893 + ]
  894 +
  895 + notification = {
  896 + "type": "mural",
  897 + "subtype": "mural_delete",
  898 + "paths": paths,
  899 + "container": "#comment-" + str(self.object.id),
  900 + }
  901 +
  902 + notification = json.dumps(notification)
804 903
805 for user in users: 904 for user in users:
806 - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete_comment", "pathname": pathname, "comment_id": self.object.id})}) 905 + Group("user-%s" % user.id).send({'text': notification})
807 906
808 return reverse_lazy('mural:deleted_comment') 907 return reverse_lazy('mural:deleted_comment')
809 908