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 | 3 | from themes.models import Themes |
| 4 | 4 | from notifications.models import Notification |
| 5 | 5 | from mural.models import MuralVisualizations |
| 6 | +from chat.models import ChatVisualizations | |
| 6 | 7 | |
| 7 | 8 | def theme(request): |
| 8 | 9 | context = {} |
| ... | ... | @@ -35,4 +36,16 @@ def mural_notifies(request): |
| 35 | 36 | |
| 36 | 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 | 51 | return context |
| 39 | 52 | \ No newline at end of file | ... | ... |
amadeus/settings.py
amadeus/static/css/base/amadeus.css
amadeus/static/js/socket.js
| ... | ... | @@ -239,6 +239,43 @@ function messageReceived(content) { |
| 239 | 239 | |
| 240 | 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 | 281 | if (("Notification" in window)) { | ... | ... |
amadeus/templates/base.html
| ... | ... | @@ -209,6 +209,7 @@ |
| 209 | 209 | <li class="item {{ chat_menu_active }} action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Messages" %}"> |
| 210 | 210 | <a href="{% url 'chat:manage_general' %}"> |
| 211 | 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 | 213 | </a> |
| 213 | 214 | </li> |
| 214 | 215 | <li class="item {{ pendencies_menu_active }} action_icon" data-toggle="tooltip" data-placement="right" title="{% trans "Pendencies" %}"> |
| ... | ... | @@ -263,6 +264,7 @@ |
| 263 | 264 | <li class="item {{ chat_menu_active }} action_icon" data-toggle="tooltip" data-placement="top" title="{% trans "Messages" %}"> |
| 264 | 265 | <a href="{% url 'chat:manage_general' %}"> |
| 265 | 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 | 268 | </a> |
| 267 | 269 | </li> |
| 268 | 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 | 4 | |
| 5 | 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 | 8 | <div class="col-md-1 user-img"> |
| 9 | 9 | <img src="{{ talking_to.image_url }}" class="img-responsive" /> |
| 10 | 10 | </div> |
| 11 | 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 | 13 | <p class="talk-last_msg">{% trans 'Last message in' %} {{ chat|last_message }}</p> |
| 14 | 14 | </div> |
| 15 | 15 | <div class="col-md-4 buttons pull-right text-center"> | ... | ... |
chat/templates/chat/list.html
| ... | ... | @@ -13,10 +13,10 @@ |
| 13 | 13 | |
| 14 | 14 | {% block content %} |
| 15 | 15 | <div id="core-subjects-options-div"> |
| 16 | - <ul class="core-subjects-options mural-tabs"> | |
| 16 | + <ul class="core-subjects-options chat-tabs"> | |
| 17 | 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 | 20 | </ul> |
| 21 | 21 | </div> |
| 22 | 22 | ... | ... |
chat/templatetags/chat_tags.py
| ... | ... | @@ -7,7 +7,7 @@ from django.contrib.sessions.models import Session |
| 7 | 7 | |
| 8 | 8 | from log.models import Log |
| 9 | 9 | |
| 10 | -from chat.models import TalkMessages | |
| 10 | +from chat.models import TalkMessages, ChatVisualizations | |
| 11 | 11 | |
| 12 | 12 | register = template.Library() |
| 13 | 13 | |
| ... | ... | @@ -49,4 +49,10 @@ def chat_user(user, chat): |
| 49 | 49 | def last_message(chat): |
| 50 | 50 | last_message = TalkMessages.objects.filter(talk = chat).order_by('-create_date')[0] |
| 51 | 51 | |
| 52 | - return last_message.create_date | |
| 53 | 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 | 60 | \ No newline at end of file | ... | ... |