Commit 3e73e4fdcdb8b1b646a5e8d197e03601c749adfc
Exists in
master
and in
3 other branches
Merge branch 'refactoring' of https://github.com/amadeusproject/amadeuslms into refactoring
Showing
8 changed files
with
67 additions
and
7 deletions
Show diff stats
amadeus/context_processors.py
@@ -3,6 +3,7 @@ from datetime import datetime | @@ -3,6 +3,7 @@ from datetime import datetime | ||
3 | from themes.models import Themes | 3 | from themes.models import Themes |
4 | from notifications.models import Notification | 4 | from notifications.models import Notification |
5 | from mural.models import MuralVisualizations | 5 | from mural.models import MuralVisualizations |
6 | +from chat.models import ChatVisualizations | ||
6 | 7 | ||
7 | def theme(request): | 8 | def theme(request): |
8 | context = {} | 9 | context = {} |
@@ -35,4 +36,16 @@ def mural_notifies(request): | @@ -35,4 +36,16 @@ def mural_notifies(request): | ||
35 | 36 | ||
36 | context['mural_notifications_count'] = notifications | 37 | context['mural_notifications_count'] = notifications |
37 | 38 | ||
39 | + return context | ||
40 | + | ||
41 | +def chat_notifies(request): | ||
42 | + context = {} | ||
43 | + | ||
44 | + notifications = 0 | ||
45 | + | ||
46 | + if request.user.is_authenticated: | ||
47 | + notifications = ChatVisualizations.objects.filter(viewed = False, user = request.user).count() | ||
48 | + | ||
49 | + context['chat_notifications_count'] = notifications | ||
50 | + | ||
38 | return context | 51 | return context |
39 | \ No newline at end of file | 52 | \ No newline at end of file |
amadeus/settings.py
@@ -118,6 +118,7 @@ TEMPLATES = [ | @@ -118,6 +118,7 @@ TEMPLATES = [ | ||
118 | 'amadeus.context_processors.theme', | 118 | 'amadeus.context_processors.theme', |
119 | 'amadeus.context_processors.notifies', | 119 | 'amadeus.context_processors.notifies', |
120 | 'amadeus.context_processors.mural_notifies', | 120 | 'amadeus.context_processors.mural_notifies', |
121 | + 'amadeus.context_processors.chat_notifies', | ||
121 | ], | 122 | ], |
122 | }, | 123 | }, |
123 | }, | 124 | }, |
amadeus/static/css/base/amadeus.css
@@ -1468,6 +1468,7 @@ div.dataTables_wrapper div.dataTables_paginate { | @@ -1468,6 +1468,7 @@ div.dataTables_wrapper div.dataTables_paginate { | ||
1468 | #msg_editable { | 1468 | #msg_editable { |
1469 | width: 100%; | 1469 | width: 100%; |
1470 | z-index: 1; | 1470 | z-index: 1; |
1471 | + min-height: 20px; | ||
1471 | } | 1472 | } |
1472 | 1473 | ||
1473 | .action-button { | 1474 | .action-button { |
amadeus/static/js/socket.js
@@ -239,6 +239,43 @@ function messageReceived(content) { | @@ -239,6 +239,43 @@ function messageReceived(content) { | ||
239 | 239 | ||
240 | $(this).hide(); | 240 | $(this).hide(); |
241 | }); | 241 | }); |
242 | + } else { | ||
243 | + var talk_line = $("#talk-" + content.container), | ||
244 | + talk_notifies = talk_line.find('.chat_notify'), | ||
245 | + actual_count = talk_notifies.text(); | ||
246 | + | ||
247 | + actual_count = parseInt(actual_count, 10) + 1; | ||
248 | + | ||
249 | + talk_notifies.text(actual_count); | ||
250 | + | ||
251 | + $('.chat_badge').each(function () { | ||
252 | + var actual = $(this).text(); | ||
253 | + | ||
254 | + if (actual != "+99") { | ||
255 | + actual = parseInt(actual, 10) + 1; | ||
256 | + | ||
257 | + if (actual > 99) { | ||
258 | + actual = "+99"; | ||
259 | + } | ||
260 | + | ||
261 | + $(this).text(actual); | ||
262 | + } | ||
263 | + | ||
264 | + $(this).show(); | ||
265 | + }); | ||
266 | + | ||
267 | + $('.chat-tabs').find('li').each(function () { | ||
268 | + var identity = $(this).data('chat'); | ||
269 | + | ||
270 | + if (identity == content.subtype) { | ||
271 | + var span = $(this).find('span'), | ||
272 | + actual = span.text(); | ||
273 | + | ||
274 | + actual = parseInt(actual, 10) + 1; | ||
275 | + | ||
276 | + span.text(actual); | ||
277 | + } | ||
278 | + }); | ||
242 | } | 279 | } |
243 | 280 | ||
244 | if (("Notification" in window)) { | 281 | if (("Notification" in window)) { |
amadeus/templates/base.html
@@ -209,6 +209,7 @@ | @@ -209,6 +209,7 @@ | ||
209 | <li class="item {{ chat_menu_active }} action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Messages" %}"> | 209 | <li class="item {{ chat_menu_active }} action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Messages" %}"> |
210 | <a href="{% url 'chat:manage_general' %}"> | 210 | <a href="{% url 'chat:manage_general' %}"> |
211 | <i class="fa fa-envelope-o" aria-hidden="true"></i> | 211 | <i class="fa fa-envelope-o" aria-hidden="true"></i> |
212 | + <span class="badge notify_badge chat_badge" {% if chat_notifications_count == 0 %} style="display:none" {% endif %}>{% if chat_notifications_count > 99 %} +99 {% else %} {{ chat_notifications_count }} {% endif %}</span> | ||
212 | </a> | 213 | </a> |
213 | </li> | 214 | </li> |
214 | <li class="item {{ pendencies_menu_active }} action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Pendencies" %}"> | 215 | <li class="item {{ pendencies_menu_active }} action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Pendencies" %}"> |
@@ -263,6 +264,7 @@ | @@ -263,6 +264,7 @@ | ||
263 | <li class="item {{ chat_menu_active }} action_icon" data-toggle="tooltip" data-placement="top" title="{% trans "Messages" %}"> | 264 | <li class="item {{ chat_menu_active }} action_icon" data-toggle="tooltip" data-placement="top" title="{% trans "Messages" %}"> |
264 | <a href="{% url 'chat:manage_general' %}"> | 265 | <a href="{% url 'chat:manage_general' %}"> |
265 | <i class="fa fa-envelope-o" aria-hidden="true"></i> | 266 | <i class="fa fa-envelope-o" aria-hidden="true"></i> |
267 | + <span class="badge notify_badge chat_badge" {% if chat_notifications_count == 0 %} style="display:none" {% endif %}>{% if chat_notifications_count > 99 %} +99 {% else %} {{ chat_notifications_count }} {% endif %}</span> | ||
266 | </a> | 268 | </a> |
267 | </li> | 269 | </li> |
268 | <li class="item {{ pendencies_menu_active }} action_icon" data-toggle="tooltip" data-placement="top" title="{% trans "Pendencies" %}"> | 270 | <li class="item {{ pendencies_menu_active }} action_icon" data-toggle="tooltip" data-placement="top" title="{% trans "Pendencies" %}"> |
chat/templates/chat/_view.html
@@ -4,12 +4,12 @@ | @@ -4,12 +4,12 @@ | ||
4 | 4 | ||
5 | {% is_online talking_to as status %} | 5 | {% is_online talking_to as status %} |
6 | 6 | ||
7 | -<div class="col-md-12 participant panel"> | 7 | +<div id="talk-chat-{{ talking_to.id }}" class="col-md-12 participant panel"> |
8 | <div class="col-md-1 user-img"> | 8 | <div class="col-md-1 user-img"> |
9 | <img src="{{ talking_to.image_url }}" class="img-responsive" /> | 9 | <img src="{{ talking_to.image_url }}" class="img-responsive" /> |
10 | </div> | 10 | </div> |
11 | <div class="col-md-6 user-info"> | 11 | <div class="col-md-6 user-info"> |
12 | - <h4 class='talking-header'><a class="status {{ status }}" data-toggle="tooltip" title="{{ status|status_text }}"></a> {{ talking_to }}</h4> | 12 | + <h4 class='talking-header'><a class="status {{ status }}" data-toggle="tooltip" title="{{ status|status_text }}"></a> {{ talking_to }} (<span class="chat_notify">{{ chat|notifies:request.user }}</span>)</h4> |
13 | <p class="talk-last_msg">{% trans 'Last message in' %} {{ chat|last_message }}</p> | 13 | <p class="talk-last_msg">{% trans 'Last message in' %} {{ chat|last_message }}</p> |
14 | </div> | 14 | </div> |
15 | <div class="col-md-4 buttons pull-right text-center"> | 15 | <div class="col-md-4 buttons pull-right text-center"> |
chat/templates/chat/list.html
@@ -13,10 +13,10 @@ | @@ -13,10 +13,10 @@ | ||
13 | 13 | ||
14 | {% block content %} | 14 | {% block content %} |
15 | <div id="core-subjects-options-div"> | 15 | <div id="core-subjects-options-div"> |
16 | - <ul class="core-subjects-options mural-tabs"> | 16 | + <ul class="core-subjects-options chat-tabs"> |
17 | <a href="{% url 'chat:manage_general' %}"><li data-chat="general" class="active">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a> | 17 | <a href="{% url 'chat:manage_general' %}"><li data-chat="general" class="active">{% trans "General" %} (<span>{{ totals.general }}</span>)</li></a> |
18 | - <a href=""><li data-chat="categories">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a> | ||
19 | - <a href=""><li data-chat="subjects">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a> | 18 | + <a href=""><li data-chat="category">{% trans "Per Category" %} (<span>{{ totals.category }}</span>)</li></a> |
19 | + <a href=""><li data-chat="subject">{% trans "Per Subject" %} (<span>{{ totals.subject }}</span>)</li></a> | ||
20 | </ul> | 20 | </ul> |
21 | </div> | 21 | </div> |
22 | 22 |
chat/templatetags/chat_tags.py
@@ -7,7 +7,7 @@ from django.contrib.sessions.models import Session | @@ -7,7 +7,7 @@ from django.contrib.sessions.models import Session | ||
7 | 7 | ||
8 | from log.models import Log | 8 | from log.models import Log |
9 | 9 | ||
10 | -from chat.models import TalkMessages | 10 | +from chat.models import TalkMessages, ChatVisualizations |
11 | 11 | ||
12 | register = template.Library() | 12 | register = template.Library() |
13 | 13 | ||
@@ -49,4 +49,10 @@ def chat_user(user, chat): | @@ -49,4 +49,10 @@ def chat_user(user, chat): | ||
49 | def last_message(chat): | 49 | def last_message(chat): |
50 | last_message = TalkMessages.objects.filter(talk = chat).order_by('-create_date')[0] | 50 | last_message = TalkMessages.objects.filter(talk = chat).order_by('-create_date')[0] |
51 | 51 | ||
52 | - return last_message.create_date | ||
53 | \ No newline at end of file | 52 | \ No newline at end of file |
53 | + return last_message.create_date | ||
54 | + | ||
55 | +@register.filter(name = 'notifies') | ||
56 | +def notifies(chat, user): | ||
57 | + total = ChatVisualizations.objects.filter(message__talk = chat, user = user).count() | ||
58 | + | ||
59 | + return total | ||
54 | \ No newline at end of file | 60 | \ No newline at end of file |