User profile + user page

remotes/origin/1203
Nazar Kotyuk 11 years ago
parent 5bd295a9ea
commit bbc7611646
  1. 16
      accounts/user_catalog_urls.py
  2. 17
      accounts/views.py
  3. 3
      proj/urls.py
  4. 101
      templates/client/accounts/user.html
  5. 449
      templates/client/includes/accounts/current_user.html
  6. 102
      templates/client/includes/accounts/simple_user.html

@ -0,0 +1,16 @@
from django.conf.urls import patterns, url
from django.contrib.auth.decorators import login_required
from views import SettingsView, ProfileView, CalendarView, UserView, UserExpositionsView, UserConferenceView, UserSeminarView
urlpatterns = patterns('',
url(r'^(?P<url>.*)/expositions/(?P<page>\d+)/$', UserExpositionsView.as_view()),
url(r'^(?P<url>.*)/expositions/$', UserExpositionsView.as_view()),
url(r'^(?P<url>.*)/seminars/(?P<page>\d+)/$', UserSeminarView.as_view()),
url(r'^(?P<url>.*)/seminars/$', UserSeminarView.as_view()),
url(r'^(?P<url>.*)/conferences/(?P<page>\d+)/$', UserConferenceView.as_view()),
url(r'^(?P<url>.*)/conferences/$', UserConferenceView.as_view()),
url(r'^(?P<url>.*)/events/(?P<page>\d+)/$', UserView.as_view()),
url(r'^(?P<url>.*)/events/$', UserView.as_view()),
url(r'^(?P<url>.*)/$', UserView.as_view()),
)

@ -168,6 +168,23 @@ class UserView(TemplateView):
except ValueError:
user = get_object_or_404(User, url=url)
if user == self.request.user:
profile = user.profile
profile_forms = {
'avatar_form': AvatarForm(instance=profile), 'name_form': NameForm(instance=user),
'home_form': HomeForm(instance=profile), 'work_form': WorkForm(instance=user),
'about_company_form': AboutCompanyForm(instance=profile), 'phone_form': PhoneForm(instance=profile),
'email_form': EmailForm(instance=user), 'web_page_form': WebPageForm(instance=profile),
'social_form': SocialForm(instance=profile), 'about_form': AboutForm(instance=profile)
}
if not user.company:
company_form = {'company_form': CreateCompanyForm()}
context.update(company_form)
context.update(profile_forms)
context['message_form'] = SendForm()
context['member'] = user
return context

@ -81,7 +81,8 @@ urlpatterns += patterns('',
# url(r'^profile/change-password/', 'accounts.views.change_password'),
url(r'^', include('accounts.user_catalog_urls')),
)
"""

@ -12,103 +12,12 @@
{% block content_list %}
<div class="m-article">
<div class="item-wrap clearfix">
<aside>
{% if member.profile.avatar %}
<div class="i-pict">
<img src="{{ member.profile.avatar.url }}" alt="" />
</div>
{% endif %}
</aside>
<div class="i-info">
<header>
<div class="i-place">
{% if member.profile.country %}
<a href="#">{{ member.profile.country }}</a>, <a href="#">{{ member.profile.city }}</a>
{% endif %}
</div>
<div class="i-title">{{ member.get_full_name }}</div>
</header>
<div class="i-position">{{ member.profile.position }}
{% if member.company %}
в <a href="{{ member.company.get_permanent_url }}">“{{ member.company }}”</a>
{% else %}
{{ member.profile.work }}
{% endif %}
</div>
<div class="i-descr">
{{ member.profile.about_company|safe }}
</div>
{% if request.user == member %}
{% include 'client/includes/accounts/current_user.html' %}
{% else %}
{% include 'client/includes/accounts/simple_user.html' %}
{% endif %}
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons">
{% if user.is_authenticated %}
<a class="button icon-msg pw-open" href="#pw-reply">{% trans 'отправить сообщение' %}</a>
{% endif %}
<ul class="soc-media-buttons">
{% if member.profile.facebook %}
<li><a href="{{ member.profile.facebook }}"><img src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" /></a></li>
{% endif %}
{% if member.profile.linkedin %}
<li><a href="{{ member.profile.linkedin }}"><img src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" /></a></li>
{% endif %}
{% if member.profile.vk %}
<li><a href="{{ member.profile.vk }}"><img src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" /></a></li>
{% endif %}
{% if member.profile.twitter %}
<li><a href="{{ member.profile.twitter }}"><img src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" /></a></li>
{% endif %}
</ul>
</div>
<div class="ic-links">
{% if member.profile.phone %}
<div class="ic-tel">
{{ member.profile.phone|phone }}
</div>
{% endif %}
{% if member.email %}
<div class="ic-mail">
<a class="icon-mail" href="mailto:{{ member.email }}">{{ member.email }}</a>
</div>
{% endif %}
{% if member.profile.web_page %}
<div class="ic-site">
<a class="icon-ext-link" href="{{ member.profile.web_page }}" target="_blank">{{ member.profile.web_page }}</a>
</div>
{% endif %}
</div>
</div>
<hr />
<div class="i-additional">
<div class="ia-title">{% trans 'О себе' %}:</div>
{{ member.profile.about|safe }}
</div>
</div>
<div class="i-statistics">
<header class="clearfix">
<div class="ish-title">{% trans 'Участие в событиях' %}</div>
<div class="ish-data">
<span><a href="/user/{{ member.url }}/expositions/"><b>{{ member.get_expositions_number }}</b> в&nbsp;выставках</a></span>
<span><a href="/user/{{ member.url }}/conferences/"><b>{{ member.get_conferences_number }}</b> в&nbsp;конференциях</a></span>
<span><a href="/user/{{ member.url }}/seminars/"><b>{{ member.get_seminars_number }}</b> в&nbsp;семинарах</a></span>
</div>
</header>
<ul class="cat-list cl-exhibitions">
</ul>
</div>
</div>
</div>
{% endblock %}
{% if user.is_authenticated %}
{% block popup %}

@ -0,0 +1,449 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<div class="m-article">
<div class="item-wrap clearfix">
{# avatar #}
<aside>
<div class="i-pict p-editable">
{% if request.user.profile.avatar %}
<img src="{{ request.user.profile.avatar.url }}" alt="" />
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" enctype="multipart/form-data" id="avatar_form"action="/profile/update/avatar/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ avatar_form.avatar.label }}</label>
<div class="epf-field">
<div class="input-file clearfix">
<div class="button icon-clip">{% trans 'выберите файл' %}</div>
<div class="file-text placehlder">{% trans 'Файл не выбран' %}</div>
<div class="if-field-wrap"><input id="id_avatar" type="file" name="avatar" /></div>
</div>
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</aside>
{# END avatar #}
<div class="i-info">
<header>
{# country and city #}
<div class="i-place p-editable">
{% if home_form.instance.country %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
<a href="#">{{ home_form.instance.country }}</a>
</span>
{% if home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
, <a href="#">{{ home_form.instance.city }}</a>
</span>
<div class="edit-wrap e-left">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="home_form" action="/profile/update/home/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ home_form.country.label }}</label>
<div class="epf-field">
{{ home_form.country }}
</div>
</div>
<div class="epfl">
<label>{% trans 'Город' %}</label>
<div class="epf-field">
<select name="city" style="width: 200px;">
</select>
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END country and city #}
{# name #}
<div class="i-title p-editable">
<span>{{ name_form.get_full_name }}</span>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="name_form" action="/profile/update/name/"
method="post" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ name_form.first_name.label }}</label>
<div class="epf-field">
{{ name_form.first_name }}
</div>
</div>
<div class="epfl">
<label>{{ name_form.last_name.label }}</label>
<div class="epf-field">
{{ name_form.last_name }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END name #}
</header>
{# position #}
<div class="i-position p-editable">
<p>
{{ work_form.position.value }}
{% if work_form.work.value %}
{% trans 'в' %} {{ work_form.work.value }}
{% endif %}
</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="work_form" action="/profile/update/work/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ work_form.position.label }}</label>
<div class="epf-field">
{{ work_form.position }}
</div>
</div>
<div class="epfl">
<label>{{ work_form.work.label }}</label>
<div class="epf-field">
{{ work_form.work }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END position #}
{# description #}
<div class="i-descr p-editable">
<p>{{ about_company_form.about_company.value }}</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="about_company_form" action="/profile/update/about-company/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_company_form.about_company.label }}</label>
<div class="epf-field">
{{ about_company_form.about_company }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END description #}
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons">
<a class="button icon-edit icb-edit-profile" href="#">{% trans 'редактировать профиль' %}</a>
<a class="button orange icon-edit icb-exit-edit" href="#">{% trans 'завершить редактирование' %}</a>
<div class="p-editable">
<ul class="soc-media-buttons">
<li><a href="{% if social_form.facebook.value %} {{ social_form.facebook.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" />
</a>
</li>
<li><a href="{% if social_form.linkedin.value %} {{ social_form.linkedin.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" />
</a>
</li>
<li><a href="{% if social_form.vk.value %} {{ social_form.vk.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" />
</a>
</li>
<li><a href="{% if social_form.twitter.value %} {{ social_form.twitter.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" />
</a>
</li>
</ul>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="social_form" action="/profile/update/social/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-fb-w.png' %}" title="Facebook" alt="Facebook" /> {{ social_form.facebook.label }}</label>
<div class="epf-field">
{{ social_form.facebook }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-lin-w.png' %}" title="LinkedIn" alt="LinkedIn" /> {{ social_form.linkedin.label }}</label>
<div class="epf-field">
{{ social_form.linkedin }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-vk-w.png' %}" title="В контакте" alt="В контакте" /> {{ social_form.vk.label }}</label>
<div class="epf-field">
{{ social_form.vk }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-twit-w.png' %}" title="Twitter" alt="Twitter" /> {{ social_form.twitter.label }}</label>
<div class="epf-field">
{{ social_form.twitter }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
{# contacts #}
<div class="ic-links">
<div class="ic-tel p-editable">
{% if phone_form.phone.value %}
<span>{{ phone_form.phone.value|phone }}</span>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="phone_form" action="/profile/update/phone/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ phone_form.phone.label }}</label>
<div class="epf-field">
{{ phone_form.phone }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
<!--
<div class="ic-mail p-editable">
{% if email_form.email.value %}
<a class="icon-mail" href="mailto:{{ email_form.email.value }}">{{ email_form.email.value }}</a>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix" action="/profile/update/email/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ email_form.email.label }}</label>
<div class="epf-field">
{{ email_form.email }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
-->
<div class="ic-site p-editable">
{% if web_page_form.web_page.value %}
<a class="icon-ext-link" href="{% if web_page_form.web_page.value %}{{ web_page_form.web_page.value }}{% else %}#{% endif %}" target="_blank">
{% if web_page_form.web_page.value %}
{{ web_page_form.web_page.value }}
{% endif %}
</a>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="web_page_form" action="/profile/update/web-page/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ web_page_form.web_page.label }}</label>
<div class="epf-field">
{{ web_page_form.web_page }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END contacts #}
</div>
</div>
<hr/>
{# about #}
<div class="i-additional">
<div class="ia-title">{% trans 'О себе:' %}</div>
<div class="p-editable">
<p>{{ about_form.about.value }}</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="about_form" action="/profile/update/about/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_form.about.label }}</label>
<div class="epf-field">
{{ about_form.about }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
{# END about #}
</div>
</div>
</div>
{% block scripts %}
<script src="{% static 'client/js/_modules/page.profile.js' %}"></script>
<script>
//js module initialization
EXPO.profile.init({
// class seletor to identify required forms on page
updateFormClass:'update-profile-form',
// text and paths for dynamically rendered selectboxes
selectBox:[
{id:'id_country'},
{id:'id_theme',
placeHolder:'Выберите тематику компании'
},
{id:'id_city',
placeholder:'Search city',
path:'/city/get-city/'
},
{id:'id_company',
placeholder:'Search company',
path:'/company/get-company/'
}
]
});
</script>
{% endblock %}

@ -0,0 +1,102 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<div class="m-article">
<div class="item-wrap clearfix">
<aside>
{% if member.profile.avatar %}
<div class="i-pict">
<img src="{{ member.profile.avatar.url }}" alt="" />
</div>
{% endif %}
</aside>
<div class="i-info">
<header>
<div class="i-place">
{% if member.profile.country %}
<a href="#">{{ member.profile.country }}</a>, <a href="#">{{ member.profile.city }}</a>
{% endif %}
</div>
<div class="i-title">{{ member.get_full_name }}</div>
</header>
<div class="i-position">{{ member.profile.position }}
{% if member.company %}
в <a href="{{ member.company.get_permanent_url }}">“{{ member.company }}”</a>
{% else %}
{{ member.profile.work }}
{% endif %}
</div>
<div class="i-descr">
{{ member.profile.about_company|safe }}
</div>
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons">
{% if user.is_authenticated %}
<a class="button icon-msg pw-open" href="#pw-reply">{% trans 'отправить сообщение' %}</a>
{% endif %}
<ul class="soc-media-buttons">
{% if member.profile.facebook %}
<li><a href="{{ member.profile.facebook }}"><img src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" /></a></li>
{% endif %}
{% if member.profile.linkedin %}
<li><a href="{{ member.profile.linkedin }}"><img src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" /></a></li>
{% endif %}
{% if member.profile.vk %}
<li><a href="{{ member.profile.vk }}"><img src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" /></a></li>
{% endif %}
{% if member.profile.twitter %}
<li><a href="{{ member.profile.twitter }}"><img src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" /></a></li>
{% endif %}
</ul>
</div>
<div class="ic-links">
{% if member.profile.phone %}
<div class="ic-tel">
{{ member.profile.phone|phone }}
</div>
{% endif %}
{% if member.email %}
<div class="ic-mail">
<a class="icon-mail" href="mailto:{{ member.email }}">{{ member.email }}</a>
</div>
{% endif %}
{% if member.profile.web_page %}
<div class="ic-site">
<a class="icon-ext-link" href="{{ member.profile.web_page }}" target="_blank">{{ member.profile.web_page }}</a>
</div>
{% endif %}
</div>
</div>
<hr />
<div class="i-additional">
<div class="ia-title">{% trans 'О себе' %}:</div>
{{ member.profile.about|safe }}
</div>
</div>
<div class="i-statistics">
<header class="clearfix">
<div class="ish-title">{% trans 'Участие в событиях' %}</div>
<div class="ish-data">
<span><a href="/user/{{ member.url }}/expositions/"><b>{{ member.get_expositions_number }}</b> в&nbsp;выставках</a></span>
<span><a href="/user/{{ member.url }}/conferences/"><b>{{ member.get_conferences_number }}</b> в&nbsp;конференциях</a></span>
<span><a href="/user/{{ member.url }}/seminars/"><b>{{ member.get_seminars_number }}</b> в&nbsp;семинарах</a></span>
</div>
</header>
<ul class="cat-list cl-exhibitions">
</ul>
</div>
</div>
</div>
Loading…
Cancel
Save