объединение подписок юзеров

remotes/origin/HEAD
Slava Kyrachevsky 9 years ago
parent f19e3e9db4
commit 2a4ff58abe
  1. 16
      apps/emencia/django/newsletter/forms.py
  2. 106
      apps/emencia/django/newsletter/views/expo_views.py
  3. 56
      static/mailing_settings/css/fonts.css
  4. 652
      static/mailing_settings/css/form.css
  5. 701
      static/mailing_settings/css/main.css
  6. 27
      static/subscribe_lending/css/all.css
  7. 52
      static/subscribe_lending/js/jquery.main.js
  8. 159
      templates/client/accounts/mailing_settings.html
  9. 148
      templates/client/includes/accounts/mailing_settings_form.html
  10. 159
      templates/client/newsletters/subcribe.html
  11. 1
      templates/client/popups/russia_cities.html

@ -228,22 +228,6 @@ class ContactForm(forms.ModelForm):
return email
class ContactSettingsForm(forms.ModelForm):
theme = forms.MultipleChoiceField(choices=[(str(item.id), item.name) for item in list(Theme.objects.language().all())],
widget=forms.CheckboxSelectMultiple(attrs={'class': 'pr-checkbox'}), required=False)
class Meta:
model = ContactSettings
fields = ('exponent_practicum', 'organiser_practicum', 'theme')
def clean_theme(self):
theme = self.cleaned_data.get('theme')
if theme:
return Theme.objects.filter(id__in=theme)
else:
return Theme.objects.none()
types_choice = EnumChoices(
ALL=(1, _(u'Все')),
USERS=(2, _(u'Пользователи')),

@ -1,18 +1,26 @@
# -*- coding: utf-8 -*-
import json
from django.core.urlresolvers import reverse_lazy
from django.views.generic import TemplateView, FormView
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import redirect
from emencia.django.newsletter.forms import ContactForm, ContactSettingsForm
from emencia.django.newsletter.models import Contact, ContactSettings, MailingList
from emencia.django.newsletter.forms import SubscribeAssideForm
from emencia.django.newsletter.forms import ContactForm
from emencia.django.newsletter.models import Contact, MailingList
from emencia.django.newsletter.forms import (
SubscribeAssideForm, MailingSettingsForm
)
from accounts.models import User
from accounts.views import GetUserMixin
from functions.custom_views import ContextMixin
from city.models import City
class SubscribeView(FormView):
class SubscribeView(GetUserMixin, ContextMixin, FormView):
form_class = ContactForm
template_name = 'client/newsletters/subcribe.html'
success_url = '/newsletters/activation/send/'
success_url = reverse_lazy('subscription_activation_send')
def get_form(self, form_class):
if self.request.POST:
@ -20,7 +28,8 @@ class SubscribeView(FormView):
if email:
try:
contact = Contact.objects.get(email=email)
return form_class(instance=contact, **self.get_form_kwargs())
return form_class(instance=contact,
**self.get_form_kwargs())
except Contact.DoesNotExist:
pass
@ -30,43 +39,9 @@ class SubscribeView(FormView):
def form_valid(self, form):
contact = form.save()
try:
setting = contact.contactsettings
except ContactSettings.DoesNotExist:
setting = None
if setting:
form2 = ContactSettingsForm(self.request.POST, instance=setting)
else:
form2 = ContactSettingsForm(self.request.POST)
if form2.is_valid():
contact_setting = form2.save(commit=False)
if not contact_setting.contact_id:
contact_setting.contact = contact
contact_setting.save()
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)
except Country.DoesNotExist:
pass
else:
contact_setting.contact_country = country
contact_setting.save()
"""
contact.send_activation()
return HttpResponseRedirect(self.success_url)
def get_context_data(self, **kwargs):
context = super(SubscribeView, self).get_context_data(**kwargs)
context['form2'] = ContactSettingsForm(initial=self.get_initial())
return context
def get_initial(self):
data = super(SubscribeView, self).get_initial()
if self.request.user.is_authenticated():
@ -78,11 +53,40 @@ class SubscribeView(FormView):
data['email'] = self.request.GET['email']
if self.request.GET.get('first_name'):
data['first_name'] = self.request.GET['first_name']
if self.request.GET.getlist('theme'):
theme = self.request.GET.getlist('theme')
data['theme'] = theme
return data
def get_context_data(self, **kwargs):
ctx = super(SubscribeView, self).get_context_data(**kwargs)
ctx['mailsettings_object'] = self.get_mailsettings_object()
ctx['mailsettings_form'] = MailingSettingsForm(
instance=self.get_user()
)
return ctx
def get_mailsettings_object(self):
"""
передаём контекст в шаблон по городам, странам, а так же выбранным
:return: instance of mail settings
"""
self.extra_ctx.update({
'r_cities': City.used.russia(),
})
instance = self.get_user()
if instance is not None:
self.extra_ctx.update({
'checked_f_countries': list(
instance.f_countries.values_list('pk', flat=True)),
'checked_r_cities': list(
instance.r_cities.values_list('pk', flat=True)),
'checked_tg': list(instance.tags.values_list('pk', flat=True)),
'checked_th': list(
instance.themes.values_list('pk', flat=True)),
'contact': instance,
})
if not instance.subscriber:
self.extra_ctx.update({'unsubscribed': True})
return instance
class ActivationView(TemplateView):
http_method_names = ['get']
@ -149,14 +153,6 @@ def popup_validate(request):
form = ContactForm(request.GET)
if form.is_valid():
contact = form.save()
form2 = ContactSettingsForm(request.GET)
if form2.is_valid():
contact_setting = form2.save(commit=False)
contact_setting.contact = contact
contact_setting.exponent_practicum, contact_setting.organiser_practicum = True, True
contact_setting.save()
form2.save_m2m()
contact.send_activation()
response['success'] = True
response['redirect'] = True
@ -173,14 +169,6 @@ def landing_partisipation_validate(request):
form = ContactForm(request.POST)
if form.is_valid():
contact = form.save()
form2 = ContactSettingsForm(request.POST)
if form2.is_valid():
contact_setting = form2.save(commit=False)
contact_setting.contact = contact
contact_setting.exponent_practicum = True
contact_setting.save()
form2.save_m2m()
contact.send_activation()
response['success'] = True
else:

@ -0,0 +1,56 @@
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-med-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-med-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-med-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-med-webfont.ttf) format('truetype'), url(../../client/fonts/pfdindisplaypro-med-webfont.svg#pf_dindisplay_promedium) format('svg');
font-weight: 500;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-thin-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-thin-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-thin-webfont.ttf) format('truetype'), url(../../client/fonts/pfdindisplaypro-thin-webfont.woff) format('woff');
font-weight: 100;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-light-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-light-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-light-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-light-webfont.ttf) format('truetype');
font-weight: 300;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-italic-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-italic-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-italic-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-italic-webfont.ttf) format('truetype');
font-weight: 400;
font-style: italic
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-bold-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-bold-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-bold-webfont.ttf) format('truetype'), url(../../client/fonts/pfdindisplaypro-bold-webfont.woff) format('woff');
font-weight: 700;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-reg-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-reg-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-reg-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-reg-webfont.ttf) format('truetype');
font-weight: 400;
font-style: normal
}
@font-face {
font-family: pt_sans;
src: url(../../client/fonts/pts75f-webfont.eot);
src: url(../../client/fonts/pts75f-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pts75f-webfont.woff) format('woff'), url(../../client/fonts/pts75f-webfont.ttf) format('truetype');
font-weight: 700;
font-style: normal
}
@font-face {
font-family: pt_sans;
src: url(../../client/fonts/pts55f-webfont.eot);
src: url(../../client/fonts/pts55f-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pts55f-webfont.woff) format('woff'), url(../../client/fonts/pts55f-webfont.ttf) format('truetype');
font-weight: 400;
font-style: normal
}

@ -0,0 +1,652 @@
.themes_block h2,
.subjects_block h2,
.period_block h2 {
font-size: 30px;
font-weight: 400;
text-align: center;
margin-bottom: 50px;
}
.themes_block,
.period_block{
background-color: #fbfbfb;
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
padding-top: 50px;
}
.themes_block{
padding-bottom: 55px;
}
.themes_block h3 {
margin-bottom: 30px;
}
.subjects_block{
padding: 50px 0;
}
.page_footer{
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
text-align: center;
line-height: 40px;
font-size: 16px;
color: #999;
}
.columns{
font-size: 0;
width: 1045px;
margin: 0 auto;
}
.columns .column{
display: inline-block;
}
.themes_block .column{
display: inline-block;
width: 50%;
vertical-align: top;
}
.geo_filters{
list-style: none;
background-color: #fff;
border: 1px solid #ebebeb;
border-radius: 3px;
padding: 30px;
font-size: 16px;
}
.geo_filters > li + li{
margin-top: 34px;
}
.geo_filters .modal_trigger{
font-size: 16px;
color: #333;
text-decoration: none;
display: inline-block;
border-bottom: 1px dashed #333;
margin-left: 40px;
}
.geo_filters .modal_trigger:hover{
border-bottom-color: transparent;
}
.geo_filters input{
display: none;
}
.geo_filters .moscow{
/*color: #49d026;*/
color: #ccc;
}
.geo_filters .moscow:hover,
.geo_filters input:checked + .moscow{
border-color: #49d026;
box-shadow: 0 0 0 2px #49d026;
cursor: pointer;
color: #49d026;
}
.geo_filters .rf{
/*color: #ff6600;*/
color: #ccc;
}
.geo_filters .rf:hover,
.geo_filters input:checked + .rf{
border-color: #ff6600;
box-shadow: 0 0 0 2px #ff6600;
cursor: pointer;
color: #ff6600;
}
.geo_filters .foreign{
/*color: #0099ff;*/
color: #ccc;
}
.geo_filters .foreign:hover,
.geo_filters input:checked + .foreign{
border-color: #0099ff;
box-shadow: 0 0 0 2px #0099ff;
cursor: pointer;
color: #0099ff;
}
.geo_filters input + .label{
display: inline-block;
width: 283px;
padding: 6px 15px;
border: 1px solid #ebebeb;
font-size: 20px;
border-radius: 3px;
}
.geo_filters input + .label + .geo_checkbox{
display: inline-block;
height: 24px;
vertical-align: middle;
margin-left: 20px;
position: relative;
}
.geo_filters input + .label + .geo_checkbox:before{
content: "";
display: inline-block;
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid #e0e0e0;
position: absolute;
top: 0;
left:0;
transition: border-color .3s;
}
.geo_filters input + .label + .geo_checkbox:after{
content: '';
display: block;
width: 23px;
height: 22px;
background: url(../images/checkbox.png);
position: absolute;
top: 1px;
left: 0;
opacity: 0;
transition: opacity .3s;
}
.geo_filters input:checked + .label + .geo_checkbox:before{
border-color: #FF6600;
transition: border-color .3s;
}
.geo_filters input:checked + .label + .geo_checkbox:after{
opacity: 1;
transition: opacity .3s;
}
.geo_filters .selected{
padding-top: 20px;
width: 285px;
}
.subjects_block .column{
vertical-align: top;
width: calc(100%/3);
font-size: 16px;
}
.subjects_block p{
color: #999999;
font-weight: 100;
padding: 0 40px;
font-size: 16px;
}
.subjects_block input,
.periodic input,
.mailing_day input{
display: none;
}
.subjects_block input + label,
.periodic input + .radio{
position: relative;
padding-left: 40px;
cursor: pointer;
font-size: 18px;
}
.subjects_block input + label:before,
.periodic input + .radio:before,
.mailing_day input + .radio:before{
content: "";
display: inline-block;
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid #e0e0e0;
position: absolute;
top: 0;
left:0;
transition: border-color .3s;
}
.subjects_block input + label:after,
.periodic input + .radio:after,
.mailing_day input + .radio:after{
content: '';
display: block;
width: 23px;
height: 22px;
background: url(../images/checkbox.png);
position: absolute;
top: 1px;
left: 0;
opacity: 0;
transition: opacity .3s;
}
.subjects_block input:checked + label:before,
.periodic input:checked + .radio:before,
.mailing_day input:checked + .radio:before{
border-color: #FF6600;
transition: border-color .3s;
}
.subjects_block input:checked + label:after,
.periodic input:checked + .radio:after,
.mailing_day input:checked + .radio:after{
opacity: 1;
transition: opacity .3s;
}
.periodic{
width: 270px;
border-right: 1px solid #ebebeb;
padding-bottom: 45px;
}
.periodic li{
margin-bottom: 17px;
list-style: none;
}
.mailing_day{
padding-left: 110px;
padding-top: 20px;
vertical-align: top;
}
.mailing_day label{
display: inline-block;
font-size: 25px;
font-weight: 300;
text-transform: uppercase;
width: 80px;
height: 80px;
background-color: #fff;
border-radius: 50%;
box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
-moz-box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
-webkit-box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
-o-box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
position: relative;
cursor: pointer;
}
.mailing_day label:hover .radio:before,
.periodic label:hover .radio:before,
.subjects_block label:hover:before {
border-color: #FF6600;
}
.mailing_day label + label{
margin-left: 40px;
}
.mailing_day input + .radio{
display: block;
text-align: center;
cursor: pointer;
line-height: 80px;
}
.mailing_day input + .radio:before{
background-color: #fff;
}
.mailing_day input + .radio:before,
.mailing_day input + .radio:after{
left: auto;
right: 0;
}
.button_block{
padding: 62px 0;
text-align: center;
}
.button_block button{
display: block;
width: 265px;
height: 46px;
margin: 0 auto 26px;
border: 0;
background-color: #ff6600;
border-radius: 3px;
transition: background-color .3s;
color: #fff;
font-size: 19px;
font-weight: 300;
text-transform: uppercase;
cursor: pointer;
}
.button_block button:hover{
background-color: #ff9900;
transition: background-color .3s;
}
.button_block a{
color: #999;
font-size: 16px;
}
.button_block a:hover{
text-decoration: none;
}
a.themes_trigger{
display: block;
width: 190px;
height: 35px;
line-height: 35px;
background-color: #FF6600;
border-radius: 3px;
font-size: 19px;
color: #fff;
text-decoration: none;
text-align: center;
font-weight: 300;
}
.selected{
list-style: none;
font-size: 16px;
color: #333333;
font-weight: 100;
}
.selected li{
display: inline-block;
vertical-align: top;
border: 1px solid #FF6600;
border-radius: 3px;
padding: 6px 8px 6px 15px;
line-height: 16px;
margin-bottom: 10px;
margin-right: 10px;
}
.selected li a{
text-decoration: none;
margin-left: 15px;
color: #FF6600;
font-size: 22px;
}
.popup-window{
padding: 35px 50px 30px;
width: 640px;
font-size: 15px;
}
.popup-window header{
padding-bottom: 20px;
font-size: 35px;
line-height: 35px;
color: #f60;
font-weight: 100;
}
.scroll-container{
max-height: 230px;
overflow-y: scroll;
}
.mCSB_scrollTools .mCSB_draggerRail {
width: 10px;
background: #dbdbdb;
border: 1px solid #ccc;
}
.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar {
width: 8px;
border: solid #dbdbdb;
border-width: 2px 1px;
}
.themes_wrapper{
position: relative;
border: 1px solid #bdbdbd;
outline: 0;
width: 100%;
padding: 3px;
font-family: dindisplay_pro,sans-serif;
font-size: 15px;
line-height: 19px;
border-radius: 3px;
box-shadow: inset 0 2px 2px -2px #aaa;
background-color: #fff;
}
.wait-ajax{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(191,191,191,.3) url('/static/client/img/ajax-loader.gif') no-repeat center;
display: none;
}
.modal_checkboxes{
list-style: none;
padding: 5px 10px;
}
.modal_checkboxes li + li{
margin-top: 4px;
}
.modal_checkboxes .hidden_checkbox{
display: none;
}
.modal_checkboxes .hidden_checkbox + .custom_checkbox{
display: inline-block;
vertical-align: middle;
width: 13px;
height: 13px;
line-height: 11px;
border-radius: 3px;
border: 1px solid #444;
}
.modal_checkboxes .hidden_checkbox:checked + .custom_checkbox{
border-color: #FF6600;
}
.modal_checkboxes .hidden_checkbox:checked + .custom_checkbox:before{
content: '∨';
font-size: 10px;
height: 11px;
display: block;
text-align: center;
color: #FF6600;
}
.modal_checkboxes .hidden{
display: none;
}
.modal_checkboxes .trigger{
padding: 0 0 0 14px;
color: #464646;
position: relative;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.modal_checkboxes .trigger:hover{
color: #FF6600;
}
.modal_checkboxes .trigger[data-sub="true"]:before{
content: "›";
color: #FF6600;
position: absolute;
left: 3px;
}
.modal_checkboxes .sub{
list-style: none;
margin-left: 1em;
margin-top: .5em;
}
.modal_checkboxes .label{
padding-left: 14px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.buttons_block{
padding-top: 25px;
}
.buttons_block button{
display: inline-block;
vertical-align: top;
height: 40px;
border: 1px solid #fff;
outline: 0;
color: #fff;
font-family: dindisplay_pro,Arial,sans-serif;
font-weight: 700;
font-size: 15px;
line-height: 41px;
text-transform: uppercase;
padding: 0 25px;
border-radius: 4px;
-moz-box-sizing: border-box;
box-sizing: border-box;
box-shadow: 0 1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(0,0,0,.2);
-webkit-filter: none;
filter: none;
}
.buttons_block .modal-approve{
background: #f60;
background: -webkit-gradient(linear,left top,left bottom,color-stop(0,#ff8000),color-stop(100%,#f60));
background: -webkit-linear-gradient(top,#ff8000 0,#f60 100%);
background: -o-linear-gradient(top,#ff8000 0,#f60 100%);
background: -webkit-linear-gradient(top,#ff8000 0,#f60 100%);
background: -o-linear-gradient(top,#ff8000 0,#f60 100%);
background: linear-gradient(to bottom,#ff8000 0,#f60 100%);
}
.buttons_block button:hover{
margin-top: -1px;
}
.modals{
display: none;
}
.resend_email_form fieldset{
border: 0;
}
.resend_email_form fieldset + fieldset{
margin-top: 30px;
}
.resend_email_form fieldset p + p{
margin-top: 10px;
}
.resend_email_form label{
font-size: 18px;
display: inline-block;
vertical-align: middle;
width: 180px;
}
.resend_email_form input{
display: inline-block;
vertical-align: middle;
width: 350px;
height: 34px;
border: 1px solid #ebebeb;
border-radius: 3px;
background-color: #fff;
padding: 15px;
}
.autocomplete_block{
position: relative;
margin-bottom: 5px;
}
.autocomplete_input{
display: block;
min-width: 100%;
border: 0;
border-bottom: 1px dotted #cdcdcd;
height: 35px;
padding: 0 15px;
font-size: 15px;
color: rgb(34, 34, 34);
font-weight: 300;
}
.autocomplete_themes_results{
list-style: none;
max-height: 230px;
overflow-y: auto;
background-color: #fff;
border: 1px solid #cdcdcd;
position: absolute;
top: calc(100% - 1px);
left: 0;
right: 0;
z-index: 1;
display: none;
}
.autocomplete_themes_results li{
padding: 2px 10px;
cursor: pointer;
color: #464646;
}
.autocomplete_themes_results li:hover{
color: #ff6600;
}
.autocomplete_themes_results span{
color: #ababab;
}
.popup-window .selected_themes{
display: none;
border-bottom: 1px dotted #cdcdcd;
margin-bottom: 5px;
padding-bottom: 5px;
}
.selected_themes.visible{
display: block;
}
.popup-window .selected_themes li {
margin-bottom: 3px;
margin-right: 3px;
padding: 3px 5px;
}
.popup-window .selected_themes li a{
margin-left: 5px;
}

@ -1,59 +1,4 @@
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-med-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-med-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-med-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-med-webfont.ttf) format('truetype'), url(../../client/fonts/pfdindisplaypro-med-webfont.svg#pf_dindisplay_promedium) format('svg');
font-weight: 500;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-thin-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-thin-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-thin-webfont.ttf) format('truetype'), url(../../client/fonts/pfdindisplaypro-thin-webfont.woff) format('woff');
font-weight: 100;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-light-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-light-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-light-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-light-webfont.ttf) format('truetype');
font-weight: 300;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-italic-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-italic-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-italic-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-italic-webfont.ttf) format('truetype');
font-weight: 400;
font-style: italic
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-bold-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-bold-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-bold-webfont.ttf) format('truetype'), url(../../client/fonts/pfdindisplaypro-bold-webfont.woff) format('woff');
font-weight: 700;
font-style: normal
}
@font-face {
font-family: dindisplay_pro;
src: url(../../client/fonts/pfdindisplaypro-reg-webfont.eot);
src: url(../../client/fonts/pfdindisplaypro-reg-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pfdindisplaypro-reg-webfont.woff) format('woff'), url(../../client/fonts/pfdindisplaypro-reg-webfont.ttf) format('truetype');
font-weight: 400;
font-style: normal
}
@font-face {
font-family: pt_sans;
src: url(../../client/fonts/pts75f-webfont.eot);
src: url(../../client/fonts/pts75f-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pts75f-webfont.woff) format('woff'), url(../../client/fonts/pts75f-webfont.ttf) format('truetype');
font-weight: 700;
font-style: normal
}
@font-face {
font-family: pt_sans;
src: url(../../client/fonts/pts55f-webfont.eot);
src: url(../../client/fonts/pts55f-webfont.eot?#iefix) format('embedded-opentype'), url(../../client/fonts/pts55f-webfont.woff) format('woff'), url(../../client/fonts/pts55f-webfont.ttf) format('truetype');
font-weight: 400;
font-style: normal
}
@import url(fonts.css);
*{
margin: 0;
@ -125,647 +70,3 @@ h3{
.page_header p span{
color: #FF6600;
}
.themes_block,
.period_block{
background-color: #fbfbfb;
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
padding-top: 50px;
}
.themes_block{
padding-bottom: 55px;
}
.themes_block h3 {
margin-bottom: 30px;
}
.subjects_block{
padding: 50px 0;
}
.page_footer{
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
text-align: center;
line-height: 40px;
font-size: 16px;
color: #999;
}
.columns{
font-size: 0;
width: 1045px;
margin: 0 auto;
}
.columns .column{
display: inline-block;
}
.themes_block .column{
display: inline-block;
width: 50%;
vertical-align: top;
}
.geo_filters{
list-style: none;
background-color: #fff;
border: 1px solid #ebebeb;
border-radius: 3px;
padding: 30px;
font-size: 16px;
}
.geo_filters > li + li{
margin-top: 34px;
}
.geo_filters .modal_trigger{
font-size: 16px;
color: #333;
text-decoration: none;
display: inline-block;
border-bottom: 1px dashed #333;
margin-left: 40px;
}
.geo_filters .modal_trigger:hover{
border-bottom-color: transparent;
}
.geo_filters input{
display: none;
}
.geo_filters .moscow{
/*color: #49d026;*/
color: #ccc;
}
.geo_filters .moscow:hover,
.geo_filters input:checked + .moscow{
border-color: #49d026;
box-shadow: 0 0 0 2px #49d026;
cursor: pointer;
color: #49d026;
}
.geo_filters .rf{
/*color: #ff6600;*/
color: #ccc;
}
.geo_filters .rf:hover,
.geo_filters input:checked + .rf{
border-color: #ff6600;
box-shadow: 0 0 0 2px #ff6600;
cursor: pointer;
color: #ff6600;
}
.geo_filters .foreign{
/*color: #0099ff;*/
color: #ccc;
}
.geo_filters .foreign:hover,
.geo_filters input:checked + .foreign{
border-color: #0099ff;
box-shadow: 0 0 0 2px #0099ff;
cursor: pointer;
color: #0099ff;
}
.geo_filters input + .label{
display: inline-block;
width: 283px;
padding: 6px 15px;
border: 1px solid #ebebeb;
font-size: 20px;
border-radius: 3px;
}
.geo_filters input + .label + .geo_checkbox{
display: inline-block;
height: 24px;
vertical-align: middle;
margin-left: 20px;
position: relative;
}
.geo_filters input + .label + .geo_checkbox:before{
content: "";
display: inline-block;
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid #e0e0e0;
position: absolute;
top: 0;
left:0;
transition: border-color .3s;
}
.geo_filters input + .label + .geo_checkbox:after{
content: '';
display: block;
width: 23px;
height: 22px;
background: url(../images/checkbox.png);
position: absolute;
top: 1px;
left: 0;
opacity: 0;
transition: opacity .3s;
}
.geo_filters input:checked + .label + .geo_checkbox:before{
border-color: #FF6600;
transition: border-color .3s;
}
.geo_filters input:checked + .label + .geo_checkbox:after{
opacity: 1;
transition: opacity .3s;
}
.geo_filters .selected{
padding-top: 20px;
width: 285px;
}
.subjects_block .column{
vertical-align: top;
width: calc(100%/3);
font-size: 16px;
}
.subjects_block p{
color: #999999;
font-weight: 100;
padding: 0 40px;
font-size: 16px;
}
.subjects_block input,
.periodic input,
.mailing_day input{
display: none;
}
.subjects_block input + label,
.periodic input + .radio{
position: relative;
padding-left: 40px;
cursor: pointer;
font-size: 18px;
}
.subjects_block input + label:before,
.periodic input + .radio:before,
.mailing_day input + .radio:before{
content: "";
display: inline-block;
width: 22px;
height: 22px;
border-radius: 50%;
border: 1px solid #e0e0e0;
position: absolute;
top: 0;
left:0;
transition: border-color .3s;
}
.subjects_block input + label:after,
.periodic input + .radio:after,
.mailing_day input + .radio:after{
content: '';
display: block;
width: 23px;
height: 22px;
background: url(../images/checkbox.png);
position: absolute;
top: 1px;
left: 0;
opacity: 0;
transition: opacity .3s;
}
.subjects_block input:checked + label:before,
.periodic input:checked + .radio:before,
.mailing_day input:checked + .radio:before{
border-color: #FF6600;
transition: border-color .3s;
}
.subjects_block input:checked + label:after,
.periodic input:checked + .radio:after,
.mailing_day input:checked + .radio:after{
opacity: 1;
transition: opacity .3s;
}
.periodic{
width: 270px;
border-right: 1px solid #ebebeb;
padding-bottom: 45px;
}
.periodic li{
margin-bottom: 17px;
list-style: none;
}
.mailing_day{
padding-left: 110px;
padding-top: 20px;
vertical-align: top;
}
.mailing_day label{
display: inline-block;
font-size: 25px;
font-weight: 300;
text-transform: uppercase;
width: 80px;
height: 80px;
background-color: #fff;
border-radius: 50%;
box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
-moz-box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
-webkit-box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
-o-box-shadow: 0 7px 32px rgba(25, 25, 25, 0.1);
position: relative;
cursor: pointer;
}
.mailing_day label:hover .radio:before,
.periodic label:hover .radio:before,
.subjects_block label:hover:before {
border-color: #FF6600;
}
.mailing_day label + label{
margin-left: 40px;
}
.mailing_day input + .radio{
display: block;
text-align: center;
cursor: pointer;
line-height: 80px;
}
.mailing_day input + .radio:before{
background-color: #fff;
}
.mailing_day input + .radio:before,
.mailing_day input + .radio:after{
left: auto;
right: 0;
}
.button_block{
padding: 62px 0;
text-align: center;
}
.button_block button{
display: block;
width: 265px;
height: 46px;
margin: 0 auto 26px;
border: 0;
background-color: #ff6600;
border-radius: 3px;
transition: background-color .3s;
color: #fff;
font-size: 19px;
font-weight: 300;
text-transform: uppercase;
cursor: pointer;
}
.button_block button:hover{
background-color: #ff9900;
transition: background-color .3s;
}
.button_block a{
color: #999;
font-size: 16px;
}
.button_block a:hover{
text-decoration: none;
}
.themes_trigger{
display: block;
width: 190px;
height: 35px;
line-height: 35px;
background-color: #FF6600;
border-radius: 3px;
font-size: 19px;
color: #fff;
text-decoration: none;
text-align: center;
font-weight: 300;
}
.selected{
list-style: none;
font-size: 16px;
color: #333333;
font-weight: 100;
}
.selected li{
display: inline-block;
vertical-align: top;
border: 1px solid #FF6600;
border-radius: 3px;
padding: 6px 8px 6px 15px;
line-height: 16px;
margin-bottom: 10px;
margin-right: 10px;
}
.selected li a{
text-decoration: none;
margin-left: 15px;
color: #FF6600;
font-size: 22px;
}
.popup-window{
padding: 35px 50px 30px;
width: 640px;
font-size: 15px;
}
.popup-window header{
padding-bottom: 20px;
font-size: 35px;
line-height: 35px;
color: #f60;
font-weight: 100;
}
.scroll-container{
max-height: 230px;
overflow-y: scroll;
}
.mCSB_scrollTools .mCSB_draggerRail {
width: 10px;
background: #dbdbdb;
border: 1px solid #ccc;
}
.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar {
width: 8px;
border: solid #dbdbdb;
border-width: 2px 1px;
}
.themes_wrapper{
position: relative;
border: 1px solid #bdbdbd;
outline: 0;
width: 100%;
padding: 3px;
font-family: dindisplay_pro,sans-serif;
font-size: 15px;
line-height: 19px;
border-radius: 3px;
box-shadow: inset 0 2px 2px -2px #aaa;
background-color: #fff;
}
.wait-ajax{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(191,191,191,.3) url('/static/client/img/ajax-loader.gif') no-repeat center;
display: none;
}
.modal_checkboxes{
list-style: none;
padding: 5px 10px;
}
.modal_checkboxes li + li{
margin-top: 4px;
}
.modal_checkboxes .hidden_checkbox{
display: none;
}
.modal_checkboxes .hidden_checkbox + .custom_checkbox{
display: inline-block;
vertical-align: middle;
width: 13px;
height: 13px;
line-height: 11px;
border-radius: 3px;
border: 1px solid #444;
}
.modal_checkboxes .hidden_checkbox:checked + .custom_checkbox{
border-color: #FF6600;
}
.modal_checkboxes .hidden_checkbox:checked + .custom_checkbox:before{
content: '∨';
font-size: 10px;
height: 11px;
display: block;
text-align: center;
color: #FF6600;
}
.modal_checkboxes .hidden{
display: none;
}
.modal_checkboxes .trigger{
padding: 0 0 0 14px;
color: #464646;
position: relative;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.modal_checkboxes .trigger:hover{
color: #FF6600;
}
.modal_checkboxes .trigger[data-sub="true"]:before{
content: "›";
color: #FF6600;
position: absolute;
left: 3px;
}
.modal_checkboxes .sub{
list-style: none;
margin-left: 1em;
margin-top: .5em;
}
.modal_checkboxes .label{
padding-left: 14px;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
.buttons_block{
padding-top: 25px;
}
.buttons_block button{
display: inline-block;
vertical-align: top;
height: 40px;
border: 1px solid #fff;
outline: 0;
color: #fff;
font-family: dindisplay_pro,Arial,sans-serif;
font-weight: 700;
font-size: 15px;
line-height: 41px;
text-transform: uppercase;
padding: 0 25px;
border-radius: 4px;
-moz-box-sizing: border-box;
box-sizing: border-box;
box-shadow: 0 1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(0,0,0,.2);
-webkit-filter: none;
filter: none;
}
.buttons_block .modal-approve{
background: #f60;
background: -webkit-gradient(linear,left top,left bottom,color-stop(0,#ff8000),color-stop(100%,#f60));
background: -webkit-linear-gradient(top,#ff8000 0,#f60 100%);
background: -o-linear-gradient(top,#ff8000 0,#f60 100%);
background: -webkit-linear-gradient(top,#ff8000 0,#f60 100%);
background: -o-linear-gradient(top,#ff8000 0,#f60 100%);
background: linear-gradient(to bottom,#ff8000 0,#f60 100%);
}
.buttons_block button:hover{
margin-top: -1px;
}
.modals{
display: none;
}
.resend_email_form fieldset{
border: 0;
}
.resend_email_form fieldset + fieldset{
margin-top: 30px;
}
.resend_email_form fieldset p + p{
margin-top: 10px;
}
.resend_email_form label{
font-size: 18px;
display: inline-block;
vertical-align: middle;
width: 180px;
}
.resend_email_form input{
display: inline-block;
vertical-align: middle;
width: 350px;
height: 34px;
border: 1px solid #ebebeb;
border-radius: 3px;
background-color: #fff;
padding: 15px;
}
.autocomplete_block{
position: relative;
margin-bottom: 5px;
}
.autocomplete_input{
display: block;
min-width: 100%;
border: 0;
border-bottom: 1px dotted #cdcdcd;
height: 35px;
padding: 0 15px;
font-size: 15px;
color: rgb(34, 34, 34);
font-weight: 300;
}
.autocomplete_themes_results{
list-style: none;
max-height: 230px;
overflow-y: auto;
background-color: #fff;
border: 1px solid #cdcdcd;
position: absolute;
top: calc(100% - 1px);
left: 0;
right: 0;
z-index: 1;
display: none;
}
.autocomplete_themes_results li{
padding: 2px 10px;
cursor: pointer;
color: #464646;
}
.autocomplete_themes_results li:hover{
color: #ff6600;
}
.autocomplete_themes_results span{
color: #ababab;
}
.popup-window .selected_themes{
display: none;
border-bottom: 1px dotted #cdcdcd;
margin-bottom: 5px;
padding-bottom: 5px;
}
.selected_themes.visible{
display: block;
}
.popup-window .selected_themes li {
margin-bottom: 3px;
margin-right: 3px;
padding: 3px 5px;
}
.popup-window .selected_themes li a{
margin-left: 5px;
}

@ -90,7 +90,11 @@ body.pr {
margin:0 auto;
padding:0 18px;
}
.pr-center:after{ display:block; clear:both; content:''; }
.pr-center:after{
display:block;
clear:both;
content:'';
}
#pr-header{
overflow:hidden;
min-height:98px;
@ -140,7 +144,9 @@ body.pr {
margin:0 0 5px;
}
.pr-social{
margin:0; padding:0; list-style:none;
margin:0;
padding:0;
list-style:none;
font-size: 0;
line-height:0;
}
@ -211,12 +217,14 @@ body.pr {
.pr-input:first-child{
margin:0;
}
.pr-input:after{ content:'';
.pr-input:after{
content:'';
position:absolute;
top:13px;
right:14px;
width:20px;
height:20px; }
height:20px;
}
.pr-input.pr-name:after{
background:url(../images/pr-icon02.png) no-repeat 50% 50%;
}
@ -307,7 +315,9 @@ body.pr {
color:#060606;
}
.pr-interesting-list{
margin:0; padding:0; list-style:none;
margin:0;
padding:0;
list-style:none;
font-size: 17px;
line-height:21px;
color:#010100;
@ -332,7 +342,9 @@ body.pr {
margin:0 0 38px;
}
.pr-interesting-col{
margin:0 0 0 8px; padding:0; list-style:none;
margin:0 0 0 8px;
padding:0;
list-style:none;
float:left;
width:285px;
}
@ -415,7 +427,8 @@ div.pr-radio.disabled + label{
float:left;
width:300px;
margin: 0 85px 0 0;
padding:0; list-style:none;
padding:0;
list-style:none;
}
.pr-subscription-list li{
margin:0 0 27px;

@ -1,28 +1,28 @@
$(document).ready(function(){
$('.pr-form input, .pr-form textarea').placeholder();
$('.pr-btn-open').click(function(){
_this = $(this);
$('.pr-interesting-box').find('.pr-interesting-col li').slideDown(200, function(){
_this.fadeOut(400);
});
return false;
});
$('.pr form input').iCheck({
checkboxClass: 'pr-check',
radioClass: 'pr-radio',
increaseArea: '20%' // optional
});
$('.pr-interesting-form .pr-checkbox:checkbox').on('ifToggled', function(){
$('.pr-interesting-list').html('');
$('.pr-interesting-form input:checkbox').each(function(){
if ($(this).is(':checked')){
$('.pr-interesting-list').append('<li data-id="'+$(this).attr('id')+'"><a class="pr-close" href="#">&nbsp;</a> '+$(this).parent().parent().find('label').text()+'</li>');
}
})
});
$('.pr-interesting-list').on('click', '.pr-close', function(){
var _id = $(this).parent().attr('data-id');
$('.pr-interesting-form input:checkbox#'+_id).iCheck('uncheck');
return false;
});
// $('.pr-form input, .pr-form textarea').placeholder();
// $('.pr-btn-open').click(function(){
// _this = $(this);
// $('.pr-interesting-box').find('.pr-interesting-col li').slideDown(200, function(){
// _this.fadeOut(400);
// });
// return false;
// });
// $('.pr form input').iCheck({
// checkboxClass: 'pr-check',
// radioClass: 'pr-radio',
// increaseArea: '20%' // optional
// });
// $('.pr-interesting-form .pr-checkbox:checkbox').on('ifToggled', function(){
// $('.pr-interesting-list').html('');
// $('.pr-interesting-form input:checkbox').each(function(){
// if ($(this).is(':checked')){
// $('.pr-interesting-list').append('<li data-id="'+$(this).attr('id')+'"><a class="pr-close" href="#">&nbsp;</a> '+$(this).parent().parent().find('label').text()+'</li>');
// }
// })
// });
// $('.pr-interesting-list').on('click', '.pr-close', function(){
// var _id = $(this).parent().attr('data-id');
// $('.pr-interesting-form input:checkbox#'+_id).iCheck('uncheck');
// return false;
// });
});

@ -10,6 +10,8 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{% static 'mailing_settings/css/main.css' %}">
<link rel="stylesheet" href="{% static 'mailing_settings/css/form.css' %}">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" defer></script>
</head>
@ -25,162 +27,7 @@
</div>
</header>
<form action="." method="post" id="mailing_settings_form">
{% csrf_token %}
<div class="themes_block">
<div class="container">
<h2>{% trans 'Какие события включать в ваше письмо?' %}</h2>
<div class="columns">
<div class="column">
<h3>{% trans 'Ваши темы:' %}</h3>
{% comment %} {{ form.th.label_tag }}
{{ form.th }}
<ul id="selected_themes" class="selected selected_themes"></ul>
{# <ul id="selected_tags" class="selected"></ul>#}
<a href="#search-modal" class="modal_trigger themes_trigger">{% trans 'Уточнить темы' %}</a>
{# <h3>{% trans 'Теги' %}</h3> #}
<!--{{ form.tg.label_tag }}-->
{{ form.tg }}{% endcomment %}
<ul id="selected_themes" class="selected selected_themes">
{% for theme in object.themes.all %}
<li data-id="{{ theme.pk }}" data-type="th" class="theme_{{ theme.pk }}">
<input type="hidden" name="th" value="{{ theme.pk }}">
{{ theme }}
<a href="#">&times;</a>
</li>
{% endfor %}
{% for tag in object.tags.all %}
<li data-id="{{ tag.pk }}" data-type="tg" data-parent="{{ tag.theme.pk }}" class="tag_{{ tag.pk }}">
<input type="hidden" name="tg" value="{{ tag.pk }}">
{{ tag }}
<a href="#">&times;</a>
</li>
{% endfor %}
</ul>
<a href="#search-modal" class="modal_trigger themes_trigger">{% trans 'Уточнить темы' %}</a>
</div>
<div class="column">
<h3>{% trans 'Ваши гео-фильтры:' %}</h3>
<ul class="geo_filters">
<li>
<label>
{{ form.moscow }}
<span class="label moscow">
<i class="fa fa-map-marker"></i>
{{ form.moscow.label }}
</span>
<span class="geo_checkbox"></span>
</label>
</li>
<li>
<label>
{{ form.russia }}
<span class="label rf">
<i class="fa fa-map-marker"></i>
{{ form.russia.label }}
</span>
<span class="geo_checkbox"></span>
</label>
<a href="#cities-modal" class="modal_trigger">{% trans 'Выбрать города' %}</a>
<ul id="selected_cities" class="selected"></ul>
{{ form.r_cities }}
</li>
<li>
<label>
{{ form.foreign }}
<span class="label foreign">
<i class="fa fa-map-marker"></i>
{{ form.foreign.label }}
</span>
<span class="geo_checkbox"></span>
</label>
<a href="#countries_modal" class="modal_trigger">{% trans 'Выбрать страны' %}</a>
<ul id="selected_areas" class="selected"></ul>
<ul id="selected_countries" class="selected"></ul>
{{ form.area }}
{{ form.co }}
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="subjects_block">
<div class="container">
<h2>{% trans 'Включать ли новости / обзоры / статьи в письмо?' %}</h2>
<div class="columns">
<div class="column">
{{ form.content_news }}
{{ form.content_news.label_tag }}
<p>{% trans "Получайте новости выставок и конференций по выбранным тематикам" %}</p>
</div>
<div class="column">
{{ form.content_overview }}
{{ form.content_overview.label_tag }}
<p>{% trans "Практические материалы, интервью, кейсы, которые помогут эффективно участвовать в выставках" %}</p>
</div>
<div class="column">
{{ form.content_articles }}
{{ form.content_articles.label_tag }}
<p>{% trans "Блог о том, как создавать и продвигать крутые event`ы" %}</p>
</div>
</div>
</div>
</div>
<div class="period_block">
<div class="container">
<h2>{% trans 'Регулярность получения писем' %}</h2>
<div class="columns">
<div class="column periodic">
<ul>
{% for field in form.periodic %}
<li>
<label>
{{ field.tag }}
<span class="radio">
{{ field.choice_label }}
</span>
</label>
</li>
{% endfor %}
</ul>
</div>
<div class="column mailing_day">
{% for field in form.periodic_day %}
<label>
{{ field.tag }}
<span class="radio">
{{ field.choice_label }}
</span>
</label>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="button_block">
<div class="container">
<button type="submit">{% trans "Сохранить" %}</button>
<a href="?unsibscribe=1">{% trans 'Не хочу быть в курсе событий (отписаться от всего)' %}</a>
</div>
</div>
</form>
{% include 'client/includes/accounts/mailing_settings_form.html' %}
<footer class="page_footer">&copy; Expomap {% now "Y" %}</footer>

@ -0,0 +1,148 @@
{% load i18n %}
<form action="." method="post" id="mailing_settings_form">
{% csrf_token %}
<div class="themes_block">
<div class="container">
<h2>{% trans 'Какие события включать в ваше письмо?' %}</h2>
<div class="columns">
<div class="column">
<h3>{% trans 'Ваши темы:' %}</h3>
<ul id="selected_themes" class="selected selected_themes">
{% for theme in object.themes.all %}
<li data-id="{{ theme.pk }}" data-type="th" class="theme_{{ theme.pk }}">
<input type="hidden" name="th" value="{{ theme.pk }}">
{{ theme }}
<a href="#">&times;</a>
</li>
{% endfor %}
{% for tag in object.tags.all %}
<li data-id="{{ tag.pk }}" data-type="tg" data-parent="{{ tag.theme.pk }}" class="tag_{{ tag.pk }}">
<input type="hidden" name="tg" value="{{ tag.pk }}">
{{ tag }}
<a href="#">&times;</a>
</li>
{% endfor %}
</ul>
<a href="#search-modal" class="modal_trigger themes_trigger">{% trans 'Уточнить темы' %}</a>
</div>
<div class="column">
<h3>{% trans 'Ваши гео-фильтры:' %}</h3>
<ul class="geo_filters">
<li>
<label>
{{ form.moscow }}
<span class="label moscow">
<i class="fa fa-map-marker"></i>
{{ form.moscow.label }}
</span>
<span class="geo_checkbox"></span>
</label>
</li>
<li>
<label>
{{ form.russia }}
<span class="label rf">
<i class="fa fa-map-marker"></i>
{{ form.russia.label }}
</span>
<span class="geo_checkbox"></span>
</label>
<a href="#cities-modal" class="modal_trigger">{% trans 'Выбрать города' %}</a>
<ul id="selected_cities" class="selected"></ul>
{{ form.r_cities }}
</li>
<li>
<label>
{{ form.foreign }}
<span class="label foreign">
<i class="fa fa-map-marker"></i>
{{ form.foreign.label }}
</span>
<span class="geo_checkbox"></span>
</label>
<a href="#countries_modal" class="modal_trigger">{% trans 'Выбрать страны' %}</a>
<ul id="selected_areas" class="selected"></ul>
<ul id="selected_countries" class="selected"></ul>
{{ form.area }}
{{ form.co }}
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="subjects_block">
<div class="container">
<h2>{% trans 'Включать ли новости / обзоры / статьи в письмо?' %}</h2>
<div class="columns">
<div class="column">
{{ form.content_news }}
{{ form.content_news.label_tag }}
<p>{% trans "Получайте новости выставок и конференций по выбранным тематикам" %}</p>
</div>
<div class="column">
{{ form.content_overview }}
{{ form.content_overview.label_tag }}
<p>{% trans "Практические материалы, интервью, кейсы, которые помогут эффективно участвовать в выставках" %}</p>
</div>
<div class="column">
{{ form.content_articles }}
{{ form.content_articles.label_tag }}
<p>{% trans "Блог о том, как создавать и продвигать крутые event`ы" %}</p>
</div>
</div>
</div>
</div>
<div class="period_block">
<div class="container">
<h2>{% trans 'Регулярность получения писем' %}</h2>
<div class="columns">
<div class="column periodic">
<ul>
{% for field in form.periodic %}
<li>
<label>
{{ field.tag }}
<span class="radio">
{{ field.choice_label }}
</span>
</label>
</li>
{% endfor %}
</ul>
</div>
<div class="column mailing_day">
{% for field in form.periodic_day %}
<label>
{{ field.tag }}
<span class="radio">
{{ field.choice_label }}
</span>
</label>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="button_block">
<div class="container">
<button type="submit">{% trans "Сохранить" %}</button>
<a href="{% url 'accounts-mailing_settings' %}?unsibscribe=1">{% trans 'Не хочу быть в курсе событий (отписаться от всего)' %}</a>
</div>
</div>
</form>

@ -1,5 +1,4 @@
{% load static %}
{% load i18n %}
{% load static i18n %}{% spaceless %}
<!DOCTYPE html>
<html>
<head>
@ -8,10 +7,22 @@
<meta name="format-detection" content="telephone=no"/>
<title>Expomap</title>
<link rel="stylesheet" href="{% static 'subscribe_lending/css/all.css' %}" type="text/css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{% static 'mailing_settings/css/fonts.css' %}">
<link rel="stylesheet" href="{% static 'mailing_settings/css/form.css' %}">
<script type="text/javascript" src="{% static 'subscribe_lending/js/jquery-1.10.2.min.js' %}"></script>
<script type="text/javascript" src="{% static 'subscribe_lending/js/jquery.placeholder.js' %}"></script>
<script type="text/javascript" src="{% static 'subscribe_lending/js/icheck.min.js' %}"></script>
{# <script type="text/javascript" src="{% static 'subscribe_lending/js/icheck.min.js' %}"></script>#}
<script type="text/javascript" src="{% static 'subscribe_lending/js/jquery.main.js' %}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.4/jquery.fancybox.pack.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.3.0/mustache.min.js"></script>
<script src="{% static 'mailing_settings/js/main.js' %}"></script>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link href="favicon.ico" rel="shortcut icon">
<link href="favicon.ico" rel="icon">
@ -22,9 +33,20 @@
}
</style>
</head>
<body class="pr">
<div id="pr-wrapper">
<body>
<div id="pr-wrapper" class="pr">
{% if user.is_authenticated %}
<header class="page_header">
<div class="container">
<div class="logo_block">
<a href="/"><img src="{% static 'mailing_settings/images/logo.png' %}" alt="Expomap"></a>
<a href="/" class="back_to_site">expomap.ru <span>&#8250;</span></a>
</div>
<h1>{% trans 'Настройте рассылку от Expomap' %}</h1>
<p>{% trans 'для' %} <span>{{ contact.email }}</span></p>
</div>
</header>
{% else %}
<header id="pr-header">
<div class="pr-center">
<div class="pr-header-box">
@ -42,6 +64,9 @@
<span class="pr-slogan">{% blocktrans %}П<span class="pr-search-icon"></span>исковик деловых событий{% endblocktrans %}</span>
</div>
</header>
{% endif %}
<section id="pr-promo">
<div class="pr-center">
<h1>{% trans 'Анонсы выставок' %} <br />{% trans 'и конференций на ваш e-mail' %}</h1>
@ -60,119 +85,23 @@
</form>
</div>
</section>
<section id="pr-content">
<div class="pr-center">
<form id="form2" action="#" class="pr-interesting-form">
<fieldset>
<div class="pr-interesting">
<h3>{% trans 'Выберите то, что вам интересно' %}</h3>
<h4>{% trans 'Ваши тематики:' %}</h4>
<ul class="pr-interesting-list">
{% for item in form2.theme.field.choices %}
{% if item.0 in form2.theme.value %}
<li data-id="id_theme_{{ item.0 }}">
<a class="pr-close" href="#">&nbsp;</a> {{ item.1 }}
</li>
{% endif %}
{% endfor %}
</ul>
</div>
<div class="pr-interesting-box">
<div class="pr-interesting-wrap">
{% with choices=form2.theme.field.choices %}
<ul class="pr-interesting-col">
{% for item in form2.theme.field.choices %}
{% if forloop.counter|divisibleby:2 %}
<li {% if forloop.counter > 18 %}style="display: none;" {% endif %}>
<input {% if item.0 in form2.theme.value %}checked="checked"{% endif %} name="theme" type="checkbox" class="pr-checkbox" id="id_theme_{{ item.0 }}" value="{{ item.0 }}"/>
<label for="id_theme_{{ item.0 }}">{{ item.1 }}</label>
</li>
{% endif %}
{% endfor %}
</ul>
<ul class="pr-interesting-col">
{% for item in form2.theme.field.choices %}
{% if not forloop.counter|divisibleby:2 %}
<li {% if forloop.counter > 18 %}style="display: none;" {% endif %}>
<input {% if item.0 in form2.theme.value %}checked="checked"{% endif %} name="theme" type="checkbox" class="pr-checkbox" id="id_theme_{{ item.0 }}" value="{{ item.0 }}" />
<label for="id_theme_{{ item.0 }}">{{ item.1 }}</label>
</li>
{% endif %}
{% endfor %}
</ul>
{% endwith %}
</div>
<a class="pr-btn-open" href="#"><span>{% trans 'Открыть весь список' %}</span></a>
</div>
</fieldset>
</form>
<form id="form3" action="#" class="pr-subscription" method="post"> {% csrf_token %}
<fieldset>
<h3>{% trans 'Подписка на бесплатные учебные и практические материалы' %}</h3>
<div class="pr-subscription-box">
<ul class="pr-subscription-list">
<li>
<div class="pr-subscription-row">
{{ form2.exponent_practicum }}
<label for="{{ form2.exponent_practicum.id_for_label }}">«{{ form2.exponent_practicum.label }}»</label>
</div>
<div class="pr-title">
<p>{% trans 'Учимся эффективно участвовать в выставках и грамотно пиарить свою компанию на событиях.' %}</p>
</div>
</li>
<li>
<div class="pr-subscription-row">
{{ form2.organiser_practicum }}
<label for="{{ form2.organiser_practicum.id_for_label }}">«{{ form2.organiser_practicum.label }}»</label>
</div>
<div class="pr-title">
<p>{% trans 'Создаем, наполняем и продвигаем собственные ивэнты.' %}</p>
{% include 'client/includes/accounts/mailing_settings_form.html' with object=mailsettings_object form=mailsettings_form %}
</div>
</li>
</ul>
<div class="pr-subscription-col">
<button>{% trans 'ПОДПИСАТЬСЯ' %}</button>
<strong>{% trans 'Нажимая «Подписаться», вы соглашаетесь получать' %} <br /> {% trans 'материалы компании Expomap на свой электронный адрес' %}</strong>
<a href="{% url 'termsofuse' %}" style="color:#a2a2a2;">{% trans "Пользовательское соглашение" %}</a>
<div class="modals">
<div id="search-modal">
{% include 'client/popups/new_themes.html' %}
</div>
<div id="cities-modal">
{% include 'client/popups/russia_cities.html' %}
</div>
</fieldset>
</form>
<div id="countries_modal">
{% include 'client/popups/mailing_settings_countries.html' %}
</div>
</section>
</div>
</body>
<script>
$(function(){
$('#form1').on('submit', function(e){
if($('#form2').serialize() !== ""){
$('#form2 :input').not(':submit').clone().hide().appendTo(this);
$('#form3 :input').not(':submit').clone().hide().appendTo(this);
return true;
}else{
e.preventDefault();
alert('{%trans "Выберите тематику!" %}');
}
});
$('#form3').on('submit', function(e){
if($('#form2').serialize() !== ""){
$('#form2 :input').not(':submit').clone().hide().appendTo(this);
$('#form1 :input').not(':submit').clone().hide().appendTo(this);
return true;
}else{
e.preventDefault();
alert('{%trans "Выберите тематику!" %}');
}
});
/*
$('button').on('click', function(e){
e.preventDefault();
sendData = $('#form1, #form2, #form3').serialize();
console.log(sendData);
});
*/
});
</script>
</html>
</html>{% endspaceless %}

@ -14,6 +14,7 @@
<div class="topics-list">
<ul class="modal_checkboxes">
{% for pk, name in r_cities %}
dfhdfhdghdfhdfhdg
<li class="level1">
<label>
<input type="checkbox" class="hidden_checkbox" name="r_cities" id="" value="{{ pk }}"/>

Loading…
Cancel
Save