Aside subscribtion. Start filling settings sub

remotes/origin/1203
Nazar Kotjuk 10 years ago
parent 32564d0d44
commit e0a23bdae9
  1. 16
      accounts/views.py
  2. 25
      city/views.py
  3. 20
      emencia/django/newsletter/admin_forms.py
  4. 90
      emencia/django/newsletter/forms.py
  5. 9
      emencia/django/newsletter/managers.py
  6. 6
      emencia/django/newsletter/models.py
  7. 2
      emencia/django/newsletter/urls/__init__.py
  8. 8
      emencia/django/newsletter/views/admin_views.py
  9. 49
      emencia/django/newsletter/views/expo_views.py
  10. 10
      functions/search_forms.py
  11. 8
      proj/views.py
  12. 41
      templates/admin/newsletters/contact.html
  13. 648
      templates/client/accounts/settings.html
  14. 4
      templates/client/base_catalog.html
  15. 5
      templates/client/includes/announces.html
  16. 6
      templates/client/includes/banners/expo_list_baner.html
  17. 8
      templates/client/includes/footer.html
  18. 2
      templates/client/newsletters/activation_template.html
  19. 16
      templates/client/newsletters/subcribe.html
  20. 56
      templates/client/popups/announces.html
  21. 44
      templates/client/static_client/js/_modules/block.common.js
  22. 2
      templates/client/static_client/js_min/_modules/block.common.min.js

@ -6,7 +6,6 @@ from django.shortcuts import get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse, Http404 from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.utils.translation import ugettext as _, get_language from django.utils.translation import ugettext as _, get_language
from django.utils import timezone
from django_messages.forms import SendForm from django_messages.forms import SendForm
from django.views.generic import TemplateView, FormView from django.views.generic import TemplateView, FormView
from functions.custom_views import ListView from functions.custom_views import ListView
@ -16,6 +15,8 @@ from company.forms import CreateCompanyForm
from .models import User from .models import User
from .edit_forms import AvatarForm, NameForm, HomeForm, WorkForm, AboutCompanyForm, PhoneForm, EmailForm,\ from .edit_forms import AvatarForm, NameForm, HomeForm, WorkForm, AboutCompanyForm, PhoneForm, EmailForm,\
WebPageForm, SocialForm, AboutForm WebPageForm, SocialForm, AboutForm
from emencia.django.newsletter.forms import SubscribeSettingsForm
from emencia.django.newsletter.models import Contact
@ -25,11 +26,20 @@ class SettingsView(TemplateView):
password, email notifications, social settings, subscription password, email notifications, social settings, subscription
""" """
template_name = 'accounts/settings.html' template_name = 'client/accounts/settings.html'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(SettingsView, self).get_context_data(**kwargs) context = super(SettingsView, self).get_context_data(**kwargs)
context['change_password_form'] = ChangePasswordForm() context['change_password_form'] = ChangePasswordForm()
context['email_announcement_form'] = EmailAnnouncementForm() user = self.request.user
try:
contact = user.contact_set.get(email=user.username)
except Contact.DoesNotExist:
contact = None
if contact:
context['subscribe'] = SubscribeSettingsForm(instance=contact.contactsettings)
else:
context['subscribe'] = SubscribeSettingsForm()
return context return context
def dates_range(date1, date2): def dates_range(date1, date2):

@ -1,7 +1,10 @@
import json import json
from django.views.generic import DetailView from django.views.generic import DetailView
from django.http import HttpResponse from django.http import HttpResponse
from django.utils import translation
from haystack.query import SearchQuerySet
from models import City from models import City
from settings.views import get_by_lang
class CityView(DetailView): class CityView(DetailView):
@ -12,14 +15,22 @@ class CityView(DetailView):
def get_city(request): def get_city(request):
if request.is_ajax(): if request.is_ajax():
country = request.GET['country'] country = request.GET.get('country')
term = request.GET['term'].capitalize() term = request.GET.get('term', '').capitalize()
if not term: lang = translation.get_language()
qs = City.objects.language().filter(country=country).order_by('translations__name').distinct()[:100] if country:
if not term:
qs = City.objects.language().filter(country=country).order_by('translations__name').distinct()[:100]
else:
qs = City.objects.language().filter(country=country, translations__name__contains=term).distinct()
result = [{'id': city.id, 'label': city.name} for city in qs]
else: else:
qs = City.objects.language().filter(country=country, translations__name__contains=term).distinct() if not term:
result = [{'id': city.id, 'label': city.name} for city in qs] qs = SearchQuerySet().models(City).all().order_by('name_%s'%lang)[:30]
else:
qs = SearchQuerySet().models(City).autocomplete(content_auto=term).order_by('name_%s'%lang)[:30]
result = [{'id': city.pk, 'label': get_by_lang(city, 'name', lang)} for city in qs]
return HttpResponse(json.dumps(result), content_type='application/json') return HttpResponse(json.dumps(result, indent=4), content_type='application/json')
else: else:
return HttpResponse('not ajax') return HttpResponse('not ajax')

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils import translation
from ckeditor.widgets import CKEditorWidget from ckeditor.widgets import CKEditorWidget
from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter, Attachment from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter, Attachment
from city.models import City from city.models import City
@ -18,6 +19,13 @@ class ContactSettingsForm(forms.ModelForm):
country = forms.MultipleChoiceField(choices=[(c.id,c.name) for c in list(set(Country.objects.language().all()))], required=False) country = forms.MultipleChoiceField(choices=[(c.id,c.name) for c in list(set(Country.objects.language().all()))], required=False)
area = forms.MultipleChoiceField(choices=[(a.id, a.name) for a in list(set(Area.objects.language().all()))], required=False) area = forms.MultipleChoiceField(choices=[(a.id, a.name) for a in list(set(Area.objects.language().all()))], required=False)
def __init__(self, *args, **kwargs):
super(ContactSettingsForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance:
lang = translation.get_language()
self.fields['city'].widget.attrs['data-init-text'] = [(item.id, item.name) for item in list(instance.city.filter(translations__language_code=lang))]
class Meta: class Meta:
model = ContactSettings model = ContactSettings
fields = ('periodic', 'exponent_practicum', 'organiser_practicum', 'theme', 'area', 'country', 'city', ) fields = ('periodic', 'exponent_practicum', 'organiser_practicum', 'theme', 'area', 'country', 'city', )
@ -39,7 +47,17 @@ class ContactSettingsForm(forms.ModelForm):
return int(self.cleaned_data['periodic']) return int(self.cleaned_data['periodic'])
def clean_city(self): def clean_city(self):
return City.objects.none() cities = self.cleaned_data.get('city')
if cities:
res = []
for id in cities.split(','):
try:
res.append(int(id))
except ValueError:
continue
return City.objects.filter(id__in=res)
else:
return City.objects.none()
class MailingListForm(forms.ModelForm): class MailingListForm(forms.ModelForm):

@ -2,12 +2,16 @@
"""Forms for emencia.django.newsletter""" """Forms for emencia.django.newsletter"""
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ValidationError
from django.utils import translation
from haystack.query import SearchQuerySet
from functions.search_forms import get_by_lang
from emencia.django.newsletter.models import Contact, ContactSettings from emencia.django.newsletter.models import Contact, ContactSettings
from emencia.django.newsletter.models import MailingList from emencia.django.newsletter.models import MailingList
from functions.form_check import translit_with_separator as tr from functions.form_check import translit_with_separator as tr
from theme.models import Theme from theme.models import Theme
from country.models import Country, Area from country.models import Country, Area
from city.models import City
class MailingListSubscriptionForm(forms.ModelForm): class MailingListSubscriptionForm(forms.ModelForm):
@ -85,8 +89,7 @@ class ContactSettingsForm(forms.ModelForm):
class ContactFilterForm(forms.Form): class ContactFilterForm(forms.Form):
email = forms.EmailField(label="Email", max_length=255, required=False, email = forms.EmailField(label="Email", max_length=255, required=False,
widget=forms.TextInput(attrs={'class':'input-xlarge search-query','placeholder':'Email'})) widget=forms.TextInput(attrs={'class':'input-xlarge search-query','placeholder':'Email'}))
theme = forms.MultipleChoiceField(label="Тематика", choices = [(t.id, t.name) for t in Theme.objects.language()], theme = forms.MultipleChoiceField(label="Тематика", choices = [(t.id, t.name) for t in Theme.objects.language()])
required=False)
country = forms.MultipleChoiceField(label="Страна", country = forms.MultipleChoiceField(label="Страна",
choices = [(c.id, c.name) for c in list(set(Country.objects.language('ru').all()))], choices = [(c.id, c.name) for c in list(set(Country.objects.language('ru').all()))],
required=False) required=False)
@ -117,3 +120,84 @@ class ContactFilterForm(forms.Form):
qs = qs.filter(valid=True) qs = qs.filter(valid=True)
return qs, title return qs, title
class AbstractSubscribeForm(forms.ModelForm):
email = forms.EmailField(widget=forms.TextInput(attrs={'placeholder': 'Email'}))
class Meta:
model = ContactSettings
fields = ('periodic', 'exponent_practicum', 'organiser_practicum', 'theme', 'country', 'city')
def clean_email(self):
email = self.cleaned_data['email']
try:
Contact.objects.get(email=email)
except Contact.DoesNotExist:
return email
raise ValidationError(_(u'Такой email уже есть в базе даных'))
def clean_city(self):
cities = self.cleaned_data.get('city')
if cities:
res = []
for id in cities.split(','):
try:
res.append(int(id))
except ValueError:
continue
return City.objects.filter(id__in=res)
else:
return City.objects.none()
def clean_country(self):
countries = self.cleaned_data['country']
return Country.objects.filter(id__in=countries)
def clean_theme(self):
themes = self.cleaned_data['theme']
return Theme.objects.filter(id__in=themes)
class SubsribeAssideForm(AbstractSubscribeForm):
city = forms.CharField(
widget=forms.HiddenInput(attrs={'id': 'id_subscription_city', 'placeholder': _(u'Город')}),
required=False)
periodic = forms.ChoiceField(
choices=ContactSettings.PERIODIC_CHOICES, required=False,
widget=forms.Select(attrs={'placeholder': _(u'Периодичность'), 'id': 'id_subscription_periodic'}))
def __init__(self, *args, **kwargs):
super(SubsribeAssideForm, self).__init__(*args, **kwargs)
lang = translation.get_language()
self.fields['theme'] = forms.MultipleChoiceField(
choices=[(item.pk, get_by_lang(item, 'name', lang)) for item in SearchQuerySet().models(Theme).all()],
widget=forms.SelectMultiple(attrs={'placeholder': _(u'Тематики'), 'id': 'id_subscription_theme'}))
self.fields['country'] = forms.MultipleChoiceField(
choices=[(item.pk, get_by_lang(item, 'name', lang)) for item in SearchQuerySet().models(Country).all()],
required=False,
widget=forms.SelectMultiple(attrs={'placeholder': _(u'Страны'), 'id': 'id_subscription_country'}))
class SubscribeSettingsForm(AbstractSubscribeForm):
city = forms.CharField(
widget=forms.HiddenInput(attrs={'id': 'id_sub_set_city', 'placeholder': _(u'Город')}),
required=False)
get_announce = forms.BooleanField(required=False, label=_(u'Получать анонсы'))
moscow_expo = forms.BooleanField(required=False, label=_(u'Выставки Москвы'))
saint_expo = forms.BooleanField(required=False, label=_(u'Выставки Санкт-Петербурга'))
europe_expo = forms.BooleanField(required=False, label=_(u'Выставки Европы'))
def __init__(self, *args, **kwargs):
super(SubscribeSettingsForm, self).__init__(*args, **kwargs)
lang = translation.get_language()
self.fields['theme'] = forms.MultipleChoiceField(
choices=[(item.pk, get_by_lang(item, 'name', lang)) for item in SearchQuerySet().models(Theme).all()],
widget=forms.SelectMultiple(attrs={'placeholder': _(u'Тематики'), 'id': 'id_sub_set_theme'}))
self.fields['country'] = forms.MultipleChoiceField(
choices=[(item.pk, get_by_lang(item, 'name', lang)) for item in SearchQuerySet().models(Country).all()],
required=False,
widget=forms.SelectMultiple(attrs={'placeholder': _(u'Страны'), 'id': 'id_sub_set_country'}))

@ -37,4 +37,13 @@ class ContactManager(models.Manager):
contact.user = user contact.user = user
contact.save() contact.save()
return contact
def create_contact(self, email, user=None):
contact = self.model(user=user, email=email)
if user:
contact.first_name = user.first_name
contact.last_name = user.last_name
contact.save()
contact.send_activation()
return contact return contact

@ -237,9 +237,9 @@ class ContactSettings(models.Model):
WEEK_2 = 2 # every 2 weeks WEEK_2 = 2 # every 2 weeks
MONTH = 3 # every 4 weeks MONTH = 3 # every 4 weeks
PERIODIC_CHOICES = [(WEEK, 'Раз в неделю'), PERIODIC_CHOICES = [(WEEK, _(u'Раз в неделю')),
(WEEK_2, 'Раз в 2 недели'), (WEEK_2, _(u'Раз в 2 недели')),
(MONTH, 'Разв месяц') (MONTH, _(u'Раз в месяц'))
] ]
contact = models.OneToOneField(Contact) contact = models.OneToOneField(Contact)

@ -16,5 +16,7 @@ urlpatterns = patterns('',
url(r'^activation/complete/', TemplateView.as_view(template_name='client/newsletters/activation_complete.html'), url(r'^activation/complete/', TemplateView.as_view(template_name='client/newsletters/activation_complete.html'),
name='subscription_activation_complete'), name='subscription_activation_complete'),
url(r'^activate/(?P<activation_key>.*)/$', ActivationView.as_view(), name='subscription_activation'), url(r'^activate/(?P<activation_key>.*)/$', ActivationView.as_view(), name='subscription_activation'),
url(r'^subsribe/aside/$', 'emencia.django.newsletter.views.expo_views.subscribe_aside',
name='newsletter_subscription_aside'),
url(r'^$', SubscribeView.as_view(), name='newsletter_subscription'), url(r'^$', SubscribeView.as_view(), name='newsletter_subscription'),
) )

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.views.generic import CreateView, ListView, UpdateView, DeleteView, FormView from django.views.generic import CreateView, ListView, UpdateView, DeleteView, FormView
from django.conf import settings from django.conf import settings
from django.utils import translation
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.forms.formsets import formset_factory from django.forms.formsets import formset_factory
from django.http import HttpResponseRedirect, HttpResponse from django.http import HttpResponseRedirect, HttpResponse
@ -70,14 +71,19 @@ class UpdateContact(UpdateView):
self.object.theme = form.cleaned_data['theme'] self.object.theme = form.cleaned_data['theme']
self.object.country = form.cleaned_data['country'] self.object.country = form.cleaned_data['country']
self.object.area = form.cleaned_data['area'] self.object.area = form.cleaned_data['area']
self.object.city = form.cleaned_data['city']
self.object.save() self.object.save()
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
def get_initial(self): def get_initial(self):
lang = translation.get_language()
obj = self.object.contact obj = self.object.contact
data = self.initial.copy() data = self.initial.copy()
city = ','.join(['%s:%s'%(item.id, item.name) for item in self.object.city.filter(translations__language_code=lang)])
data.update({'first_name': obj.first_name, 'subscriber': obj.subscriber, data.update({'first_name': obj.first_name, 'subscriber': obj.subscriber,
'valid': obj.valid, 'tester': obj.tester}) 'valid': obj.valid, 'tester': obj.tester, 'city':city})
return data return data

@ -1,8 +1,13 @@
from django.views.generic import TemplateView, View, FormView # -*- coding: utf-8 -*-
from django.http import HttpResponseRedirect import json
from django.views.generic import TemplateView, FormView
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import redirect from django.shortcuts import redirect
from emencia.django.newsletter.forms import ContactForm, ContactSettingsForm from emencia.django.newsletter.forms import ContactForm, ContactSettingsForm
from emencia.django.newsletter.models import Contact, ContactSettings from emencia.django.newsletter.models import Contact, ContactSettings
from emencia.django.newsletter.forms import SubsribeAssideForm
from accounts.models import User
from country.models import Country
class SubscribeView(FormView): class SubscribeView(FormView):
form_class = ContactForm form_class = ContactForm
@ -32,13 +37,22 @@ class SubscribeView(FormView):
else: else:
form2 = ContactSettingsForm(self.request.POST) form2 = ContactSettingsForm(self.request.POST)
ccc = self.request.POST
if form2.is_valid(): if form2.is_valid():
contact_setting = form2.save(commit=False) contact_setting = form2.save(commit=False)
if not contact_setting.contact_id: if not contact_setting.contact_id:
contact_setting.contact = contact contact_setting.contact = contact
contact_setting.save() contact_setting.save()
form2.save_m2m() form2.save_m2m()
# get country from request
country_code = self.request.META.get('HTTP_GEOIP_COUNTRY_CODE')
try:
country = Country.objects.get(country_code=country_code)
contact_setting.country.add(country)
contact_setting.area.add(country.area)
except Country.DoesNotExist:
pass
contact.send_activation() contact.send_activation()
return HttpResponseRedirect(self.success_url) return HttpResponseRedirect(self.success_url)
@ -87,7 +101,6 @@ class ActivationView(TemplateView):
Implement account-activation logic here. Implement account-activation logic here.
""" """
# todo: add country and city from geoip
activated_contact = Contact.objects.activate(activation_key) activated_contact = Contact.objects.activate(activation_key)
return activated_contact return activated_contact
@ -96,3 +109,31 @@ class ActivationView(TemplateView):
return ('subscription_activation_complete', (), {}) return ('subscription_activation_complete', (), {})
def subscribe_aside(request):
if request.POST:
response = {'success': False}
form = SubsribeAssideForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email']
try:
user = User.objects.get(username=email)
except User.DoesNotExist:
user = None
contact = Contact.objects.create_contact(email, user)
contact_setting = form.save(commit=False)
contact_setting.contact = contact
contact_setting.exponent_practicum = True
contact_setting.organiser_practicum = True
contact_setting.save()
form.save_m2m()
response['success'] = True
else:
errors = form.errors
if 'theme' in errors:
errors['id_subscription_theme'] = errors['theme']
response['errors'] = errors
return HttpResponse(json.dumps(response, indent=2), content_type='application/json')
else:
return HttpResponse('not form request')

@ -8,7 +8,6 @@ from django.utils import translation
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from haystack.query import EmptySearchQuerySet, SearchQuerySet from haystack.query import EmptySearchQuerySet, SearchQuerySet
from country.models import Area from country.models import Area
from theme.models import Theme
from exposition.models import Exposition from exposition.models import Exposition
from conference.models import Conference from conference.models import Conference
from seminar.models import Seminar from seminar.models import Seminar
@ -20,6 +19,15 @@ from city.models import City
from place_exposition.models import PlaceExposition from place_exposition.models import PlaceExposition
from place_conference.models import PlaceConference from place_conference.models import PlaceConference
def get_by_lang(item, field, lang='ru'):
"""
:param item: searchresult object
field: translated field
:return:
"""
return getattr(item, field+'_'+lang)
class AbstactSearchForm(forms.Form): class AbstactSearchForm(forms.Form):
q = forms.CharField(label=_(u'Я ищу'), required=False, widget=forms.TextInput(attrs={'placeholder':_(u'Тематика, слово или название')})) q = forms.CharField(label=_(u'Я ищу'), required=False, widget=forms.TextInput(attrs={'placeholder':_(u'Тематика, слово или название')}))

@ -13,6 +13,7 @@ from theme.models import Theme
from article.models import Article from article.models import Article
from exposition.models import Exposition from exposition.models import Exposition
from conference.models import Conference from conference.models import Conference
from emencia.django.newsletter.forms import SubsribeAssideForm
def clear_slashes(str_): def clear_slashes(str_):
@ -35,15 +36,10 @@ def add_seo(request):
return seo_text return seo_text
def expo_context(request): def expo_context(request):
banners_themes = [24, 34, 4]
banner_tags = [141, 142, 143, 156, 206, 231, 232, 390, 391, 400, 457, 500, 536, 537, 539, 457, 500, 686, 715, 765,
766, 857, 927, 964, 971, 972, 987, 1009, 1010, 1021, 2508, 2509, 2516, 2518, 2536, 2568, 2583, 2585,
3811, 3940, 4130, 4192, 4236, 4512, 4841, 5353, 5532, 5854, 106, 107, 195, 380, 930, 931, 932, 3845,
3846, 3863, 3873, 4141, 4142, 4343, 4344, 4347, 211, 212, 277, 631]
cont = {'theme_search_form': ThemeSearch(), 'expo_catalog': Exposition.catalog, cont = {'theme_search_form': ThemeSearch(), 'expo_catalog': Exposition.catalog,
'book_aid': settings.BOOKING_AID, 'blogs': Article.objects.main_page_blogs(), 'book_aid': settings.BOOKING_AID, 'blogs': Article.objects.main_page_blogs(),
'news_list': Article.objects.main_page_news(), 'sng_countries': settings.SNG_COUNTRIES, 'news_list': Article.objects.main_page_news(), 'sng_countries': settings.SNG_COUNTRIES,
'banner_themes': banners_themes, 'banner_tags': banner_tags, 'seo_text': add_seo(request) 'seo_text': add_seo(request), 'announce_subscribe': SubsribeAssideForm()
} }
user = request.user user = request.user

@ -11,6 +11,47 @@
$('#id_theme').select2({width: "element"}); $('#id_theme').select2({width: "element"});
$('#id_country').select2({width: "element"}); $('#id_country').select2({width: "element"});
$('#id_area').select2({width:'element'}); $('#id_area').select2({width:'element'});
$("#id_city").select2('destroy');
$('#id_city').select2({
placeholder: $(this).attr('города'),
multiple: true,
width: 'element',
ajax: {
url: "/city/get-city/",
dataType: "json",
quietMillis: 200,
data: function(term, page){
return {term: term,
page: page};
},
results: function (data) {
var results = [];
$.each(data, function(index, item){
results.push({
id: item.id,
text: item.label
});
});
return {results: results};
}
},
initSelection : function(element, callback) {
var data = [];
$(element.val().split(",")).each(function(i) {
var item = this.split(':');
data.push({
id: item[0],
text: item[1]
});
});
callback(data);
}
});
}) })
</script> </script>

@ -55,28 +55,7 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
<!--
<div class="set-sect">
<header>{% trans 'настройка e-mail уведомлений' %}</header>
<div class="set-sect-body">
<form method="post" action="#">{% csrf_token %}
{% for choice in email_announcement_form.announcement.field.choices %}
<div class="mf-line">
<label class="check">
<input type="checkbox" name="sType" value="{{ choice.0 }}" />
{{ choice.1 }}
</label>
</div>
{% endfor %}
<div class="mf-buttons-line">
<button type="submit" class="icon-save">{% trans 'сохранить' %}</button>
</div>
</form>
</div>
</div>
-->
<!-- <!--
<div class="set-sect"> <div class="set-sect">
<header>{% trans 'социализация и sharing' %}</header> <header>{% trans 'социализация и sharing' %}</header>
@ -134,550 +113,87 @@
</div> </div>
--> -->
<div class="set-sect subscribe"> <div class="set-sect subscribe">
<header>{% trans 'настройка подписки' %}</header> <header>{% trans 'настройка подписки' %}</header>
<div class="set-sect-body"> <div class="set-sect-body">
<form action="#"> <form action="#">
<ul class="tabs clearfix"> <ul class="tabs clearfix">
<li class="active"><a class="icon-big-email" href="#">{% trans 'по e-mail' %}</a></li> <li class="active"><a class="icon-big-email" href="#">{% trans 'по e-mail' %}</a></li>
<li><a class="icon-big-rss" href="#">{% trans 'через RSS' %}</a></li> </ul>
<li><a class="icon-big-twitter" href="#">{% trans 'на twitter' %}</a></li> <ul class="tabs-content">
<li><a class="icon-big-ical" href="#">{% trans 'в iCal' %}</a></li>
</ul> <li class="active">
<ul class="tabs-content">
<div class="mf-announces clearfix">
<li class="active"> <div class="mf-subj-checks-title">
<label class="check">
<div class="mf-announces clearfix"> <input type="checkbox" class="annoncesFlag" name="annoncesFlag" />
<div class="mf-subj-checks-title"> Получать анонсы</label>
<label class="check"> </div>
<input type="checkbox" class="annoncesFlag" name="annoncesFlag" />
Получать анонсы</label> <div class="mf-announces-body">
</div>
<div class="mf-announces-body"> <div class="mf-line mail">
<div class="mf-line subj-checks"> <div class="mf-field">{{ subscribe.email }}</div>
<div class="mf-msg"></div>
<label class="check"><input type="checkbox" name="sType" value="exhb" />выставок</label> </div>
<label class="check"><input type="checkbox" name="sType" value="smnr" />семинаров</label> <div class="mf-line country">
<div class="mf-field">
<label class="check"><input type="checkbox" name="sType" value="conf" />конференций</label> {{ subscribe.country }}
</div>
<label class="check"><input type="checkbox" name="sType" value="webn" />вебинаров</label> <div class="mf-msg"></div>
</div>
</div>
<div class="mf-line city">
<!--<div class="mf-line mail"> <div class="mf-field">
<div class="mf-field"><input type="text" name="umail" placeholder="Введите e-mail" /></div> {{ subscribe.city }}
<div class="mf-msg"></div> </div>
</div>--> <div class="mf-msg"></div>
</div>
<div class="mf-line country">
<label>Cтрана</label> <div class="mf-line subj">
<div class="mf-field"> <div class="mf-field">
<div class="c-select-box select"> {{ subscribe.theme }}
<div class="csb-selected-items"></div> </div>
<div class="csb-menu-wrap"> <div class="mf-msg"></div>
<div class="scroll-container csb-menu"> </div>
<div class="scroll-content clearfix">
<ul> <div class="mf-line period">
<li><label><input type="checkbox" name="country" value="1" />Россия</label></li> <div class="mf-field">
<li><label><input type="checkbox" name="country" value="2" />Украина</label></li> {{ subscribe.periodic }}
</ul> </div>
</div> <div class="mf-msg"></div>
</div> </div>
</div> </div>
</div>
</div>
</div> <hr />
<div class="mf-msg"></div> <div class="mf-line">
</div> <label class="check">{{ subscribe.moscow_expo }}{{ subscribe.moscow_expo.label }}</label>
<label class="check">{{ subscribe.saint_expo }}{{ subscribe.saint_expo.label }}</label>
<div class="mf-line city"> <label class="check">{{ subscribe.europe_expo }}{{ subscribe.europe_expo.label }}</label>
<label>Город</label> </div>
<div class="mf-field"> <hr />
<div class="c-select-box select">
<div class="csb-selected-items"></div> <div class="mf-line">
<div class="csb-menu-wrap"> <label class="check">{{ subscribe.exponent_practicum }}«Практикум экспонента»<i>(учимся эффективно участвовать в выставках и грамотно пиарить свою компанию на событиях)</i></label>
<div class="scroll-container csb-menu"> </div>
<div class="scroll-content clearfix">
<ul> <div class="mf-line">
<li><label><input type="checkbox" name="city" value="1" />Москва</label></li> <label class="check">{{ subscribe.organiser_practicum }}«Практикум организатора событий» <i>(Создаем, наполняем и продвигаем собственные ивэнты)</i></label>
<li><label><input type="checkbox" name="city" value="2" />Санкт-Петербург</label></li> </div>
</ul>
</div> </li>
</div>
</div> </ul>
</div> <div class="mf-buttons-line">
</div> <button type="submit" class="icon-save">{% trans 'сохранить' %}</button>
<div class="mf-msg"></div> </div>
</div> </form>
</div>
<div class="mf-line subj"> </div>
<label>Тематика</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="subj" value="1" />Бизнес, инвестиции, финансы</label></li>
<li><label><input type="checkbox" name="subj" value="2" />Индустрия развлечений, шоу, СМИ</label></li>
<li><label><input type="checkbox" name="subj" value="3" />Косметика и парфюмерия</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line period">
<div class="mf-field">
<select name="period">
<option value="">Периодичность</option>
<option value="1">Еженедельно</option>
<option value="2">2 раза в месяц</option>
<option value="3">Ежемесячно</option>
</select>
</div>
<div class="mf-msg"></div>
</div>
</div>
</div>
<hr />
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Выставки Москвы</label>
<label class="check"><input type="checkbox" name="sType" value="exhb" />Выставки Санкт-Петербурга</label>
<label class="check"><input type="checkbox" name="sType" value="exhb" />Выставки Европы</label>
</div>
<hr />
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Новости и фотообзоры выставок</label>
</div>
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Рубрика «Экспо профессионал» <i>(аналитически материалы, практические кейсы для маркетологов)</i></label>
</div>
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Рубрика «Секреты успеха» <i>(материалы по личной эффективности)</i></label>
</div>
</li>
<li>
<div class="mf-announces clearfix">
<div class="mf-subj-checks-title">
<label class="check"><input type="checkbox" class="annoncesFlag" name="annoncesFlag" />Получать анонсы</label>
</div>
<div class="mf-announces-body">
<div class="mf-line subj-checks">
<label class="check"><input type="checkbox" name="sType" value="exhb" />выставок</label>
<label class="check"><input type="checkbox" name="sType" value="smnr" />семинаров</label>
<label class="check"><input type="checkbox" name="sType" value="conf" />конференций</label>
<label class="check"><input type="checkbox" name="sType" value="webn" />вебинаров</label>
</div>
<!--<div class="mf-line mail">
<div class="mf-field"><input type="text" name="umail" placeholder="Введите e-mail" /></div>
<div class="mf-msg"></div>
</div>-->
<div class="mf-line country">
<label>Cтрана</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="country" value="1" />Россия</label></li>
<li><label><input type="checkbox" name="country" value="2" />Украина</label></li>
<li><label><input type="checkbox" name="country" value="3" />Беларусь</label></li>
<li><label><input type="checkbox" name="country" value="4" />Бельгия</label></li>
<li><label><input type="checkbox" name="country" value="5" />Германия</label></li>
<li><label><input type="checkbox" name="country" value="6" />Франция</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line city">
<label>Город</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="city" value="1" />Москва</label></li>
<li><label><input type="checkbox" name="city" value="2" />Санкт-Петербург</label></li>
<li><label><input type="checkbox" name="city" value="3" />Владивосток</label></li>
<li><label><input type="checkbox" name="city" value="4" />Краснодар</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line subj">
<label>Тематика</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="subj" value="1" />Бизнес, инвестиции, финансы</label></li>
<li><label><input type="checkbox" name="subj" value="2" />Индустрия развлечений, шоу, СМИ</label></li>
<li><label><input type="checkbox" name="subj" value="3" />Косметика и парфюмерия</label></li>
<li><label><input type="checkbox" name="subj" value="4" />Маркетинг, реклама, PR</label></li>
<li><label><input type="checkbox" name="subj" value="5" />Мебель, интерьер, декор</label></li>
<li><label><input type="checkbox" name="subj" value="6" />Наука и инновации</label></li>
<li><label><input type="checkbox" name="subj" value="7" />Анализ, измерение и контроль</label></li>
<li><label><input type="checkbox" name="subj" value="8" />Здравоохранение</label></li>
<li><label><input type="checkbox" name="subj" value="9" />Культура, искусство, церковь</label></li>
<li><label><input type="checkbox" name="subj" value="10" />Менеджмент, HR</label></li>
<li><label><input type="checkbox" name="subj" value="11" />Транспорт, склад, логистика</label></li>
<li><label><input type="checkbox" name="subj" value="12" />Экология, очистка, утилизация</label></li>
<li><label><input type="checkbox" name="subj" value="13" />Безопасность</label></li>
<li><label><input type="checkbox" name="subj" value="14" />Городское хозяйство</label></li>
<li><label><input type="checkbox" name="subj" value="15" />Гостиничное, ресторанное дело</label></li>
<li><label><input type="checkbox" name="subj" value="16" />Нефть, газ, горное дело</label></li>
<li><label><input type="checkbox" name="subj" value="17" />Строительство</label></li>
<li><label><input type="checkbox" name="subj" value="18" />Телекоммуникации</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line">
<div class="mf-field">
<select name="period">
<option value="">Периодичность</option>
<option value="1">Еженедельно</option>
<option value="2">2 раза в месяц</option>
<option value="3">Ежемесячно</option>
</select>
</div>
<div class="mf-msg"></div>
</div>
</div>
</div>
<hr />
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Выставки Москвы</label>
<label class="check"><input type="checkbox" name="sType" value="exhb" />Выставки Санкт-Петербурга</label>
<label class="check"><input type="checkbox" name="sType" value="exhb" />Выставки Европы</label>
</div>
<hr />
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Новости и фотообзоры выставок</label>
</div>
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Рубрика «Экспо профессионал» <i>(аналитически материалы, практические кейсы для маркетологов)</i></label>
</div>
<div class="mf-line">
<label class="check"><input type="checkbox" name="sType" value="exhb" />Рубрика «Секреты успеха» <i>(материалы по личной эффективности)</i></label>
</div>
</li>
<li>
<div class="mf-announces clearfix">
<div class="mf-subj-checks-title">
<label class="check"><input type="checkbox" class="annoncesFlag" name="annoncesFlag" />Получать анонсы</label>
</div>
<div class="mf-announces-body">
<div class="mf-line subj-checks">
<label class="check"><input type="checkbox" name="sType" value="exhb" />выставок</label>
<label class="check"><input type="checkbox" name="sType" value="smnr" />семинаров</label>
<label class="check"><input type="checkbox" name="sType" value="conf" />конференций</label>
<label class="check"><input type="checkbox" name="sType" value="webn" />вебинаров</label>
</div>
<!--<div class="mf-line mail">
<div class="mf-field"><input type="text" name="umail" placeholder="Введите e-mail" /></div>
<div class="mf-msg"></div>
</div>-->
<div class="mf-line country">
<label>Cтрана</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="country" value="1" />Россия</label></li>
<li><label><input type="checkbox" name="country" value="2" />Украина</label></li>
<li><label><input type="checkbox" name="country" value="3" />Беларусь</label></li>
<li><label><input type="checkbox" name="country" value="4" />Бельгия</label></li>
<li><label><input type="checkbox" name="country" value="5" />Германия</label></li>
<li><label><input type="checkbox" name="country" value="6" />Франция</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line city">
<label>Город</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="city" value="1" />Москва</label></li>
<li><label><input type="checkbox" name="city" value="2" />Санкт-Петербург</label></li>
<li><label><input type="checkbox" name="city" value="3" />Владивосток</label></li>
<li><label><input type="checkbox" name="city" value="4" />Краснодар</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line subj">
<label>Тематика</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="subj" value="1" />Бизнес, инвестиции, финансы</label></li>
<li><label><input type="checkbox" name="subj" value="2" />Индустрия развлечений, шоу, СМИ</label></li>
<li><label><input type="checkbox" name="subj" value="3" />Косметика и парфюмерия</label></li>
<li><label><input type="checkbox" name="subj" value="4" />Маркетинг, реклама, PR</label></li>
<li><label><input type="checkbox" name="subj" value="5" />Мебель, интерьер, декор</label></li>
<li><label><input type="checkbox" name="subj" value="6" />Наука и инновации</label></li>
<li><label><input type="checkbox" name="subj" value="7" />Анализ, измерение и контроль</label></li>
<li><label><input type="checkbox" name="subj" value="8" />Здравоохранение</label></li>
<li><label><input type="checkbox" name="subj" value="9" />Культура, искусство, церковь</label></li>
<li><label><input type="checkbox" name="subj" value="10" />Менеджмент, HR</label></li>
<li><label><input type="checkbox" name="subj" value="11" />Транспорт, склад, логистика</label></li>
<li><label><input type="checkbox" name="subj" value="12" />Экология, очистка, утилизация</label></li>
<li><label><input type="checkbox" name="subj" value="13" />Безопасность</label></li>
<li><label><input type="checkbox" name="subj" value="14" />Городское хозяйство</label></li>
<li><label><input type="checkbox" name="subj" value="15" />Гостиничное, ресторанное дело</label></li>
<li><label><input type="checkbox" name="subj" value="16" />Нефть, газ, горное дело</label></li>
<li><label><input type="checkbox" name="subj" value="17" />Строительство</label></li>
<li><label><input type="checkbox" name="subj" value="18" />Телекоммуникации</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line">
<div class="mf-field">
<select name="period">
<option value="">Периодичность</option>
<option value="1">Еженедельно</option>
<option value="2">2 раза в месяц</option>
<option value="3">Ежемесячно</option>
</select>
</div>
<div class="mf-msg"></div>
</div>
</div>
</div>
</li>
<li>
<div class="mf-announces clearfix">
<div class="mf-subj-checks-title">
<label class="check"><input type="checkbox" class="annoncesFlag" name="annoncesFlag" />Получать анонсы</label>
</div>
<div class="mf-announces-body">
<div class="mf-line subj-checks">
<label class="check"><input type="checkbox" name="sType" value="exhb" />выставок</label>
<label class="check"><input type="checkbox" name="sType" value="smnr" />семинаров</label>
<label class="check"><input type="checkbox" name="sType" value="conf" />конференций</label>
<label class="check"><input type="checkbox" name="sType" value="webn" />вебинаров</label>
</div>
<!--<div class="mf-line mail">
<div class="mf-field"><input type="text" name="umail" placeholder="Введите e-mail" /></div>
<div class="mf-msg"></div>
</div>-->
<div class="mf-line country">
<label>Cтрана</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="country" value="1" />Россия</label></li>
<li><label><input type="checkbox" name="country" value="2" />Украина</label></li>
<li><label><input type="checkbox" name="country" value="3" />Беларусь</label></li>
<li><label><input type="checkbox" name="country" value="4" />Бельгия</label></li>
<li><label><input type="checkbox" name="country" value="5" />Германия</label></li>
<li><label><input type="checkbox" name="country" value="6" />Франция</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line city">
<label>Город</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="city" value="1" />Москва</label></li>
<li><label><input type="checkbox" name="city" value="2" />Санкт-Петербург</label></li>
<li><label><input type="checkbox" name="city" value="3" />Владивосток</label></li>
<li><label><input type="checkbox" name="city" value="4" />Краснодар</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line subj">
<label>Тематика</label>
<div class="mf-field">
<div class="c-select-box select">
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
<li><label><input type="checkbox" name="subj" value="1" />Бизнес, инвестиции, финансы</label></li>
<li><label><input type="checkbox" name="subj" value="2" />Индустрия развлечений, шоу, СМИ</label></li>
<li><label><input type="checkbox" name="subj" value="3" />Косметика и парфюмерия</label></li>
<li><label><input type="checkbox" name="subj" value="4" />Маркетинг, реклама, PR</label></li>
<li><label><input type="checkbox" name="subj" value="5" />Мебель, интерьер, декор</label></li>
<li><label><input type="checkbox" name="subj" value="6" />Наука и инновации</label></li>
<li><label><input type="checkbox" name="subj" value="7" />Анализ, измерение и контроль</label></li>
<li><label><input type="checkbox" name="subj" value="8" />Здравоохранение</label></li>
<li><label><input type="checkbox" name="subj" value="9" />Культура, искусство, церковь</label></li>
<li><label><input type="checkbox" name="subj" value="10" />Менеджмент, HR</label></li>
<li><label><input type="checkbox" name="subj" value="11" />Транспорт, склад, логистика</label></li>
<li><label><input type="checkbox" name="subj" value="12" />Экология, очистка, утилизация</label></li>
<li><label><input type="checkbox" name="subj" value="13" />Безопасность</label></li>
<li><label><input type="checkbox" name="subj" value="14" />Городское хозяйство</label></li>
<li><label><input type="checkbox" name="subj" value="15" />Гостиничное, ресторанное дело</label></li>
<li><label><input type="checkbox" name="subj" value="16" />Нефть, газ, горное дело</label></li>
<li><label><input type="checkbox" name="subj" value="17" />Строительство</label></li>
<li><label><input type="checkbox" name="subj" value="18" />Телекоммуникации</label></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="mf-msg"></div>
</div>
<div class="mf-line">
<div class="mf-field">
<select name="period">
<option value="">Периодичность</option>
<option value="1">Еженедельно</option>
<option value="2">2 раза в месяц</option>
<option value="3">Ежемесячно</option>
</select>
</div>
<div class="mf-msg"></div>
</div>
</div>
</div>
</li>
</ul>
<div class="mf-buttons-line">
<button type="submit" class="icon-save">{% trans 'сохранить' %}</button>
</div>
</form>
</div>
</div>
{% endblock %} {% endblock %}

@ -93,3 +93,7 @@
</div> </div>
</section> </section>
{% endblock %} {% endblock %}
{% block popup %}
{% include 'client/popups/announces.html' %}
{% endblock %}

@ -1,9 +1,12 @@
{% load i18n %} {% load i18n %}
<div id="subscribe-sm" class="subscribe-sm"> <div id="subscribe-sm" class="subscribe-sm">
<header>{% trans 'получать анонсЫ' %}</header> <header><a href="#" style="text-decoration: none">{% trans 'получать анонсЫ' %}</a></header>
{% comment %}
<ul> <ul>
<li><a class="icon-big-email" href="#">{% trans 'по e-mail' %}</a></li> <li><a class="icon-big-email" href="#">{% trans 'по e-mail' %}</a></li>
</ul> </ul>
{% endcomment %}
</div> </div>
<hr>

@ -1,6 +0,0 @@
{% load static %}
<div class="abn">
{% if theme_for_filter.id in banner_themes or tag_for_filter.id in banner_tags %}
<a target="_blank" href="/redirect/redirect/24/"><img src="{% static 'client/img/partners/unnamed_2.gif' %}" alt="" /></a>
{% endif %}
</div>

@ -36,14 +36,8 @@
<li><a href="/about/">{% trans 'о нас' %}</a></li> <li><a href="/about/">{% trans 'о нас' %}</a></li>
<li><a href="/partners/">{% trans 'партнеры' %}</a></li> <li><a href="/partners/">{% trans 'партнеры' %}</a></li>
<li><a href="/advertising/">{% trans 'реклама' %}</a></li> <li><a href="/advertising/">{% trans 'реклама' %}</a></li>
{% comment %}
<!-- task EXPO-145-->
<li><a href="#">{% trans 'сервис' %}</a></li>
<li><a href="#">{% trans 'для партнеров' %}</a></li>
{% endcomment %}
<li><a href="/contacts/">{% trans 'контакты' %}</a></li> <li><a href="/contacts/">{% trans 'контакты' %}</a></li>
<li><a href="/newsletters/{% if themes %}?{% for th in themes %}theme={{ th }}&{% endfor %}{% endif %}">{% trans 'подписаться' %}</a></li>
</ul> </ul>
</nav> </nav>

@ -39,7 +39,7 @@
<table cellpadding="0" cellspacing="0" border="0" width="600" style="width: 600px; margin-bottom: 10px;"> <table cellpadding="0" cellspacing="0" border="0" width="600" style="width: 600px; margin-bottom: 10px;">
<tr> <tr>
<td style="padding: 20px 0 0;"><p style="display: block; padding: 25px 30px; text-decoration: none; background: #ff6600; color: #ffffff; font-size: 20px; line-height: 26px; margin-bottom: 0;" >Ваша регистрация на портале <a href="http://expomap.ru/" style="color: #ffffff;text-decoration: none;border-bottom: 1px dashed #ee3824;">Expomap</a></p></td> <td style="padding: 20px 0 0;"><p style="display: block; padding: 25px 30px; text-decoration: none; background: #ff6600; color: #ffffff; font-size: 20px; line-height: 26px; margin-bottom: 0;" >Ваша подписка на портале <a href="http://expomap.ru/" style="color: #ffffff;text-decoration: none;border-bottom: 1px dashed #ee3824;">Expomap</a></p></td>
</tr> </tr>
<tr> <tr>
<td style="padding: 10px 30px 15px; background: #faf9f7;"> <td style="padding: 10px 30px 15px; background: #faf9f7;">

@ -31,15 +31,15 @@
<div class="pr-header-box"> <div class="pr-header-box">
<a class="pr-phone" href="tel:+7 (499) 999-12-07">+7 (499) 999-12-07</a> <a class="pr-phone" href="tel:+7 (499) 999-12-07">+7 (499) 999-12-07</a>
<ul class="pr-social"> <ul class="pr-social">
<li><a href="#"><img src="{% static 'subscribe_lending/images/sm-icon-inst.png' %}" /></a></li> <li><a href="https://instagram.com/expomap/"><img src="{% static 'subscribe_lending/images/sm-icon-inst.png' %}" /></a></li>
<li><a href="#"><img src="{% static 'subscribe_lending/images/sm-icon-youtube.png' %}" /></a></li> <li><a href="https://www.youtube.com/user/expomaptv"><img src="{% static 'subscribe_lending/images/sm-icon-youtube.png' %}" /></a></li>
<li><a href="#"><img src="{% static 'subscribe_lending/images/sm-icon-fb.png' %}" /></a></li> <li><a href="https://www.facebook.com/Expomap"><img src="{% static 'subscribe_lending/images/sm-icon-fb.png' %}" /></a></li>
<li><a href="#"><img src="{% static 'subscribe_lending/images/sm-icon-lin.png' %}" /></a></li> <li><a href="http://www.linkedin.com/company/expomap-ru/"><img src="{% static 'subscribe_lending/images/sm-icon-lin.png' %}" /></a></li>
<li><a href="#"><img src="{% static 'subscribe_lending/images/sm-icon-vk.png' %}" /></a></li> <li><a href="http://vk.com/expomap"><img src="{% static 'subscribe_lending/images/sm-icon-vk.png' %}" /></a></li>
<li><a href="#"><img src="{% static 'subscribe_lending/images/sm-icon-twit.png' %}" /></a></li> <li><a href="https://twitter.com/expomap_ru"><img src="{% static 'subscribe_lending/images/sm-icon-twit.png' %}" /></a></li>
</ul> </ul>
</div> </div>
<strong class="pr-logo"><a href="#">Expomap</a></strong> <strong class="pr-logo"><a href="/">Expomap</a></strong>
<span class="pr-slogan">{% blocktrans %}П<span class="pr-search-icon"></span>исковик деловых событий{% endblocktrans %}</span> <span class="pr-slogan">{% blocktrans %}П<span class="pr-search-icon"></span>исковик деловых событий{% endblocktrans %}</span>
</div> </div>
</header> </header>
@ -120,7 +120,6 @@
</div> </div>
<div class="pr-title"> <div class="pr-title">
<p>{% trans 'Учимся эффективно участвовать в выставках и грамотно пиарить свою компанию на событиях.' %}</p> <p>{% trans 'Учимся эффективно участвовать в выставках и грамотно пиарить свою компанию на событиях.' %}</p>
<a href="#">{% trans 'Пример письма' %}</a>
</div> </div>
</li> </li>
<li> <li>
@ -130,7 +129,6 @@
</div> </div>
<div class="pr-title"> <div class="pr-title">
<p>{% trans 'Создаем, наполняем и продвигаем собственные ивэнты.' %}</p> <p>{% trans 'Создаем, наполняем и продвигаем собственные ивэнты.' %}</p>
<a href="#">{% trans 'Пример письма' %}</a>
</div> </div>
</li> </li>
</ul> </ul>

@ -0,0 +1,56 @@
<div id="pw-subscribe" class="popup-window pw-subscribe">
<header class="clearfix">
<div class="pw-title">Получать анонсы </div>
<ul class="tabs">
<li class="active"><a class="icon-big-email" href="#">по e-mail</a></li>
</ul>
</header>
<div class="pw-body clearfix">
<ul class="tabs-content">
<li class="active">
<form id="id_subscription_aside_form" class="pw-form simple-validate" action="/newsletters/subsribe/aside/" method="post">{% csrf_token %}
<div class="pwf-line mail">
<div class="pwf-field">{{ announce_subscribe.email }}</div>
<div class="pwf-msg"><a href="#">Пример рассылки</a></div>
</div>
<div class="pwf-line country">
<div class="pwf-field">
{{ announce_subscribe.country }}
</div>
<div class="pwf-msg"></div>
</div>
<div class="pwf-line city">
<div class="pwf-field">
{{ announce_subscribe.city }}
</div>
<div class="pwf-msg"></div>
</div>
<div class="pwf-line subj">
<div class="pwf-field">
{{ announce_subscribe.theme }}
</div>
<div class="mf-msg"></div>
</div>
<div class="pwf-line subj">
<div class="pwf-field">
{{ announce_subscribe.periodic }}
</div>
<div class="mf-msg"></div>
</div>
<div class="pwf-buttons-line">
<button type="submit" class="icon-check">подписаться</button>
</div>
</form>
</li>
</ul>
</div>
</div>

@ -166,13 +166,55 @@ if (EXPO.common){
} }
}; },
subscriptionInput = function (width) {
$('#id_subscription_country, #id_subscription_theme')
.select2({
placeholder: $(this).attr('placeholder'),
width: width
});
$('#id_subscription_city').select2({
placeholder: $(this).attr('placeholder'),
multiple: true,
width: width,
ajax: {
url: "/city/get-city/",
dataType: "json",
quietMillis: 200,
data: function(term, page){
return {term: term,
page: page};
},
results: function (data) {
var results = [];
$.each(data, function(index, item){
results.push({
id: item.id,
text: item.label
});
});
return {results: results};
}
},
initSelection : function(element, callback) {
var id= $(element).val();
var text = $(element).attr('data-init-text');
callback({id: id, text:text});
}
});
};
//dependences //dependences
that.forms = []; that.forms = [];
$(function () { $(function () {
/** /**
* registration and login form validation * registration and login form validation
*/ */
subscriptionInput('100%');
$('form.validate').each(function () { $('form.validate').each(function () {
that.forms.push(new Validation(this)); that.forms.push(new Validation(this));
}); });

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save