You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
517 lines
24 KiB
517 lines
24 KiB
{% extends 'partials/base.html' %}
|
|
|
|
{% load specializtions_tags %}
|
|
{% load thumbnail %}
|
|
|
|
{% block content %}
|
|
{% include 'partials/header.html' %}
|
|
|
|
<div class="container mainScore mainBlock2">
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="col-lg-3 divCol3">
|
|
<div class="avatar">
|
|
<div class="avatarInset">
|
|
{% if team.owner.avatar %}
|
|
{% thumbnail team.owner.avatar "265x264" crop="center" as im %}
|
|
<img src="{{ im.url }}" alt="profile-image">
|
|
{% endthumbnail %}
|
|
{% else %}
|
|
<img src="{% static 'img/profile.jpg' %}" alt="profile-image">
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="menuUser disTab">
|
|
<a href="{% url 'users:contractor-filter' %}" class="add-man">
|
|
добавить участника
|
|
</a>
|
|
|
|
<div class="block-users">
|
|
<p>Состав группы</p>
|
|
|
|
{% for c in team.contractors.all %}
|
|
<div class="message-new">
|
|
<div class="imgMess">
|
|
{% if c.avatar %}
|
|
{% thumbnail c.avatar "60x60" crop="center" as im %}
|
|
<img src="{{ im.url }}" alt="mess-image">
|
|
{% endthumbnail %}
|
|
{% else %}
|
|
<img src="{% static 'img/profile.jpg' %}" alt="mess-image">
|
|
{% endif %}
|
|
</div>
|
|
|
|
<p class="nameMess" style="float: none">
|
|
<a href="{% url 'users:contractor-profile' c.pk %}">{{ c.get_full_name }}</a>
|
|
</p>
|
|
|
|
<p><span>{{ c.get_popular_specialization }}</span></p>
|
|
</div>
|
|
{% empty %}
|
|
В группе пока нет участников
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-lg-9 divCol9">
|
|
<div class="col-lg-4">
|
|
<p class="nameUser">{{ team.name }}</p>
|
|
<p class="cityUser">{{ team.owner.get_location }}</p>
|
|
<p class="navv">На сайте {{ team.created }}</p>
|
|
|
|
<p class="navv">
|
|
Кол-во человек: <span>{{ team.contractors.count }}</span>
|
|
</p>
|
|
|
|
<p class="navv">
|
|
Выполненных проектов: <span>{{ completed_project_count }}</span>
|
|
</p>
|
|
|
|
<div class="statusUser st-new">Свободен</div>
|
|
<a href="javascript:void(0)" class="new-prop new-prop2 new-prop3">написать сообщение</a>
|
|
</div>
|
|
|
|
<div class="col-lg-4">
|
|
{% specialization_team_widget team.pk %}
|
|
</div>
|
|
|
|
<div class="col-lg-4">
|
|
{% ratings_team_widget team.pk %}
|
|
|
|
{% if team.owner.cro %}
|
|
<div class="sroUser">
|
|
<div class="iconSRO"></div>
|
|
<p>Есть допуск СРО</p>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-lg-9">
|
|
<div class="profileTabs2">
|
|
<ul class="nav nav-tabs nav-justified">
|
|
<li role="presentation" class="active">
|
|
<a href="#tab11" data-toggle="tab">Портфолио</a>
|
|
</li>
|
|
<li role="presentation">
|
|
<a href="#tab12" data-toggle="tab">Готовые проекты</a>
|
|
</li>
|
|
<li role="presentation">
|
|
<a href="#tab13" data-toggle="tab">Отзывы</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-content">
|
|
<div id="tab11" class="tab-pane fade in active">
|
|
<div class="galleryWork2 disTab col-lg-9 -portfolios-container">
|
|
<script type="text/template" class="-portfolio-item-templ">
|
|
<div class="col-lg-4">
|
|
<div class="insetCol box-sizing disTab">
|
|
<div class="imgGal" style="background:rgba(0, 0, 0, 0) url('<%- portfolio.photos[0].img %>') no-repeat scroll center center / cover">
|
|
<a class="open-modal-image" href="<%- portfolio.photos[0].img %>"><div class="imgFigure"></div></a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="insetCol2 box-sizing disTab text-center">
|
|
<a href="<%- portfAbsUrl %>"><%- trunc({length: 50}, portfolio.name) %></a>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
</div>
|
|
|
|
<div class="col-lg-9 col-lg-offset-3 -more-portfolios-btn">
|
|
<div class="linkElse">
|
|
<a href="#" onclick="loadMorePortfolios(); return false" class="showElse">показать еще</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="tab12" class="tab-pane fade">
|
|
<div class="galleryWork2 disTab -work-sells-container">
|
|
<script type="text/template" class="-work-sell-item-templ">
|
|
<div class="col-lg-4">
|
|
<div class="insetCol box-sizing disTab">
|
|
<div class="imgGal" style="background:rgba(0, 0, 0, 0) url('<%- workSell.photos[0].img %>') no-repeat scroll center center / cover ;">
|
|
<a class="open-modal-image" href="<%- workSell.photos[0].img %>"><div class="imgFigure"></div></a>
|
|
</div>
|
|
|
|
<div class="cenaImg box-sizing">
|
|
<div class="cenaImgInset">
|
|
<%- workSell.budget %> <i class="fa fa-rub"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="insetCol2 box-sizing disTab">
|
|
<a href="<%- workSellAbsUrl %>"><%- trunc({length: 50}, workSell.name) %></a>
|
|
</div>
|
|
</div>
|
|
</script>
|
|
</div>
|
|
|
|
<div class="col-lg-9 col-lg-offset-3 -more-work-sells-btn">
|
|
<div class="linkElse">
|
|
<a href="#" onclick="loadMoreWorkSells(); return false" class="showElse">показать еще</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="tab13" class="tab-pane fade">
|
|
{% for review in reviews %}
|
|
<div class="new-comm-44">
|
|
<div class="col-lg-12">
|
|
<p class="nameComm">
|
|
<a href="#">{{ review.get_sender }}</a>
|
|
</p>
|
|
|
|
{% if review.project.deal_type == 'secure_deal' %}
|
|
<span class="dateComm44">Безопасная сделка</span>
|
|
{% endif %}
|
|
|
|
<div class="stars box-sizing">
|
|
<a href="#">положительный отзыв</a>
|
|
</div>
|
|
|
|
<p class="textComm44">
|
|
{{ review.text|safe }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
{% empty %}
|
|
<div class="new-comm-44">
|
|
<p style="text-align: center;">Отзывов пока нет</p>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div>
|
|
{% include 'partials/footer.html' %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
|
|
{% block js_block %}
|
|
<script type="text/javascript">
|
|
(function() {
|
|
// Pagination ---------------------------------------------------
|
|
|
|
|
|
var $portfoliosContainer = $('.-portfolios-container').first()
|
|
var portfolioItemTempl = _.template($portfoliosContainer.find('.-portfolio-item-templ').first().html())
|
|
var $morePortfBtn = $('.-more-portfolios-btn').first()
|
|
var portfAbsUrl = '/projects/portfolio/'
|
|
|
|
var $workSellsContainer = $('.-work-sells-container').first()
|
|
var workSellItemTempl = _.template($workSellsContainer.find('.-work-sell-item-templ').first().html())
|
|
var $moreWorkSellsfBtn = $('.-more-work-sells-btn').first()
|
|
var workSellAbsUrl = '/work_sell/'
|
|
|
|
var teamId = {{ team.pk }}
|
|
var contractorIds = [{{ team.owner.pk }}]
|
|
|
|
var portfUrl = new URI('/api/portfolios/')
|
|
var workSellUrl = new URI('/api/work-sells/')
|
|
var pageSize = 3
|
|
|
|
$.get('/api/teams/' + teamId + '/').then(function(res) {
|
|
Array.prototype.push.apply(contractorIds, _.map(function(contractor) {
|
|
return contractor.id
|
|
}, res.contractors))
|
|
})
|
|
.then(loadMorePortfolios)
|
|
.then(loadMoreWorkSells)
|
|
|
|
function loadMorePortfolios() {
|
|
var query = portfUrl.query(true)
|
|
|
|
portfUrl.setQuery('user__id__in', _.join(',', contractorIds))
|
|
portfUrl.setQuery('page_size', pageSize)
|
|
portfUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
|
|
|
|
$.get(portfUrl.href())
|
|
.then(function(res) {
|
|
_.each(function(portfolio) {
|
|
$portfoliosContainer.append(portfolioItemTempl({
|
|
portfolio: portfolio,
|
|
portfAbsUrl: portfAbsUrl + portfolio.id + '/',
|
|
trunc: _.truncate,
|
|
}))
|
|
}, res.results)
|
|
|
|
if (!res.next)
|
|
$morePortfBtn.css('display', 'none')
|
|
})
|
|
|
|
.then(function() {
|
|
$('.open-modal-image').magnificPopup({type: 'image'})
|
|
})
|
|
}
|
|
|
|
function loadMoreWorkSells() {
|
|
var query = workSellUrl.query(true)
|
|
|
|
workSellUrl.setQuery('team', teamId)
|
|
workSellUrl.setQuery('page_size', pageSize)
|
|
workSellUrl.setQuery('page', query.page ? Number(query.page) + 1 : 2)
|
|
|
|
$.get(workSellUrl.href()).then(function(res) {
|
|
_.each(function(ws) {
|
|
$workSellsContainer.append(workSellItemTempl({
|
|
workSell: ws,
|
|
workSellAbsUrl: workSellAbsUrl + ws.id + '/',
|
|
trunc: _.truncate,
|
|
}))
|
|
}, res.results)
|
|
|
|
if (!res.next)
|
|
$moreWorkSellsfBtn.css('display', 'none')
|
|
})
|
|
}
|
|
|
|
window.loadMorePortfolios = loadMorePortfolios
|
|
window.loadMoreWorkSells = loadMoreWorkSells
|
|
|
|
|
|
|
|
// Persistent Bootstrap tabs --------------------------------------
|
|
|
|
|
|
$('a[data-toggle="tab"][href="' + window.location.hash + '"]').tab('show')
|
|
|
|
$('a[data-toggle="tab"]').on('click', function($evt) { // Better handle "shown.bs.tab" event?
|
|
window.location.hash = $(this).attr('href')
|
|
})
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
|
|
{# var userId = '{{ contractor.pk }}';#}
|
|
{# #}
|
|
{# var hash = window.location.hash;#}
|
|
{# #}
|
|
{# if (hash == '#open-contact') {#}
|
|
{# $("#contact-contactor-modal").modal();#}
|
|
{# }#}
|
|
{# #}
|
|
{# $('#resume-edit-form').on('submit', function (e) {#}
|
|
{# e.preventDefault();#}
|
|
{# var resumeEditUrl = "{% url 'users:contractor-resume-update' contractor.contractor_resume.pk %}";#}
|
|
{# var dataSerializer = $(this).serialize();#}
|
|
{# #}
|
|
{# $.ajax({#}
|
|
{# url: resumeEditUrl,#}
|
|
{# method: 'POST',#}
|
|
{# beforeSend: function (xhr) {#}
|
|
{# xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'))#}
|
|
{# },#}
|
|
{# data: dataSerializer,#}
|
|
{# dataType: 'json',#}
|
|
{# success: function (data) {#}
|
|
{# console.log(data);#}
|
|
{# if (data.status == 'ok') {#}
|
|
{# $("#resume-text-out").html(data.text);#}
|
|
{# $("#resume-text-edit").modal('hide');#}
|
|
{# #}
|
|
{# }#}
|
|
{# },#}
|
|
{# error: function (jqXHR, exception) {#}
|
|
{# console.log(jqXHR);#}
|
|
{# console.log(exception);#}
|
|
{# console.log(jqXHR.statusCode);#}
|
|
{# }#}
|
|
{# #}
|
|
{# });#}
|
|
{# });#}
|
|
{# #}
|
|
{# #}
|
|
{# $("#diplom-cro-gallery").on('click', '.delete-resume-file',function(e){#}
|
|
{# e.preventDefault();#}
|
|
{# #}
|
|
{# var _this = $(this);#}
|
|
{# var deleteResumeUrl = '/api/contractorresumefiles/' + $(this).attr('data-id') + '/';#}
|
|
{# $.ajax({#}
|
|
{# url:deleteResumeUrl,#}
|
|
{# type: 'DELETE',#}
|
|
{# beforeSend: function (xhr) {#}
|
|
{# xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'))#}
|
|
{# },#}
|
|
{# success: function(json){#}
|
|
{# _this.parent().parent().parent().remove();#}
|
|
{# console.log(json);#}
|
|
{# },#}
|
|
{# error: function(jqXHR, e){#}
|
|
{# console.log(jqXHR.statusCode);#}
|
|
{# }#}
|
|
{# });#}
|
|
{# });#}
|
|
{# #}
|
|
{# #}
|
|
{# $('#worksell-add-form').on('submit', function (e) {#}
|
|
{# e.preventDefault();#}
|
|
{# var dataSerializer = $(this).serialize();#}
|
|
{# $.ajax({#}
|
|
{# url: '/work_sell/create/',#}
|
|
{# method: 'POST',#}
|
|
{# data: dataSerializer,#}
|
|
{# dataType: 'json',#}
|
|
{# success: function (data) {#}
|
|
{# if (data.status == 'ok') {#}
|
|
{# location.reload();#}
|
|
{# }#}
|
|
{# #}
|
|
{# },#}
|
|
{# error: function (jqXHR, exception) {#}
|
|
{# console.log(jqXHR.statusCode);#}
|
|
{# console.log(jqXHR);#}
|
|
{# }#}
|
|
{# #}
|
|
{# })#}
|
|
{# });#}
|
|
{# #}
|
|
{# #}
|
|
{# $('#portfolio-add-form').on('submit', function (e) {#}
|
|
{# e.preventDefault();#}
|
|
{# var dataSerializer = $(this).serialize();#}
|
|
{# #}
|
|
{# $.ajax({#}
|
|
{# url: '/projects/portfolio/create/',#}
|
|
{# method: 'POST',#}
|
|
{# data: dataSerializer,#}
|
|
{# dataType: 'json',#}
|
|
{# success: function (data) {#}
|
|
{# if (data.status == 'ok') {#}
|
|
{# $('#portfolio-add-form').each(function () {#}
|
|
{# this.reset();#}
|
|
{# });#}
|
|
{# location.reload();#}
|
|
{# } else if (data.status == 'no') {#}
|
|
{# #}
|
|
{# $.each(data.form_errors, function (k, v) {#}
|
|
{# $('.error-' + k).html(v).show();#}
|
|
{# });#}
|
|
{# }#}
|
|
{# },#}
|
|
{# error: function (jqXHR, exception) {#}
|
|
{# console.log(jqXHR.statusCode);#}
|
|
{# }#}
|
|
{# });#}
|
|
{# });#}
|
|
{# var url = '/work_sell/basic/';#}
|
|
{# var csrftoken = $.cookie('csrftoken');#}
|
|
{# #}
|
|
{# $("#upload-resume").on('change',function(e){#}
|
|
{# $("#resume-success").html("");#}
|
|
{# var formData = new FormData($(this).closest("form"));#}
|
|
{# formData.append('resume_file', e.target.files[0]);#}
|
|
{# console.log(formData);#}
|
|
{# console.log(e.target.files[0]);#}
|
|
{# $.ajax({#}
|
|
{# url:'/api/contractorresume/{{ contractor.contractor_resume.pk }}/',#}
|
|
{# method:'PUT',#}
|
|
{# beforeSend: function (xhr) {#}
|
|
{# xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));#}
|
|
{# },#}
|
|
{# data: formData,#}
|
|
{# cache: false,#}
|
|
{# dataType: 'json',#}
|
|
{# processData: false,#}
|
|
{# contentType: false,#}
|
|
{# success: function(data){#}
|
|
{# $("#resume-success").html("Файл для резюме успешно загружен!");#}
|
|
{# $(".download-summ").css('display','block').attr('href',data.resume_file);#}
|
|
{# console.log(data);#}
|
|
{# },#}
|
|
{# error: function(jqXHR){#}
|
|
{# console.log(jqXHR);#}
|
|
{# }#}
|
|
{# });#}
|
|
{# });#}
|
|
{# #}
|
|
{# $('#fileupload').fileupload({#}
|
|
{# url: url,#}
|
|
{# crossDomain: false,#}
|
|
{# beforeSend: function (xhr, settings) {#}
|
|
{# $('#progress-portfolio .progress-bar').css(#}
|
|
{# 'width',#}
|
|
{# '0%'#}
|
|
{# );#}
|
|
{# if (!csrfSafeMethod(settings.type)) {#}
|
|
{# xhr.setRequestHeader("X-CSRFToken", csrftoken);#}
|
|
{# }#}
|
|
{# },#}
|
|
{# dataType: 'json',#}
|
|
{# done: function (e, data) {#}
|
|
{# console.log(data);#}
|
|
{# $.each(data.result.files, function (index, file) {#}
|
|
{# var img = $('<img style="width:200px;height:200px;margin:10px;">').attr('src', file.url).appendTo("#files");#}
|
|
{# console.log(file);#}
|
|
{# var currentValue = $("#upload-files-pk").val();#}
|
|
{# currentValue += file.id + ';';#}
|
|
{# $("#upload-files-pk").val(currentValue);#}
|
|
{# #}
|
|
{# });#}
|
|
{# },#}
|
|
{# progressall: function (e, data) {#}
|
|
{# var progress = parseInt(data.loaded / data.total * 100, 10);#}
|
|
{# console.log(progress);#}
|
|
{# $('#progress-portfolio .progress-bar').css(#}
|
|
{# 'width',#}
|
|
{# progress + '%'#}
|
|
{# );#}
|
|
{# }#}
|
|
{# }).prop('disabled', !$.support.fileInput)#}
|
|
{# .parent().addClass($.support.fileInput ? undefined : 'disabled');#}
|
|
{# #}
|
|
{# $('#fileupload-worksell').fileupload({#}
|
|
{# url: url,#}
|
|
{# crossDomain: false,#}
|
|
{# beforeSend: function (xhr, settings) {#}
|
|
{# $('#progress-worksell .progress-bar').css(#}
|
|
{# 'width',#}
|
|
{# '0%'#}
|
|
{# );#}
|
|
{# if (!csrfSafeMethod(settings.type)) {#}
|
|
{# xhr.setRequestHeader("X-CSRFToken", csrftoken);#}
|
|
{# }#}
|
|
{# },#}
|
|
{# dataType: 'json',#}
|
|
{# done: function (e, data) {#}
|
|
{# console.log(data);#}
|
|
{# $.each(data.result.files, function (index, file) {#}
|
|
{# var img = $('<img style="width:200px;height:200px;margin:10px;">').attr('src', file.url).appendTo("#files-worksell");#}
|
|
{# console.log(file);#}
|
|
{# var currentValue = $("#upload-files-worksell-pk").val();#}
|
|
{# currentValue += file.id + ';';#}
|
|
{# $("#upload-files-worksell-pk").val(currentValue);#}
|
|
{# #}
|
|
{# });#}
|
|
{# },#}
|
|
{# progressall: function (e, data) {#}
|
|
{# var progress = parseInt(data.loaded / data.total * 100, 10);#}
|
|
{# console.log(progress);#}
|
|
{# $('#progress-worksell .progress-bar').css(#}
|
|
{# 'width',#}
|
|
{# progress + '%'#}
|
|
{# );#}
|
|
{# }#}
|
|
{# }).prop('disabled', !$.support.fileInput)#}
|
|
{# .parent().addClass($.support.fileInput ? undefined : 'disabled');#}
|
|
{# #}
|
|
{# function csrfSafeMethod(method) {#}
|
|
{# // these HTTP methods do not require CSRF protection#}
|
|
{# return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));#}
|
|
{# }#}
|
|
}())
|
|
</script>
|
|
{% endblock %}
|
|
|