1193: Лэндинг-Страница "Реклама"

remotes/origin/landing
Alexander Burdeiny 10 years ago
parent 06a23fd865
commit a363d935ee
  1. 13
      core/simple_index_view.py
  2. 45
      expobanner/admin.py
  3. 7
      expobanner/admin_urls.py
  4. 12
      functions/forms.py
  5. 5
      proj/urls.py
  6. 2
      service/urls.py
  7. 15
      settings/forms.py
  8. 50
      settings/models.py
  9. 48
      static/advertising_landing/css/reset.css
  10. 875
      static/advertising_landing/css/style.css
  11. BIN
      static/advertising_landing/fonts/pfdindisplayproblackit.eot
  12. 5004
      static/advertising_landing/fonts/pfdindisplayproblackit.svg
  13. BIN
      static/advertising_landing/fonts/pfdindisplayproblackit.ttf
  14. BIN
      static/advertising_landing/fonts/pfdindisplayproblackit.woff
  15. BIN
      static/advertising_landing/fonts/pfdindisplayproblackit.woff2
  16. BIN
      static/advertising_landing/fonts/pfdindisplayprobold.eot
  17. 4889
      static/advertising_landing/fonts/pfdindisplayprobold.svg
  18. BIN
      static/advertising_landing/fonts/pfdindisplayprobold.ttf
  19. BIN
      static/advertising_landing/fonts/pfdindisplayprobold.woff
  20. BIN
      static/advertising_landing/fonts/pfdindisplayprobold.woff2
  21. BIN
      static/advertising_landing/fonts/pfdindisplayprolight.eot
  22. 4903
      static/advertising_landing/fonts/pfdindisplayprolight.svg
  23. BIN
      static/advertising_landing/fonts/pfdindisplayprolight.ttf
  24. BIN
      static/advertising_landing/fonts/pfdindisplayprolight.woff
  25. BIN
      static/advertising_landing/fonts/pfdindisplayprolight.woff2
  26. BIN
      static/advertising_landing/fonts/pfdindisplayproreg.eot
  27. 4874
      static/advertising_landing/fonts/pfdindisplayproreg.svg
  28. BIN
      static/advertising_landing/fonts/pfdindisplayproreg.ttf
  29. BIN
      static/advertising_landing/fonts/pfdindisplayproreg.woff
  30. BIN
      static/advertising_landing/fonts/pfdindisplayproreg.woff2
  31. BIN
      static/advertising_landing/images/bg/cite-bg.jpg
  32. BIN
      static/advertising_landing/images/bg/footer-bg.jpg
  33. BIN
      static/advertising_landing/images/bg/header-bg.jpg
  34. BIN
      static/advertising_landing/images/bg/instruments-bg.jpg
  35. BIN
      static/advertising_landing/images/clients/client-1.png
  36. BIN
      static/advertising_landing/images/clients/client-2.png
  37. BIN
      static/advertising_landing/images/clients/client-3.png
  38. BIN
      static/advertising_landing/images/footer-border.png
  39. BIN
      static/advertising_landing/images/icons.png
  40. BIN
      static/advertising_landing/images/logo.png
  41. BIN
      static/advertising_landing/images/steps-line.png
  42. 10
      static/advertising_landing/js/jquery.bxslider.min.js
  43. 185
      static/advertising_landing/js/jquery.placeholder.js
  44. 68
      static/advertising_landing/js/script.js
  45. 3
      templates/admin/country/country_list.html
  46. 38
      templates/admin/expobanner/comment_create.html
  47. 36
      templates/admin/expobanner/comment_list.html
  48. 3
      templates/admin/includes/admin_nav.html
  49. 2
      templates/client/includes/services.html
  50. 439
      templates/client/simple_pages/advertising_landing.html

@ -4,12 +4,23 @@ from django.shortcuts import HttpResponse
#from forms import CallbackForm
from service.order_forms import CallBackForm
from meta.views import MetadataMixin
from functions.cache_mixin import JitterCacheMixin
from settings.models import LandingComment
class AdvertisingView(MetadataMixin, TemplateView):
template_name = 'simple_pages/advertising.html'
class AdvertisingViewLanding(JitterCacheMixin, AdvertisingView):
template_name = 'simple_pages/advertising_landing.html'
def get_context_data(self, **kwargs):
context = super(AdvertisingViewLanding, self).get_context_data(**kwargs)
context['comments'] = LandingComment.objects.language().all()
return context
class AboutView(MetadataMixin, TemplateView):
template_name = 'simple_pages/about.html'
@ -24,4 +35,4 @@ def callback(request):
else:
response['errors'] = form.errors
return HttpResponse(json.dumps(response), content_type='application/json')
return HttpResponse(json.dumps(response), content_type='application/json')

@ -1,16 +1,17 @@
# -*- coding: utf-8 -*-
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView, DeleteView
from django.conf import settings
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.db.models import Sum
from django.core.urlresolvers import reverse_lazy
from expobanner.models import URL, BannerGroup, Banner, Paid, MainPage, Top
from expobanner.forms import UrlCreateForm, BannerCreateGroupForm, BannerCreateForm, BannerGroupUpdateForm,\
PaidCreateForm, PaidUpdateForm, TopCreateForm, BannerLinkCreateForm, MainCreateForm, MainConfCreateForm, MainUpdateForm, TopUpdateForm
from exposition.models import Exposition
from conference.models import Conference
from settings.models import Html
from settings.forms import HtmlForm
from settings.models import Html, LandingComment
from settings.forms import HtmlForm, CommentForm
class BannersControl(TemplateView):
template_name = 'admin/expobanner/banners_control.html'
@ -138,6 +139,41 @@ class BannerStat(DetailView):
return context
class CommentMixin(object):
form_class = CommentForm
model = LandingComment
template_name = 'admin/expobanner/comment_create.html'
success_url = reverse_lazy('expobaner-comment_list')
def get_context_data(self, *args, **kwargs):
ctx = super(CommentMixin, self).get_context_data(*args, **kwargs)
ctx['languages'] = settings.LANGUAGES
return ctx
def get_success_url(self):
return self.success_url
class CommentList(CommentMixin, ListView):
template_name = 'admin/expobanner/comment_list.html'
def get_queryset(self):
return self.model.objects.language()
class CommentCreate(CommentMixin, CreateView):
pass
class CommentUpdate(CommentMixin, UpdateView):
pass
class CommentDelete(CommentMixin, DeleteView):
def get(self, request, *args, **kwargs):
return self.post(request, *args, **kwargs)
class PaidList(ListView):
model = Exposition
template_name = 'admin/expobanner/paid_list.html'
@ -268,9 +304,6 @@ class MainConfList(ListView):
return context
from django.core.urlresolvers import reverse_lazy
class MainConfCreate(CreateView):
form_class = MainConfCreateForm
template_name = 'admin/expobanner/paid_create.html'

@ -43,4 +43,9 @@ urlpatterns = patterns('expobanner.admin',
url(r'^main/conf/turn/(?P<pk>\d+)/(?P<status>.*)/$', main_turn, name='expobanner-conf-main-turn'),
#url(r'^main/conf/(?P<pk>\d+)/stat/$', MainStat.as_view(), name='expobanner_stat_main'),
url(r'^main/block/(?P<pk>\d+)/$', MainPageBlock.as_view()),
)
#comments
url(r'^comments/new/$', CommentCreate.as_view(), name='expobaner-comment_add'),
url(r'^comments/(?P<pk>\d+)/delete/$', CommentDelete.as_view(), name='expobaner-comment_delete'),
url(r'^comments/(?P<pk>\d+)/$', CommentUpdate.as_view(), name='expobaner-comment_edit'),
url(r'^comments/$', CommentList.as_view(), name='expobaner-comment_list'),
)

@ -157,4 +157,14 @@ class ExpoTranslatableModelForm(forms.ModelForm):
translation = inst.translations.get(language_code=code)
for field in self._all_tr_field_names:
init_tr_data[field+"_%s" % code] = getattr(translation, field)
return init_tr_data
return init_tr_data
class ExpoTranslatableModelForm_(ExpoTranslatableModelForm):
@property
def data_by_lang(self):
res = {}
for lang in [code for code, _ in settings.LANGUAGES]:
res[lang] = {key[:-3]: self.cleaned_data[key] for key in self.cleaned_data
if key.endswith("_%s" % lang) and self.cleaned_data[key]}
return res

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from django.conf import settings
from django.conf.urls import patterns, include, url
from core.simple_index_view import AdvertisingView, AboutView
from core.simple_index_view import AdvertisingView, AboutView, AdvertisingViewLanding
from views import MainPageView
from django.contrib.sitemaps import views
import debug_toolbar
@ -69,7 +69,8 @@ urlpatterns += solid_i18n_patterns('',
url(r'^gallery/', include('photologue.client_urls')),
url(r'^', include('file.urls')),
url(r'^', include('django_messages.expomap_urls')),
url(r'^advertising/$', AdvertisingView.as_view(), {'meta_id':58}, name='expomap_advertising'),
# url(r'^advertising/$', AdvertisingView.as_view(), {'meta_id':58}, name='expomap_advertising'),
url(r'^advertising/$', AdvertisingViewLanding.as_view(), {'meta_id':94}, name='expomap_advertising_landing'),
url(r'^about/$', AboutView.as_view(), {'meta_id':56}, name='expomap_about'),
url(r'^partners/$', AboutView.as_view(), {'meta_id':57}, name='expomap_partners'),
url(r'^contacts/$', AboutView.as_view(), {'meta_id':59}, name='expomap_contacts'),

@ -6,7 +6,7 @@ from views import ServiceView, CallBackListView, VisitListView, TranslationListV
urlpatterns = patterns('',
url(r'service/thanks/$', Thanks.as_view(), name = "service_thanks"),
url(r'service/com_rek/(?P<catalog>.*)/(?P<event_url>.*)/$', 'service.views.advertise'),
url(r'service/com_rek/$', 'service.views.advertise'),
url(r'service/com_rek/$', 'service.views.advertise', name='advertise_post'),
url(r'service/(?P<url>.*)/$', ServiceView.as_view()),
)

@ -2,9 +2,9 @@
from django import forms
from ckeditor.widgets import CKEditorWidget
from theme.models import Theme
from .models import Html
from .models import Html, LandingComment
from article.models import Article
from functions.forms import ExpoTranslatableModelForm
from functions.forms import ExpoTranslatableModelForm, ExpoTranslatableModelForm_
class HtmlForm(ExpoTranslatableModelForm):
@ -15,6 +15,15 @@ class HtmlForm(ExpoTranslatableModelForm):
}
class CommentForm(ExpoTranslatableModelForm_):
class Meta:
model = LandingComment
@property
def verbose(self):
return u'Редактировать комментарий' if self.instance.pk else u'Создать комментарий'
class MainPageThemes(forms.Form):
exposition_themes = forms.ModelMultipleChoiceField(queryset=Theme.objects.filter(types=Theme.types.exposition),
required=False)
@ -62,4 +71,4 @@ class MainPageArticle(forms.Form):
articles = data['article']
Article.objects.blogs().exclude(id__in=[item.id for item in articles]).update(main_page=0)
articles.update(main_page=1)
articles.update(main_page=1)

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
from django.db import models
from django.utils.translation import ugettext_lazy as _, get_language
from sorl.thumbnail import ImageField
from hvad.models import TranslatableModel, TranslatedFields
from functions.custom_fields import EnumField
@ -11,4 +13,50 @@ class Html(TranslatableModel):
)
def __unicode__(self):
return self.name
return self.name
class LandingComment(TranslatableModel):
translations = TranslatedFields(
text=models.TextField(verbose_name=_(u'Комментарий')),
name=models.CharField(verbose_name=_(u'Имя Фамилия'), max_length=255),
position=models.CharField(verbose_name=_(u'Должность'), max_length=255),
)
logo = models.ImageField(verbose_name=_(u'Лого'), upload_to='landing/comments/', max_length=255)
def __unicode__(self):
return self.lazy_translation_getter('name', self.pk)
def __init__(self, *args, **kwargs):
super(LandingComment, self).__init__(*args, **kwargs)
self.cache_fields = ['name', 'position', 'text']
self.is_new = True
def save(self, *args, **kwargs):
return super(LandingComment, self).save(*args, **kwargs)
self.initial_language = get_language()[:2] or 'ru'
new_values = {field: getattr(self, field) for field in self.cache_fields}
langs = [code for code, _ in settings.LANGUAGES]
if self.is_new:
for lang in langs:
if lang not in self.get_available_languages():
self.translate(lang)
for key, value in new_values.items():
setattr(self, key, value)
self.save_translations(self)
else:
translations = {obj.language_code: obj for obj in list(self.translations.all())}
for lang in langs:
if lang is not self.initial_language:
tr = translations[lang]
for key, value in new_values.items():
#if u'%s' % getattr(tr, key) is u'%s' % self.var_cache[key]:
setattr(tr, key, value)
tr.save()
self.lazy_translation_getter(self.initial_language)
self.var_cache = {var: copy.copy(getattr(self, var)) for var in self.cache_fields}
self.is_new = False
return self

@ -0,0 +1,48 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

@ -0,0 +1,875 @@
@font-face {
font-family: 'pfdindisplaypro';
src: url('../fonts/pfdindisplayproblackit.eot');
src: url('../fonts/pfdindisplayproblackit.eot') format('embedded-opentype'),
url('../fonts/pfdindisplayproblackit.woff2') format('woff2'),
url('../fonts/pfdindisplayproblackit.woff') format('woff'),
url('../fonts/pfdindisplayproblackit.ttf') format('truetype'),
url('../fonts/pfdindisplayproblackit.svg#pfdindisplayproblackit') format('svg');
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: 'pfdindisplaypro';
src: url('../fonts/pfdindisplayprobold.eot');
src: url('../fonts/pfdindisplayprobold.eot') format('embedded-opentype'),
url('../fonts/pfdindisplayprobold.woff2') format('woff2'),
url('../fonts/pfdindisplayprobold.woff') format('woff'),
url('../fonts/pfdindisplayprobold.ttf') format('truetype'),
url('../fonts/pfdindisplayprobold.svg#pfdindisplayprobold') format('svg');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'pfdindisplaypro';
src: url('../fonts/pfdindisplayprolight.eot');
src: url('../fonts/pfdindisplayprolight.eot') format('embedded-opentype'),
url('../fonts/pfdindisplayprolight.woff2') format('woff2'),
url('../fonts/pfdindisplayprolight.woff') format('woff'),
url('../fonts/pfdindisplayprolight.ttf') format('truetype'),
url('../fonts/pfdindisplayprolight.svg#pfdindisplayprolight') format('svg');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'pfdindisplaypro';
src: url('../fonts/pfdindisplayproreg.eot');
src: url('../fonts/pfdindisplayproreg.eot') format('embedded-opentype'),
url('../fonts/pfdindisplayproreg.woff2') format('woff2'),
url('../fonts/pfdindisplayproreg.woff') format('woff'),
url('../fonts/pfdindisplayproreg.ttf') format('truetype'),
url('../fonts/pfdindisplayproreg.svg#pfdindisplayproreg') format('svg');
font-weight: normal;
font-style: normal;
}
/*common*/
body, input, button {
font-family: 'pfdindisplaypro', sans-serif;
font-weight: 300;
}
body {
color: #0b0301;
}
input, button {
border: none;
outline: none;
}
input, .box {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
}
.content {
width: 1140px;
padding: 0 15px;
margin: 0 auto;
}
.bg-full-width {
min-width: 1170px;
}
.spacer {
text-align: justify;
}
.spacer > * {
display: inline-block;
}
.spacer:after {
content: '';
display: inline-block;
width: 100%;
}
.clear-fix:after {
content: '';
display: block;
clear: both;
}
.pos-center {
position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
margin: auto;
}
.orange-btn {
width: 266px;
height: 46px;
line-height: 46px;
background: #ff6600;
font-size: 19px;
text-transform: uppercase;
color: #fcfcfb;
border-radius: 2px;
cursor: pointer;
}
.orange-btn:hover {
box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
-moz-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
-webkit-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
-o-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
}
.block-title {
font-size: 40px;
font-weight: normal;
text-transform: uppercase;
text-align: center;
}
.block-title_white {
color: #ffffff;
}
/*end common*/
/*icons*/
.icon {
display: inline-block;
background: url('../images/icons.png') no-repeat;
}
.icon-stat-1 {
width: 46px;
height: 48px;
background-position: 0 -7px;
}
.icon-stat-2 {
width: 45px;
height: 41px;
background-position: 0 -55px;
}
.icon-stat-3 {
width: 33px;
height: 33px;
background-position: 0 -96px;
}
.icon-stat-4 {
width: 45px;
height: 40px;
background-position: 0 -129px;
}
.icon-step-1 {
width: 36px;
height: 36px;
background-position: 0 -169px;
}
.icon-step-2 {
width: 49px;
height: 46px;
background-position: 0 -205px;
}
.icon-step-3 {
width: 33px;
height: 43px;
background-position: 0 -251px;
}
.icon-step-4 {
width: 45px;
height: 38px;
background-position: 0 -294px;
}
.icon-step-5 {
width: 38px;
height: 38px;
background-position: 0 -332px;
}
.icon-step-6 {
width: 41px;
height: 41px;
background-position: 0 -370px;
}
.icon-step-7 {
width: 46px;
height: 36px;
background-position: 0 -411px;
}
/*end icons*/
/*header*/
.header {
background: url('../images/bg/header-bg.jpg') no-repeat center top;
min-height: 678px;
color: #ffffff;
}
.logo {
background: url('../images/logo.png') no-repeat;
width: 204px;
height: 60px;
display: inline-block;
}
.phone {
float: right;
font-size: 30px;
padding-top: 13px;
}
.header-top {
padding-top: 24px;
}
.main-title {
margin-top: 93px;
font-size: 57px;
font-weight: bold;
line-height: 115%;
text-align: center;
}
.main-desc {
width: 980px;
margin: 25px auto 0;
text-align: center;
line-height: 140%;
font-size: 25px;
}
.header__btn {
display: block;
margin: 50px auto 0;
}
.header__btn:hover, .footer-block__btn:hover, .popup-form__btn:hover {
box-shadow: 0 8px 18px rgba(255, 132, 0, 0.18);
-moz-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.18);
-webkit-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.18);
-o-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.18);
}
/*end header*/
/*cite*/
.cite, .scroll-block {
background: url('../images/bg/cite-bg.jpg') no-repeat center top;
height: 68px;
text-align: center;
line-height: 68px;
font-size: 25px;
color: #ffffff;
}
.cite__text {
display: inline-block;
position: relative;
}
.cite__text:after {
content: '';
position: absolute;
top: 33px;
background: url('../images/icons.png') no-repeat;
width: 14px;
height: 7px;
right: -28px;
}
/*end cite*/
/*statistics*/
.statistics {
border-bottom: 1px solid #ebebeb;
}
.statistics-top, .statistics-bottom {
font-size: 0;
border-bottom: 1px solid #ebebeb;
}
.statistics-bottom {
background: #fbfbfb;
}
.statistic-item {
overflow: hidden;
text-align: center;
border-right: 1px solid #ebebeb;
}
.statistic-item_1 {
border-left: 1px solid #ebebeb;
width: 286px;
}
.statistic-item_2 {
width: 281px;
}
.statistic-item_3 {
width: 289px;
}
.statistic-item_4 {
width: 279px;
}
.statistic-item__icon-wrap {
width: 80px;
height: 80px;
border-radius: 8px;
background: #ffffff;
display: inline-block;
margin-top: 37px;
position: relative;
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);
}
.statistic-item__title {
width: 155px;
margin: 23px auto 29px;
text-transform: uppercase;
font-size: 20px;
font-weight: normal;
line-height: 120%;
}
.statistics-top .content,
.statistics-bottom .content {
display: table;
}
.statistic-item {
display: table-cell;
}
.statistic-item__desc {
font-size: 16px;
line-height: 135%;
margin-bottom: 24px;
}
.statistic-item__desc:last-child {
margin-bottom: 0;
}
.statistic-item__desc em {
font-weight: bold;
}
.statistics-bottom .statistic-item_1 {
padding: 29px 0;
}
.statistic-item__count {
font-size: 25px;
font-weight: normal;
position: relative;
top: 4px;
}
.statistic-item__count strong {
font-size: 40px;
display: block;
margin: -2px 0 -4px;
}
.statistic-item__count small {
color: #ff6600;
}
.statistic-item__type {
font-size: 16px;
margin-bottom: 20px;
}
.statistic-item__type:last-child {
margin-bottom: 0;
}
.statistics__info {
line-height: 40px;
text-align: right;
font-size: 16px;
font-weight: normal;
color: #ff6600;
}
/*end statistics*/
/*instruments*/
.instruments {
padding-top: 73px;
padding-bottom: 80px;
position: relative;
}
.instruments__bg {
position: absolute;
background: url('../images/bg/instruments-bg.jpg') no-repeat;
width: 706px;
height: 535px;
left: 15px;
bottom: 176px;
}
.instruments-list {
float: right;
width: 325px;
margin-top: 169px;
margin-bottom: 80px;
}
.instruments-list__item {
position: relative;
font-size: 20px;
font-weight: normal;
margin-bottom: 30px;
}
.instruments-list__item:after {
content: '';
position: absolute;
bottom: 7px;
left: -40px;
background: #ff6600;
width: 11px;
height: 2px;
}
.instruments-list__item:last-child {
margin-bottom: 0;
}
.instruments-btn, .steps__btn {
display: block;
clear: both;
margin: 0 auto;
width: 378px;
}
/*end instruments*/
/*steps*/
.steps {
background: #fbfbfb;
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
padding-top: 74px;
padding-bottom: 79px;
}
.steps-list {
padding-top: 68px;
padding-left: 15px;
position: relative;
}
.steps-list:after {
content: '';
background: url('../images/steps-line.png') no-repeat;
width: 1033px;
height: 248px;
left: 101px;
top: 73px;
position: absolute;
}
.step {
display: inline-block;
vertical-align: top;
width: 280px;
position: relative;
z-index: 1;
margin-bottom: 27px;
}
.step:nth-child(5) {
margin-left: 283px;
}
.step:nth-child(4),
.step:nth-child(7) {
width: 265px;
}
.step__icon-wrap {
display: block;
width: 80px;
height: 80px;
border-radius: 50%;
background: #ffffff;
position: relative;
}
.step__numb, .step__icon-wrap {
box-shadow: 0 19px 32px rgba(25, 25, 25, 0.1);
-moz-box-shadow: 0 19px 32px rgba(25, 25, 25, 0.1);
-webkit-box-shadow: 0 19px 32px rgba(25, 25, 25, 0.1);
-o-box-shadow: 0 19px 32px rgba(25, 25, 25, 0.1);
}
.step__numb {
text-align: center;
width: 30px;
height: 30px;
line-height: 30px;
font-size: 16px;
color: #fbfbfb;
font-weight: normal;
position: absolute;
background: #ff6600;
border-radius: 50%;
top: -5px;
right: -10px;
}
.step__title {
font-size: 18px;
color: #000000;
line-height: 130%;
font-weight: normal;
margin-top: 15px;
}
.step__desc {
margin-top: 8px;
font-size: 16px;
color: #999999;
line-height: 120%;
}
.steps__desc {
font-size: 25px;
color: #333333;
font-weight: bold;
text-align: center;
margin-top: 36px;
}
.steps__btn {
margin-top: 30px;
}
/*end steps*/
/*budget*/
.budget {
padding-top: 74px;
padding-bottom: 90px;
text-align: center;
}
.budget__desc {
margin-top: 27px;
font-size: 20px;
font-weight: normal;
line-height: 140%;
}
.budget-packs {
margin-top: 88px;
}
.budget-packs__title {
font-size: 30px;
text-transform: uppercase;
font-weight: bold;
color: #ff6600;
margin-top: 54px;
}
.budget-pack {
position: relative;
display: inline-block;
vertical-align: top;
}
.budget-pack__sum, .budget-pack-info {
position: relative;
z-index: 1;
}
.budget-pack-info {
position: relative;
cursor: default;
width: 44px;
margin: 0 auto;
}
.budget-pack-info__icon {
width: 44px;
height: 44px;
background: #ff6600;
border-radius: 50%;
font-size: 22px;
text-align: center;
color: #fcfcfb;
font-weight: 900;
font-style: italic;
line-height: 44px;
display: block;
}
.budget-pack-info:hover .budget-pack-info__icon {
box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
-moz-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
-webkit-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
-o-box-shadow: 0 8px 18px rgba(255, 132, 0, 0.48);
}
.budget-pack-info:hover .budget-pack-desc {
display: block;
}
.budget-pack-desc {
left: -16px;
top: 68px;
width: 550px;
text-align: left;
background: #ff6600;
font-size: 16px;
color: #ffffff;
line-height: 150%;
padding: 14px 22px;
position: absolute;
display: none;
}
.budget-pack_3 .budget-pack-desc {
left: auto;
right: -16px;
}
.budget-pack-desc:after {
content: '';
background: url('../images/icons.png') no-repeat 0 -819px;
width: 11px;
height: 8px;
position: absolute;
top: -8px;
left: 33px;
}
.budget-pack_3 .budget-pack-desc:after {
left: auto;
right: 33px;
}
.budget-pack__sum {
font-size: 37px;
font-weight: bold;
margin-bottom: 28px;
letter-spacing: -0.055em;
}
.budget-pack_2 {
margin: 0 88px;
}
.budget-pack:after {
content: '';
background: url('../images/icons.png') no-repeat 0 -447px;
position: absolute;
left: 0; right: 0;
margin: 0 auto;
}
.budget-pack_1:after {
width: 126px;
height: 114px;
top: -42px;
}
.budget-pack_2:after {
width: 212px;
height: 129px;
background-position: 0 -561px;
top: -51px;
}
.budget-pack_3:after {
width: 261px;
height: 129px;
background-position: 0 -690px;
top: -52px;
}
/*end budget*/
/*reviews*/
.reviews {
border-top: 1px solid #ebebeb;
border-bottom: 1px solid #ebebeb;
background: #fbfbfb;
padding-top: 76px;
padding-bottom: 76px;
}
.reviews__desc {
text-align: center;
font-size: 20px;
font-weight: normal;
color: #333333;
margin: 24px 0 73px;
}
.bx-viewport {
padding-bottom: 50px;
height: 344px !important;
}
.review {
margin-right: 20px;
display: inline-block;
vertical-align: top;
border: 5px solid #f5f5f5;
border-radius: 2px;
width: 363px;
background: #ffffff;
padding: 16px 20px 16px 18px;
}
.review:last-child {
margin-right: 0;
}
.review__text {
font-size: 16px;
color: #333333;
line-height: 150%;
margin-bottom: 20px;
}
.review__logo-wrap, .review-desc {
display: inline-block;
vertical-align: top;
}
.review__logo-wrap {
width: 70px;
height: 70px;
background: #f5f4f4;
border-radius: 2px;
position: relative;
margin-bottom: -40px;
box-shadow: 10px 19px 32px rgba(25, 25, 25, 0.1);
-moz-box-shadow: 10px 19px 32px rgba(25, 25, 25, 0.1);
-webkit-box-shadow: 10px 19px 32px rgba(25, 25, 25, 0.1);
-o-box-shadow: 10px 19px 32px rgba(25, 25, 25, 0.1);
}
.review-desc__name {
font-size: 20px;
color: #ff6600;
font-weight: normal;
padding-top: 4px;
}
.review-desc__position {
font-size: 14px;
color: #999999;
margin-top: 4px;
}
.review-desc {
padding-left: 18px;
}
.reviews-listing {
text-align: center;
margin-top: 16px;
}
.reviews-listing__item {
display: inline-block;
vertical-align: top;
width: 9px;
height: 9px;
border-radius: 50%;
background: #dadada;
border: 1px solid #c5c5c5;
margin-right: 13px;
}
.reviews-listing__item.active {
background: #ff6600;
border-color: #ff6600;
}
.reviews-listing__item:last-child {
margin-right: 0;
}
/*end reviews*/
/*footer*/
.footer {
background: url('../images/bg/footer-bg.jpg') no-repeat top center;
height: 523px;
}
.footer .block-title {
padding-top: 74px;
}
.footer-article {
text-align: center;
font-size: 25px;
margin-top: 17px;
color: #ffffff;
}
.footer-article__link {
color: #ff6600;
}
.footer-article__link:hover {
text-decoration: none;
}
.footer-block {
margin-top: 95px;
text-align: center;
font-weight: bold;
color: #ffffff;
position: relative;
}
.footer-block:after {
content: '';
position: absolute;
background: url('../images/footer-border.png') no-repeat;
width: 981px;
height: 125px;
left: 0; right: 0;
top: 19px;
margin: 0 auto;
}
.footer-block__title {
font-size: 37px;
letter-spacing: -0.03em;
text-transform: uppercase;
}
.footer-block__desc {
font-size: 30px;
margin-top: 14px;
}
.footer-block__btn {
width: 378px;
margin-top: 37px;
}
.footer-block > * {
position: relative;
z-index: 1;
}
.scroll-block {
height: 49px;
position: relative;
}
.scroll-top {
cursor: pointer;
background: url('../images/icons.png') no-repeat 0 -827px;
width: 21px;
height: 10px;
}
.scroll-top:hover {
background-position: 0 -837px;
}
/*end footer*/
/*popup*/
.overlay {
position: fixed;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: 9;
display: none;
background: rgba(255, 255, 255, 0.9);
}
.popup {
position: fixed;
top: 0; bottom: 0; left: 0; right: 0;
margin: auto;
z-index: 10;
width: 445px;
height: 501px;
text-align: center;
background: #13161a;
background: linear-gradient(to bottom, #13161a, #1d161d);
background: -ms-linear-gradient(to bottom, #13161a, #1d161d);
background: -webkit-linear-gradient(to bottom, #13161a, #1d161d);
background: -o-linear-gradient(to bottom, #13161a, #1d161d);
background: -moz-linear-gradient(to bottom, #13161a, #1d161d);
color: #ffffff;
display: none;
font-family: 'Open Sans', sans-serif;
}
.popup-thank {
height: 157px;
}
.popup-thank .popup__title {
padding-top: 44px;
}
.popup__close {
position: absolute;
cursor: pointer;
top: 13px;
right: 12px;
background: url('../images/icons.png') no-repeat 0 -847px;
width: 17px;
height: 18px;
}
.popup__title {
font-weight: bold;
padding-top: 37px;
font-size: 33px;
}
.popup__desc {
line-height: 135%;
margin-top: 10px;
font-size: 17px;
font-weight: 300;
}
.popup-form {
margin-top: 25px;
}
.popup-form__field {
width: 350px;
height: 43px;
padding-left: 18px;
background: #eaeaea;
border: 1px solid #dcdcdc;
font-size: 15px;
color: #666666;
font-family: 'Open Sans', sans-serif;
margin-bottom: 14px;
}
.popup-form__btn {
margin-top: 15px;
width: 350px;
}
/*end popup*/

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 549 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 527 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 538 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 526 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1,185 @@
/*! http://mths.be/placeholder v2.0.8 by @mathias */
;(function(window, document, $) {
// Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
var prototype = $.fn;
var valHooks = $.valHooks;
var propHooks = $.propHooks;
var hooks;
var placeholder;
if (isInputSupported && isTextareaSupported) {
placeholder = prototype.placeholder = function() {
return this;
};
placeholder.input = placeholder.textarea = true;
} else {
placeholder = prototype.placeholder = function() {
var $this = this;
$this
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
.not('.placeholder')
.bind({
'focus.placeholder': clearPlaceholder,
'blur.placeholder': setPlaceholder
})
.data('placeholder-enabled', true)
.trigger('blur.placeholder');
return $this;
};
placeholder.input = isInputSupported;
placeholder.textarea = isTextareaSupported;
hooks = {
'get': function(element) {
var $element = $(element);
var $passwordInput = $element.data('placeholder-password');
if ($passwordInput) {
return $passwordInput[0].value;
}
return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
},
'set': function(element, value) {
var $element = $(element);
var $passwordInput = $element.data('placeholder-password');
if ($passwordInput) {
return $passwordInput[0].value = value;
}
if (!$element.data('placeholder-enabled')) {
return element.value = value;
}
if (value == '') {
element.value = value;
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
if (element != safeActiveElement()) {
// We can't use `triggerHandler` here because of dummy text/password inputs :(
setPlaceholder.call(element);
}
} else if ($element.hasClass('placeholder')) {
clearPlaceholder.call(element, true, value) || (element.value = value);
} else {
element.value = value;
}
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
return $element;
}
};
if (!isInputSupported) {
valHooks.input = hooks;
propHooks.value = hooks;
}
if (!isTextareaSupported) {
valHooks.textarea = hooks;
propHooks.value = hooks;
}
$(function() {
// Look for forms
$(document).delegate('form', 'submit.placeholder', function() {
// Clear the placeholder values so they don't get submitted
var $inputs = $('.placeholder', this).each(clearPlaceholder);
setTimeout(function() {
$inputs.each(setPlaceholder);
}, 10);
});
});
// Clear placeholder values upon page reload
$(window).bind('beforeunload.placeholder', function() {
$('.placeholder').each(function() {
this.value = '';
});
});
}
function args(elem) {
// Return an object of element attributes
var newAttrs = {};
var rinlinejQuery = /^jQuery\d+$/;
$.each(elem.attributes, function(i, attr) {
if (attr.specified && !rinlinejQuery.test(attr.name)) {
newAttrs[attr.name] = attr.value;
}
});
return newAttrs;
}
function clearPlaceholder(event, value) {
var input = this;
var $input = $(input);
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
if ($input.data('placeholder-password')) {
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
// If `clearPlaceholder` was called from `$.valHooks.input.set`
if (event === true) {
return $input[0].value = value;
}
$input.focus();
} else {
input.value = '';
$input.removeClass('placeholder');
input == safeActiveElement() && input.select();
}
}
}
function setPlaceholder() {
var $replacement;
var input = this;
var $input = $(input);
var id = this.id;
if (input.value == '') {
if (input.type == 'password') {
if (!$input.data('placeholder-textinput')) {
try {
$replacement = $input.clone().attr({ 'type': 'text' });
} catch(e) {
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
}
$replacement
.removeAttr('name')
.data({
'placeholder-password': $input,
'placeholder-id': id
})
.bind('focus.placeholder', clearPlaceholder);
$input
.data({
'placeholder-textinput': $replacement,
'placeholder-id': id
})
.before($replacement);
}
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
// Note: `$input[0] != input` now!
}
$input.addClass('placeholder');
$input[0].value = $input.attr('placeholder');
} else {
$input.removeClass('placeholder');
}
}
function safeActiveElement() {
// Avoid IE9 `document.activeElement` of death
// https://github.com/mathiasbynens/jquery-placeholder/pull/99
try {
return document.activeElement;
} catch (exception) {}
}
}(this, document, jQuery));

@ -0,0 +1,68 @@
/**
* Created by Алексей on 10.03.2016.
*/
$(document).ready(function(){
$('input').placeholder();
$('.reviews-slides').bxSlider({
pagerCustom: '.reviews-listing',
nextText: ' ',
prevText: ' ',
onSliderLoad: function () {
$(".reviews .bx-pager.bx-default-pager").remove();
}
});
$('.scroll-top').on('click', function(e){
$('html,body').stop().animate({ scrollTop: $('.header').offset().top }, 1000);
e.preventDefault();
});
$('.popup-open-btn').click(function (e) {
e.preventDefault();
$('.overlay').fadeIn(400,
function () {
$('.popup-app')
.css('display', 'block')
.animate({opacity: 1}, 200);
});
return false;
});
$('.popup__close, .overlay').click(function () {
$('.popup')
.animate({opacity: 0}, 200,
function () {
$(this).css('display', 'none');
$('.overlay').fadeOut(400);
}
);
});
$("form.popup-form").on("submit", function(e){
console.log('11');
e.preventDefault();
var $this = $(this),
url = $this.attr("action"),
form = $this.serialize();
$.post(
url,
form,
function(data){
console.log(data);
if(data.success){
// show thanks popup
$('.popup__close').click();
$('.overlay').fadeIn(400,
function () {
$('.popup-thank')
.css('display', 'block')
.animate({opacity: 1}, 200);
});
}
}
);
})
});

@ -13,7 +13,6 @@
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
@ -54,4 +53,4 @@
</div>
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}
{% endblock %}

@ -0,0 +1,38 @@
{% extends 'base.html' %}
{% load static %}
{% block body %}
<form method="post" class="form-horizontal" name="form2" id="form2" enctype="multipart/form-data"> {% csrf_token %}
<fieldset>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-pencil"></i>{{ form.verbose }}</h2>
</div>
<div class="box-content">
{# name #}
{% include 'admin/forms/multilang.html' with field='name' form=form languages=languages %}
{# position #}
{% include 'admin/forms/multilang.html' with field='position' form=form languages=languages %}
{# text #}
{% include 'admin/forms/multilang.html' with field='text' form=form languages=languages %}
{# logo #}
<div class="control-group {% if form.logo.errors %}error{% endif %}">
<label class="control-label">{% if form.logo.field.required %}<b>{{ form.logo.label }}:</b>{% else %}{{ form.logo.label }}{% endif %}</label>
<div class="controls">{{ form.logo }}
<span class="help-inline">{{ form.logo.errors }}</span>
</div>
</div>
</div>
</div>
</fieldset>
<div class="controls">
<input class="btn btn-large btn-primary" type="submit" value="Готово">
<input class="btn btn-large" type="reset" value="Отмена">
</div>
</form>
{% endblock %}

@ -0,0 +1,36 @@
{% extends 'base.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список комментариев</h2>
</div>
<div class="box-content">
{% block list_table %}
<a class="btn btn-success" href="{% url 'expobaner-comment_add' %}"><i class="icon-plus-sign icon-white"></i> Добавить комментарий</a>
<table class="table table-hover">
<thead>
<tr>
<th>Имя</th>
<th>Должность</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item }}</td>
<td>{{ item.position }}</td>
<td><a class="btn btn-info" href="{% url 'expobaner-comment_edit' item.pk %}"><i class="icon-edit icon-white"></i>Изменить</a></td>
<td><a class="btn btn-danger delete" href="{% url 'expobaner-comment_delete' item.pk %}"><i class="icon-trash icon-white"></i>Удалить</a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=page_obj %}
</div>
{% endblock %}

@ -106,6 +106,7 @@
<li><a href="/admin/expobanners/main/list/">Выставки на главной</a></li>
<li><a href="/admin/expobanners/main/conf/list/">Конференции на главной</a></li>
<li><a href="/admin/expobanners/main/block/22/">Блок на главной</a></li>
<li><a href="{% url 'expobaner-comment_list' %}">Комментарии на /advertising/</a></li>
</ul>
</li>
@ -122,4 +123,4 @@
</ul>
</div>
</div>
</div>

@ -9,4 +9,4 @@
<li><a href="/service/participation/">{% trans 'Участие в выставках' %}</a></li>
</ul>
</nav>
</div>
</div>

@ -0,0 +1,439 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
{% load thumbnail %}
{% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html>
<head lang="{{ LANGUAGE_CODE }}">
{% include 'client/includes/meta.html' %}
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.min.js"></script>
<![endif]-->
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,700&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="{% static 'advertising_landing/css/reset.css' %}"/>
<link rel="stylesheet" href="{% static 'advertising_landing/css/style.css' %}"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="{% static 'advertising_landing/js/jquery.placeholder.js' %}"></script>
<script type="text/javascript" src="{% static 'advertising_landing/js/jquery.bxslider.min.js' %}"></script>
<script type="text/javascript" src="{% static 'advertising_landing/js/script.js' %}"></script>
</head>
<body>
<header class="header bg-full-width">
<div class="content">
<div class="header-top">
<a class="logo" href="index.html"></a>
<p class="phone">+ 7 (499) 999-12-07</p>
</div><!--header-top-->
<h1 class="main-title">
{{ meta.h1|default:'Привлекаем правильную аудиторию <br/> на Ваши события' }}
</h1>
<p class="main-desc">
{% trans "Хотите увеличить поток посетителей и участников на Ваши события? Используйте аудиторию портала Expomap, самого посещаемого интернет-ресурса о выставках и конференциях в России и СНГ!" %}
</p>
<button class="orange-btn header__btn popup-open-btn">Подать заявку</button>
</div><!--content-->
</header>
<section class="cite bg-full-width">
<div class="content">
<p class="cite__text">
{% trans "Качество и количество аудитории влияют на эффективность" %}
</p>
</div><!--content-->
</section><!--cite-->
<section class="statistics bg-full-width">
<div class="statistics-top bg-full-width">
<div class="content">
<div class="statistic-item statistic-item_1">
<span class="statistic-item__icon-wrap">
<i class="icon icon-stat-1 pos-center"></i>
</span>
<p class="statistic-item__title">{% trans "Портрет наших посетителей" %}</p>
</div><!--statistic-item-->
<div class="statistic-item statistic-item_2">
<span class="statistic-item__icon-wrap">
<i class="icon icon-stat-2 pos-center"></i>
</span>
<p class="statistic-item__title">{% trans "Посещаемость <br/>в месяц:" %} </p>
</div><!--statistic-item-->
<div class="statistic-item statistic-item_3">
<span class="statistic-item__icon-wrap">
<i class="icon icon-stat-3 pos-center"></i>
</span>
<p class="statistic-item__title">{% trans "Просмотры страниц:" %}</p>
</div><!--statistic-item-->
<div class="statistic-item statistic-item_4">
<span class="statistic-item__icon-wrap">
<i class="icon icon-stat-4 pos-center"></i>
</span>
<p class="statistic-item__title">{% trans "Источники трафика:" %}</p>
</div><!--statistic-item-->
</div><!--content-->
</div><!--statistics-top-->
<div class="statistics-bottom bg-full-width">
<div class="content">
<div class="statistic-item statistic-item_1">
<p class="statistic-item__desc">{% trans "<em>Средний</em> возраст – 25-45 лет" %}</p>
<p class="statistic-item__desc">{% trans "<em>Пол</em> – муж./жен. (48,5%/51,5%)" %}</p>
<p class="statistic-item__desc">
<em>{% trans "Профессиональная деятельность:" %}</em> {% trans "руководители, собственники," %} <br/>
{% trans "маркетологи, технические специалисты" %}
</p>
<p class="statistic-item__desc">
<em>{% trans "Интересы:" %}</em> <br/>
{% trans "бизнес, туризм, недвижимость," %} <br/>
{% trans "обустройство, финансы, здоровье" %} <br/>
{% trans "и красота" %}
</p>
</div><!--statistic-item-->
<div class="statistic-item statistic-item_2">
<p class="statistic-item__count">
{% trans "более" %}
<strong>210 000</strong>
{% trans "визитов" %}<small>*</small>
</p>
</div><!--statistic-item-->
<div class="statistic-item statistic-item_3">
<p class="statistic-item__count">
{% trans "более" %}
<strong>600 000</strong>
{% trans "просмотров" %}<small>*</small>
</p>
</div><!--statistic-item-->
<div class="statistic-item statistic-item_4">
<p class="statistic-item__type">{% trans "Поисковые системы" %}</p>
<p class="statistic-item__type">{% trans "Прямые заходы" %}</p>
<p class="statistic-item__type">{% trans "Переходы с почтовых рассылок" %}</p>
<p class="statistic-item__type">{% trans "Сайты-партнеры" %}</p>
<p class="statistic-item__type">{% trans "Социальные сети" %}</p>
</div><!--statistic-item-->
</div><!--content-->
</div><!--statistics-bottom-->
<div class="content">
<p class="statistics__info">* {% trans "по данным Яндекс Метрики за 1 – 29 февраля 2016 г." %}</p>
</div><!--content-->
</section><!--statistics-->
<section class="instruments content clear-fix">
<i class="instruments__bg"></i>
<h2 class="block-title">{% trans "Рекламные инструменты бывают разные" %} </h2>
<ul class="instruments-list">
<li class="instruments-list__item">{% trans "Медийная реклама" %}</li>
<li class="instruments-list__item">{% trans "Рассылки" %}</li>
<li class="instruments-list__item">{% trans "Имидж-страница события" %}</li>
<li class="instruments-list__item">{% trans "Приоритетная выдача в каталоге" %}</li>
<li class="instruments-list__item">{% trans "Реклама в социальных сетях" %}</li>
<li class="instruments-list__item">{% trans "Видеореклама на главной" %}</li>
<li class="instruments-list__item">{% trans "Размещение новостей-статей" %}</li>
<li class="instruments-list__item">{% trans "Спецпроекты" %}</li>
</ul>
<button class="orange-btn instruments-btn popup-open-btn">{% trans "Заказать продвижение события" %}</button>
</section><!--instruments-->
<section class="steps bg-full-width">
<div class="content">
<h2 class="block-title">{% trans "Как мы работаем с рекламодателями" %}</h2>
<div class="steps-list">
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-1 pos-center"></i>
<span class="step__numb">01</span>
</span>
<p class="step__title">
{% trans "Получаем входящую" %} <br/>
{% trans "информацию" %}
</p>
<p class="step__desc">
({% trans "цели, задачи, аудитория, период," %} <br/> {% trans "ограничения, бюджет" %})
</p>
</div><!--step-->
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-2 pos-center"></i>
<span class="step__numb">02</span>
</span>
<p class="step__title">
{% trans "Анализируем целевую" %} <br/>
{% trans "аудиторию" %}
</p>
<p class="step__desc">
({% trans "портрет, интересы, мотивация" %})
</p>
</div><!--step-->
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-3 pos-center"></i>
<span class="step__numb">03</span>
</span>
<p class="step__title">
{% trans "Составляем список" %} <br/>
{% trans "инструментов и календарный" %} <br/>
{% trans "план" %}
</p>
<p class="step__desc">
({% trans "только подходящие инструменты" %} <br/> {% trans "для данной ЦА" %})
</p>
</div><!--step-->
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-4 pos-center"></i>
<span class="step__numb">04</span>
</span>
<p class="step__title">
{% trans "Согласовываем" %} <br/>
{% trans "и утверждаем рекламную" %} <br/>
{% trans "кампанию с организатором" %}
</p>
</div><!--step-->
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-5 pos-center"></i>
<span class="step__numb">07</span>
</span>
<p class="step__title">
{% trans "Делаем подробный отчет" %} <br/>
{% trans "по итогам рекламной" %} <br/>
{% trans "кампании" %}
</p>
</div><!--step-->
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-6 pos-center"></i>
<span class="step__numb">06</span>
</span>
<p class="step__title">
{% trans "Запускаем и контролируем" %} <br/> {% trans "кампанию, в случае" %} <br/>
{% trans "необходимости заменяем" %} <br/> {% trans "инструменты" %}
</p>
</div><!--step-->
<div class="step">
<span class="step__icon-wrap">
<i class="icon icon-step-7 pos-center"></i>
<span class="step__numb">05</span>
</span>
<p class="step__title">
{% trans "Создаем эффективные" %} <br/>
{% trans "рекламные носители" %}
</p>
<p class="step__desc">
({% trans "сообщения, тексты, баннеры" %}, <br/>
{% trans "письма и др." %})
</p>
</div><!--step-->
</div><!--steps-list-->
<p class="steps__desc">
{% trans "Только индивидуальный и системный подход приносит результат!" %}
</p>
<button class="orange-btn steps__btn popup-open-btn">{% trans "Запросить план продвижения" %}</button>
</div><!--content-->
</section><!--steps-->
<section class="budget content">
<h2 class="block-title">{% trans "Волнуетесь о бюджете?" %}</h2>
<p class="budget__desc">
{% trans "Мы всегда учитываем Ваши возможности и стараемся" %}
{% trans "подобрать максимально работающие инструменты" %} <br/>
{% trans "под бюджет рекламодателя. Если есть возможность, мы
с радостью дарим подарки и бонусы!" %}
</p>
<p class="budget-packs__title">{% trans "Ваш бюджет:" %}</p>
<div class="budget-packs">
<div class="budget-pack budget-pack_1">
<p class="budget-pack__sum">{% trans "12 000 – 20 000 руб." %}</p>
<div class="budget-pack-info">
<span class="budget-pack-info__icon">і</span>
<div class="budget-pack-desc box">
{% trans "Закажите имидж-страницу события и размещение в ТОП нужной Вам тематики, чтобы перенаправить потенциальных участников и посетителей на Ваш сайт" %}
</div><!--budget-pack-desc-->
</div><!--budget-pack-info-->
</div><!--budget-pack-->
<div class="budget-pack budget-pack_2">
<p class="budget-pack__sum">{% trans "20 000 – 40 000 руб." %}</p>
<div class="budget-pack-info">
<span class="budget-pack-info__icon">і</span>
<div class="budget-pack-desc box">
{% trans "Используйте серию рассылок по подписчикам в совокупности с имиджевой страницей и баннерной рекламой с таргетом на Вашу целевую аудиторию" %}
</div><!--budget-pack-desc-->
</div><!--budget-pack-info-->
</div><!--budget-pack-->
<div class="budget-pack budget-pack_3">
<p class="budget-pack__sum">{% trans "40 000 руб. и более" %}</p>
<div class="budget-pack-info">
<span class="budget-pack-info__icon">і</span>
<div class="budget-pack-desc box">
{% trans "Создайте с нашим маркетологом персональный медиаплан на проект и используйте любые рекламные инструменты со скидкой 35%" %}
</div><!--budget-pack-desc-->
</div><!--budget-pack-info-->
</div><!--budget-pack-->
</div><!--budget-packs-->
</section><!--budget-->
<section class="reviews bg-full-width">
<div class="content">
<h2 class="block-title">{% trans "Если рекламодатели довольны, значит все было не зря!" %} </h2>
<p class="reviews__desc">{% trans "Что говорят про нас наши клиенты?" %}</p>
<ul class="reviews-slides">
{% for comment in comments %}
{% if forloop.first %}
<li class="reviews-slide">
{% endif %}
<div class="review box">
<p class="review__text">
{{ comment.text }}
</p>
<span class="review__logo-wrap">
<img class="pos-center" src="{{ comment.logo.url }}" alt="img"/>
</span>
<div class="review-desc">
<p class="review-desc__name">{{ comment.name }}</p>
<p class="review-desc__position">{{ comment.position }}</p>
</div><!--review-desc-->
</div><!--review-->
{% if forloop.last %}
</li>
{% elif forloop.counter|divisibleby:"3" %}
<li class="reviews-slide">
{% endif %}
{% endfor %}
</ul>
<div class="reviews-listing">
<a class="reviews-listing__item active" href="#" data-slide-index="0"></a>
<a class="reviews-listing__item" href="#" data-slide-index="1"></a>
<a class="reviews-listing__item" href="#" data-slide-index="2"></a>
<a class="reviews-listing__item" href="#" data-slide-index="3"></a>
</div><!--reviews-listing-->
</div><!--content-->
</section><!--reviews-->
<footer class="footer bg-full-width">
<div class="content">
<h2 class="block-title block-title_white">{% trans "Не знаете, как оценить эффективность?" %}</h2>
<p class="footer-article">
{% trans "Почитайте нашу" %}
<a class="footer-article__link" href="#">{% trans "статью об измерении качества площадки" %}</a>.
</p>
<div class="footer-block">
<p class="footer-block__title">{% trans "Надеюсь, мы вас убедили?" %}</p>
<p class="footer-block__desc">
{% trans "Тогда, пришлите запрос или же позвоните нам (499) 999 12 07!" %}
</p>
<button class="orange-btn footer-block__btn popup-open-btn">{% trans "Сделать запрос" %}</button>
</div><!--footer-block-->
</div><!--content-->
</footer>
<section class="scroll-block bg-full-width">
<span class="scroll-top pos-center"></span>
</section><!--scroll-block-->
<div class="overlay"></div>
<div class="popup popup-app">
<span class="popup__close"></span>
<p class="popup__title">{% trans "Отправить заявку" %}</p>
<p class="popup__desc">
{% trans "Отправьте заявку и мы свяжемся с Вами" %} <br/>
{% trans "удобным для Вас способом!" %}
</p>
<form class="popup-form" action="{% url 'advertise_post' %}" method="post">
{% csrf_token %}
<input class="popup-form__field" type="text" name="person_inf" placeholder="{% trans "Ваше имя" %}"/>
<input class="popup-form__field" type="text" name="phone" placeholder="{% trans "Ваш телефон" %}"/>
<input class="popup-form__field" type="text" name="person" placeholder="{% trans "Ваш e-mail" %}"/>
<input class="popup-form__field" type="text" name="event" placeholder="{% trans "Ваше событие" %}"/>
<button class="orange-btn popup-form__btn" type="submit">{% trans "Отправить" %}</button>
</form>
</div><!--popup-app-->
<div class="popup popup-thank">
<span class="popup__close"></span>
<p class="popup__title">{% trans "Спасибо!" %}</p>
<p class="popup__desc">
{% trans "Мы свяжемся с Вами ближайшее время!" %}
</p>
</div><!--popup-app-->
</body>
</html>
Loading…
Cancel
Save