|
|
|
@ -17,15 +17,18 @@ |
|
|
|
<ul class="nav nav-tabs nav-justified"> |
|
|
|
<ul class="nav nav-tabs nav-justified"> |
|
|
|
|
|
|
|
|
|
|
|
<li role="presentation"> |
|
|
|
<li role="presentation"> |
|
|
|
<a href="#tab1" data-toggle="tab">Личные<span class="count-tab" id="count-tab-contact">{{ contacts_users_count }}</span></a> |
|
|
|
<a href="#tab1" data-toggle="tab">Личные<span class="count-tab" |
|
|
|
|
|
|
|
id="count-tab-contact">{{ contacts_users_count }}</span></a> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
|
|
|
|
|
|
|
|
<li role="presentation"> |
|
|
|
<li role="presentation"> |
|
|
|
<a href="#tab2" data-toggle="tab">Заказчики<span class="count-tab" id="count-tab-order">{{ orders_ms_count }}</span></a> |
|
|
|
<a href="#tab2" data-toggle="tab">Заказчики<span class="count-tab" |
|
|
|
|
|
|
|
id="count-tab-order">{{ orders_ms_count }}</span></a> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
|
|
|
|
|
|
|
|
<li role="presentation"> |
|
|
|
<li role="presentation"> |
|
|
|
<a href="#tab3" data-toggle="tab">Исполнители,Группы<span class="count-tab" id="count-tab-team">{{ teams_ms_count }}</span></a> |
|
|
|
<a href="#tab3" data-toggle="tab">Исполнители,Группы<span class="count-tab" |
|
|
|
|
|
|
|
id="count-tab-team">{{ teams_ms_count }}</span></a> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
|
|
|
|
|
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
@ -40,29 +43,7 @@ |
|
|
|
<div class="messageBlock box-sizing disTab"> |
|
|
|
<div class="messageBlock box-sizing disTab"> |
|
|
|
<p>Контакты</p> |
|
|
|
<p>Контакты</p> |
|
|
|
{% for contact in contacts_users %} |
|
|
|
{% for contact in contacts_users %} |
|
|
|
<div class="message messd user-block" id="userBlock{{ contact.pk }}" data-id="{{ contact.pk }}"> |
|
|
|
{% include 'inc-contact-card.html' %} |
|
|
|
<div class="imgMess"> |
|
|
|
|
|
|
|
{% thumbnail contact.avatar "60x60" crop="center" as im %} |
|
|
|
|
|
|
|
<img src="{{ im.url }}" alt="mess-image"> |
|
|
|
|
|
|
|
{% endthumbnail %} |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<p class="nameMess"> |
|
|
|
|
|
|
|
{% if contact.is_contractor %} |
|
|
|
|
|
|
|
{% url "users:contractor-profile" pk=contact.pk as contact_url %} |
|
|
|
|
|
|
|
{% else %} |
|
|
|
|
|
|
|
{% url "users:customer-profile-open-projects" pk=contact.pk as contact_url %} |
|
|
|
|
|
|
|
{% endif %} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div><a href="{{ contact_url }}" style="color:black;">{{ contact.username }}</a></div> |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="#" data-id="{{ contact.id }}" class="conMess">Контакты</a> |
|
|
|
|
|
|
|
<span class="contact-count-{{ contact.pk|add:request.user.pk }}"> |
|
|
|
|
|
|
|
{% get_new_count_for_contact contact request.user %}</span> |
|
|
|
|
|
|
|
<a href="#" class="deleteMess" data-recipent-id="{{ contact.pk }}"> |
|
|
|
|
|
|
|
Удалить контакт |
|
|
|
|
|
|
|
</a> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
{% endfor %} |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -74,7 +55,8 @@ |
|
|
|
<input type="hidden" value="{{ request.user.pk }}" name="senderId" id="senderContactId"/> |
|
|
|
<input type="hidden" value="{{ request.user.pk }}" name="senderId" id="senderContactId"/> |
|
|
|
<input type="hidden" value="" name="recipentId" id="recipentContactId"/> |
|
|
|
<input type="hidden" value="" name="recipentId" id="recipentContactId"/> |
|
|
|
<textarea id="chat" name="chat_message" class="box-sizing"></textarea> |
|
|
|
<textarea id="chat" name="chat_message" class="box-sizing"></textarea> |
|
|
|
<p class="errorEmptyMessage" style="color: red;display:none;">Пустое сообщение нельзя отправить</p> |
|
|
|
<p class="errorEmptyMessage" style="color: red;display:none;">Пустое сообщение нельзя |
|
|
|
|
|
|
|
отправить</p> |
|
|
|
|
|
|
|
|
|
|
|
<div class="bunChat"> |
|
|
|
<div class="bunChat"> |
|
|
|
<div class="setChat box-sizing upload"> |
|
|
|
<div class="setChat box-sizing upload"> |
|
|
|
@ -101,7 +83,8 @@ |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
<form id="add-form-contractor-note"> |
|
|
|
<form id="add-form-contractor-note"> |
|
|
|
<p>Для заметок</p> |
|
|
|
<p>Для заметок</p> |
|
|
|
<input type="hidden" name="sender" id="senderNoteContractor" value="{{ request.user.pk }}"/> |
|
|
|
<input type="hidden" name="sender" id="senderNoteContractor" |
|
|
|
|
|
|
|
value="{{ request.user.pk }}"/> |
|
|
|
<input type="hidden" name="recipent" id="recipentNoteContractor" value=""/> |
|
|
|
<input type="hidden" name="recipent" id="recipentNoteContractor" value=""/> |
|
|
|
|
|
|
|
|
|
|
|
<textarea id="chat2" name="text"></textarea> |
|
|
|
<textarea id="chat2" name="text"></textarea> |
|
|
|
@ -123,12 +106,15 @@ |
|
|
|
<p>Заказы</p> |
|
|
|
<p>Заказы</p> |
|
|
|
{% for order in orders %} |
|
|
|
{% for order in orders %} |
|
|
|
<div class="orderBlock box-sizing order-block" data-project-id="{{ order.project.id }}" |
|
|
|
<div class="orderBlock box-sizing order-block" data-project-id="{{ order.project.id }}" |
|
|
|
id="orderBlock{{ order.id }}" data-team-id="{% if order.team %}{{ order.team.pk }}{% else %}0{% endif %}" data-recipent-id="{{ order.project.customer.pk }}" data-id="{{ order.id }}"> |
|
|
|
id="orderBlock{{ order.id }}" |
|
|
|
|
|
|
|
data-team-id="{% if order.team %}{{ order.team.pk }}{% else %}0{% endif %}" |
|
|
|
|
|
|
|
data-recipent-id="{{ order.project.customer.pk }}" data-id="{{ order.id }}"> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<p class="titleOB">{{ order }}</p> |
|
|
|
<p class="titleOB">{{ order }}</p> |
|
|
|
<div class="hideOBB"> |
|
|
|
<div class="hideOBB"> |
|
|
|
<p class="pOB"> |
|
|
|
<p class="pOB"> |
|
|
|
<span style="display: none;" class="order-count-{{ order.id }}">{% get_new_count_for_order request.user order.id %}</span> |
|
|
|
<span style="display: none;" |
|
|
|
|
|
|
|
class="order-count-{{ order.id }}">{% get_new_count_for_order request.user order.id %}</span> |
|
|
|
<span>Исполнитель:</span> {{ request.user.get_full_name }}</p> |
|
|
|
<span>Исполнитель:</span> {{ request.user.get_full_name }}</p> |
|
|
|
|
|
|
|
|
|
|
|
<a href="#" class="linkChat11 full-order-info"> |
|
|
|
<a href="#" class="linkChat11 full-order-info"> |
|
|
|
@ -163,7 +149,8 @@ |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<a href="#" class="linkChat11 full-order-info"> |
|
|
|
<a href="#" class="linkChat11 full-order-info"> |
|
|
|
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> |
|
|
|
<span class="glyphicon glyphicon-info-sign" |
|
|
|
|
|
|
|
aria-hidden="true"></span> |
|
|
|
Полное описание заказа |
|
|
|
Полное описание заказа |
|
|
|
</a> |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -183,7 +170,8 @@ |
|
|
|
<input type="hidden" id="senderId" name="senderId" value="{{ request.user.pk }}"> |
|
|
|
<input type="hidden" id="senderId" name="senderId" value="{{ request.user.pk }}"> |
|
|
|
<input type="hidden" id="recipentId" name="recipentId" value=""> |
|
|
|
<input type="hidden" id="recipentId" name="recipentId" value=""> |
|
|
|
<textarea id="chat" class="box-sizing"></textarea> |
|
|
|
<textarea id="chat" class="box-sizing"></textarea> |
|
|
|
<p class="errorEmptyMessage" style="color: red;display:none;">Пустое сообщение нельзя отправить</p> |
|
|
|
<p class="errorEmptyMessage" style="color: red;display:none;">Пустое сообщение нельзя |
|
|
|
|
|
|
|
отправить</p> |
|
|
|
<div class="bunChat"> |
|
|
|
<div class="bunChat"> |
|
|
|
<div class="setChat box-sizing upload"> |
|
|
|
<div class="setChat box-sizing upload"> |
|
|
|
<input type="file" name="file" id="upload-document-order"> |
|
|
|
<input type="file" name="file" id="upload-document-order"> |
|
|
|
@ -280,7 +268,8 @@ |
|
|
|
<p>Заказы</p> |
|
|
|
<p>Заказы</p> |
|
|
|
{% for torder in team_orders %} |
|
|
|
{% for torder in team_orders %} |
|
|
|
<div class="team-order-block orderBlock box-sizing" id="teamOrderBlock{{ torder.pk }}" |
|
|
|
<div class="team-order-block orderBlock box-sizing" id="teamOrderBlock{{ torder.pk }}" |
|
|
|
data-team-id="{{ torder.team.pk }}" data-order-id="{{ torder.pk }}" data-id="{{ torder.pk }}"> |
|
|
|
data-team-id="{{ torder.team.pk }}" data-order-id="{{ torder.pk }}" |
|
|
|
|
|
|
|
data-id="{{ torder.pk }}"> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<p class="titleOB"> |
|
|
|
<p class="titleOB"> |
|
|
|
{{ torder }} |
|
|
|
{{ torder }} |
|
|
|
@ -288,7 +277,8 @@ |
|
|
|
<div class="hideOBB disTab"> |
|
|
|
<div class="hideOBB disTab"> |
|
|
|
<p class="pOB"> |
|
|
|
<p class="pOB"> |
|
|
|
|
|
|
|
|
|
|
|
<span style="display: none;" class="teamorder-count-{{ torder.team.id }}">{% get_new_count_for_team request.user torder.team.id torder.pk %}</span> |
|
|
|
<span style="display: none;" |
|
|
|
|
|
|
|
class="teamorder-count-{{ torder.team.id }}">{% get_new_count_for_team request.user torder.team.id torder.pk %}</span> |
|
|
|
<span>Исполнитель:</span> {{ torder.team.name }} |
|
|
|
<span>Исполнитель:</span> {{ torder.team.name }} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<ul class="listChat1"> |
|
|
|
<ul class="listChat1"> |
|
|
|
@ -300,7 +290,7 @@ |
|
|
|
<span>Чаты:</span> |
|
|
|
<span>Чаты:</span> |
|
|
|
{% if request.user.pk != torder.team.owner.pk %} |
|
|
|
{% if request.user.pk != torder.team.owner.pk %} |
|
|
|
<span class="team-chat-user" |
|
|
|
<span class="team-chat-user" |
|
|
|
data-id="{{ torder.team.owner.pk}}">{{ torder.team.owner.username }}</span> |
|
|
|
data-id="{{ torder.team.owner.pk }}">{{ torder.team.owner.username }}</span> |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
{% for tuser in torder.team.contractors.all %} |
|
|
|
{% for tuser in torder.team.contractors.all %} |
|
|
|
{% if request.user.pk != tuser.pk %} |
|
|
|
{% if request.user.pk != tuser.pk %} |
|
|
|
@ -318,14 +308,16 @@ |
|
|
|
{% endfor %} |
|
|
|
{% endfor %} |
|
|
|
|
|
|
|
|
|
|
|
{% for yteam in your_teams %} |
|
|
|
{% for yteam in your_teams %} |
|
|
|
<div class="team-block orderBlock box-sizing" id="teamMyBlock{{ yteam.pk }}" data-team-id="{{ yteam.pk }}"> |
|
|
|
<div class="team-block orderBlock box-sizing" id="teamMyBlock{{ yteam.pk }}" |
|
|
|
|
|
|
|
data-team-id="{{ yteam.pk }}"> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<span class="dimovChat"></span> |
|
|
|
<p class="titleOB"> |
|
|
|
<p class="titleOB"> |
|
|
|
{{ yteam }} |
|
|
|
{{ yteam }} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<div class="hideOBB disTab"> |
|
|
|
<div class="hideOBB disTab"> |
|
|
|
<p class="pOB"> |
|
|
|
<p class="pOB"> |
|
|
|
<span style="display: none;" class="team-count-{{ yteam.id }}">{% get_new_count_for_team request.user yteam.id %}</span> |
|
|
|
<span style="display: none;" |
|
|
|
|
|
|
|
class="team-count-{{ yteam.id }}">{% get_new_count_for_team request.user yteam.id %}</span> |
|
|
|
<span>Владелец группы:</span> {{ yteam.owner }} |
|
|
|
<span>Владелец группы:</span> {{ yteam.owner }} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<ul class="listChat1"> |
|
|
|
<ul class="listChat1"> |
|
|
|
@ -336,11 +328,13 @@ |
|
|
|
<p class="pOB"> |
|
|
|
<p class="pOB"> |
|
|
|
<span>Чаты:</span> |
|
|
|
<span>Чаты:</span> |
|
|
|
{% if request.user.pk != torder.team.owner.pk %} |
|
|
|
{% if request.user.pk != torder.team.owner.pk %} |
|
|
|
<span class="team-chat-user" data-id="{{ yteam.owner.pk}}">{{ yteam.owner.username }}</span> |
|
|
|
<span class="team-chat-user" |
|
|
|
|
|
|
|
data-id="{{ yteam.owner.pk }}">{{ yteam.owner.username }}</span> |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
{% for tuser in yteam.contractors.all %} |
|
|
|
{% for tuser in yteam.contractors.all %} |
|
|
|
{% if request.user.pk != tuser.pk %} |
|
|
|
{% if request.user.pk != tuser.pk %} |
|
|
|
<span class="team-chat-user" data-id="{{ tuser.pk }}">{{ tuser.username }} </span> |
|
|
|
<span class="team-chat-user" |
|
|
|
|
|
|
|
data-id="{{ tuser.pk }}">{{ tuser.username }} </span> |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
{% endfor %} |
|
|
|
{% endfor %} |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
@ -361,7 +355,8 @@ |
|
|
|
<input type="hidden" name="team_ids" id="teamIds"> |
|
|
|
<input type="hidden" name="team_ids" id="teamIds"> |
|
|
|
<input type="hidden" name="document-send" id="documentSendIds"> |
|
|
|
<input type="hidden" name="document-send" id="documentSendIds"> |
|
|
|
<textarea id="chatText" class="chat-textarea box-sizing"></textarea> |
|
|
|
<textarea id="chatText" class="chat-textarea box-sizing"></textarea> |
|
|
|
<p class="errorEmptyMessage" style="color: red;display:none;">Пустое сообщение нельзя отправить</p> |
|
|
|
<p class="errorEmptyMessage" style="color: red;display:none;">Пустое сообщение нельзя |
|
|
|
|
|
|
|
отправить</p> |
|
|
|
<div class="bunChat"> |
|
|
|
<div class="bunChat"> |
|
|
|
<div class="setChat box-sizing upload"> |
|
|
|
<div class="setChat box-sizing upload"> |
|
|
|
<input type="file" name="file" id="upload-document-team"> |
|
|
|
<input type="file" name="file" id="upload-document-team"> |
|
|
|
|