remotes/origin/1203
Назар Котюк 11 years ago
commit 13abedbafe
  1. 2
      proj/settings.py
  2. 2
      service/models.py
  3. 52
      service/order_forms.py
  4. 6
      service/views.py
  5. 1
      templates/client/includes/catalog_search.html
  6. 246
      templates/client/includes/conference/conference_list.html
  7. 28
      templates/client/includes/event_steps.html
  8. 18
      templates/client/includes/exposition/exposition_list.html
  9. 99
      templates/client/includes/place/place_list.html
  10. 20
      templates/client/service/tour.html
  11. 21
      templates/client/service/translator.html
  12. 12
      templates/client/static_client/css/main.css
  13. 74
      templates/client/static_client/js/_modules/block.search.js
  14. 2
      templates/client/static_client/js_min/_modules/block.search.min.js

@ -404,6 +404,8 @@ MONTHES = {'jan': {'value': 1, 'name': _(u'Январь')}, 'feb': {'value': 2,
SNG_COUNTRIES = [159, 186, 31, 6, 99, 13, 189, 64] SNG_COUNTRIES = [159, 186, 31, 6, 99, 13, 189, 64]
CLIENT_DATE_FORMAT = ["%d.%m.%Y"]
# cache pages in random seconds. random in this range # cache pages in random seconds. random in this range
CACHE_RANGE = [60, 120] CACHE_RANGE = [60, 120]

@ -107,7 +107,7 @@ class Translation(AbstractOrder):
class Visit(AbstractOrder): class Visit(AbstractOrder):
fr = models.DateField() fr = models.DateField()
to = models.DateField() to = models.DateField()
people = models.IntegerField() people = models.IntegerField(blank=True, null=True)
hotel_additional = models.TextField(blank=True) hotel_additional = models.TextField(blank=True)
city_from = models.CharField(max_length=255, blank=True) city_from = models.CharField(max_length=255, blank=True)
hotel_stars = models.CharField(max_length=30, blank=True) hotel_stars = models.CharField(max_length=30, blank=True)

@ -6,6 +6,7 @@ from models import Catalog, Tickets, Remote, Participation, Translation, Visit,
from exposition.models import Exposition from exposition.models import Exposition
from conference.models import Conference from conference.models import Conference
from seminar.models import Seminar from seminar.models import Seminar
from django.conf import settings
class AbstractOrderForm(forms.ModelForm): class AbstractOrderForm(forms.ModelForm):
@ -74,7 +75,7 @@ class AbstractOrderForm(forms.ModelForm):
if not phone: if not phone:
return return
deduct = ('-','(',')','.',' ') deduct = ('-','(',')','.',' ', '+')
for elem in deduct: for elem in deduct:
phone = phone.replace(elem, '') phone = phone.replace(elem, '')
if phone.isdigit(): if phone.isdigit():
@ -132,42 +133,43 @@ from theme.models import Theme
class TranslationForm(AbstractOrderForm): class TranslationForm(AbstractOrderForm):
languages = forms.CharField(required=False) languages = forms.CharField(required=False)
themes = forms.CharField(required=False) themes = forms.CharField(required=False)
fr = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}), required=False) fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT,
to = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}), required=False) widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT,
widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}))
class Meta: class Meta:
model = Translation model = Translation
HOTEL_ADDITIONAL_CHOICES = [('', _(u'Выберите')),(_(u'Условие1'), _(u'Условие1')), HOTEL_ADDITIONAL_CHOICES = [('', _(u'Выберите')), (_(u'Одноместное'), _(u'Одноместное')),
(_(u'Условие2'), _(u'Условие2')),(_(u'Условие3'), _(u'Условие3'))] (_(u'Двухместное'), _(u'Двухместное')),(_(u'Трехместное'), _(u'Трехместное'))]
AVIA_TYPE_CHOICES = [(_(u'Прямой'), _(u'Прямой')), (_(u'С пересадкой'), _(u'С пересадкой')), AVIA_TYPE_CHOICES = [(_(u'Прямой'), _(u'Прямой')), (_(u'С пересадкой'), _(u'С пересадкой')),
(_(u'Бизнес-класс'), _(u'Бизнес-класс')), (_(u'Эконом-класс'), _(u'Эконом-класс'))] (_(u'Бизнес-класс'), _(u'Бизнес-класс')), (_(u'Эконом-класс'), _(u'Эконом-класс'))]
HOTEL_LOCATION_CHOICES = [('', _(u'Выберите')), (_(u'Расположение1'), _(u'Расположение1')), HOTEL_LOCATION_CHOICES = [('', _(u'Выберите')), (_(u'Любое'), _(u'Любое')),
(_(u'Расположение2'), _(u'Расположение2'))] (_(u'Рядом с выставкой'), _(u'Рядом с выставкой')),
(_(u'В центре'), _(u'В центре'))]
HOTEL_BUDGET_ADD = [('', _(u'Выберите')), (_(u'В сутки'), _(u'В сутки')), (_(u'В неделю'), _(u'В неделю'))] HOTEL_BUDGET_ADD = [(_(u'В сутки'), _(u'В сутки')), (_(u'За весь период'), _(u'За весь период'))]
class VisitForm(AbstractOrderForm): class VisitForm(AbstractOrderForm):
fr = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')})) fr = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, required=False,
to = forms.DateField(widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')})) widget=forms.DateInput(attrs={'class': 'date dateFrom', 'placeholder': _(u'дд.мм.гггг')}))
to = forms.DateField(input_formats=settings.CLIENT_DATE_FORMAT, required=False,
widget=forms.DateInput(attrs={'class': 'date dateTo', 'placeholder': _(u'дд.мм.гггг')}))
hotel_additional = forms.ChoiceField(choices=HOTEL_ADDITIONAL_CHOICES, required=False) hotel_additional = forms.ChoiceField(choices=HOTEL_ADDITIONAL_CHOICES, required=False)
hotel_stars = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), hotel_stars = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), required=False,
choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')]) choices=[('1','1'),('2','2'),('3','3'),('4','4'),('5','5')])
hotel_location = forms.ChoiceField(choices=HOTEL_LOCATION_CHOICES, required=False) hotel_location = forms.ChoiceField(choices=HOTEL_LOCATION_CHOICES, required=False)
hotel_budget_add = forms.ChoiceField(choices=HOTEL_BUDGET_ADD, required=False) hotel_budget_add = forms.ChoiceField(choices=HOTEL_BUDGET_ADD, required=False)
languages = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), languages = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Знание языков')}))
choices=LANGS) themes = forms.CharField(required=False, widget=forms.TextInput(attrs={'placeholder': _(u'Тематика')}))
themes = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=[(theme.name, theme.name) for theme in Theme.objects.all()])
avia_type = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), avia_type = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(),
choices=AVIA_TYPE_CHOICES) choices=AVIA_TYPE_CHOICES, required=False)
class Meta: class Meta:
model = Visit model = Visit
@ -178,20 +180,6 @@ class VisitForm(AbstractOrderForm):
else: else:
return ', '.join(hotel_stars) return ', '.join(hotel_stars)
def clean_languages(self):
languages = self.cleaned_data.get('languages')
if not languages:
return ''
else:
return ', '.join(languages)
def clean_themes(self):
themes = self.cleaned_data.get('themes')
if not themes:
return ''
else:
return ', '.join(themes)
def clean_avia_type(self): def clean_avia_type(self):
avia_type = self.cleaned_data.get('avia_type') avia_type = self.cleaned_data.get('avia_type')
if not avia_type: if not avia_type:

@ -17,6 +17,8 @@ order_forms = {'translator': TranslationForm, 'catalog': CatalogForm, 'participa
'remote': RemoteForm, 'tickets': TicketsForm, 'visit': VisitForm, 'buildstand': BuildStandForm} 'remote': RemoteForm, 'tickets': TicketsForm, 'visit': VisitForm, 'buildstand': BuildStandForm}
class ServiceView(FormView): class ServiceView(FormView):
success_url = '/service/thanks/'
def get_form_class(self): def get_form_class(self):
url = self.kwargs.get('url') url = self.kwargs.get('url')
@ -26,13 +28,9 @@ class ServiceView(FormView):
else: else:
raise Http404 raise Http404
def get_template_names(self): def get_template_names(self):
url = self.kwargs.get('url') url = self.kwargs.get('url')
service = get_object_or_404(Service, url=url) service = get_object_or_404(Service, url=url)
return service.template return service.template

@ -99,6 +99,7 @@
{% if request.GET.debug == '1' %} {% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/block.search.js' %}"></script> <script src="{% static 'client/js/_modules/block.search.js' %}"></script>
{% else %} {% else %}
<script src="{% static 'client/js_min/_modules/block.search.min.js' %}"></script> <script src="{% static 'client/js_min/_modules/block.search.min.js' %}"></script>
{% endif %} {% endif %}
<script> <script>

@ -1,124 +1,134 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}
<ul class="cat-list cl-exhibitions"> {% with objects=object_list %}
{% with objects=object_list %} {% if objects %}
{% for obj in objects %} <ul class="cat-list cl-exhibitions">
<li class="cl-item {% if obj.canceled %}canceled{% endif %}">
<div class="cl-item-wrap clearfix"> {% for obj in objects %}
<a href="{{ obj.get_permanent_url }}"> <li class="cl-item {% if obj.canceled %}canceled{% endif %}">
{% if obj.canceled %} <div class="cl-item-wrap clearfix">
<div class="cancel"></div> <a href="{{ obj.get_permanent_url }}">
{% else %} {% if obj.canceled %}
{% if obj.expohit %} <div class="cancel"></div>
<div class="hit"></div> {% else %}
{% endif %} {% if obj.expohit %}
{% endif %} <div class="hit"></div>
<div class="cli-pict"> {% endif %}
{% with obj=obj %} {% endif %}
{% include 'client/includes/show_logo.html' %} <div class="cli-pict">
{% endwith %} {% with obj=obj %}
</div> {% include 'client/includes/show_logo.html' %}
</a> {% endwith %}
<div class="cli-info"> </div>
<div class="cli-top clearfix"> </a>
{% if obj.quality_label.ufi.is_set %} <div class="cli-info">
<div class="cli-approved"> <div class="cli-top clearfix">
<img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" /> {% if obj.quality_label.ufi.is_set %}
</div> <div class="cli-approved">
{% endif %} <img src="{% static 'client/img/approved-logo.png' %}" alt="" title="Approved Event" />
<header> </div>
<div class="cli-title"><a href="{{ obj.get_permanent_url }}">{{ obj.name|safe }}</a></div> {% endif %}
</header> <header>
<div class="cli-descr"> <div class="cli-title"><a href="{{ obj.get_permanent_url }}">{{ obj.name|safe }}</a></div>
{{ obj.main_title|safe }} </header>
</div> <div class="cli-descr">
</div> {{ obj.main_title|safe }}
<div class="cli-bot clearfix"> </div>
<div class="cli-date"> </div>
{% with obj=obj %} <div class="cli-bot clearfix">
{% include 'client/includes/show_date_block.html' %} <div class="cli-date">
{% endwith %} {% with obj=obj %}
</div> {% include 'client/includes/show_date_block.html' %}
{% if obj.country %} {% endwith %}
<div class="cli-place"> </div>
<a href="{{ obj.catalog }}country/{{ obj.country.url }}/">{{ obj.country }}</a>, <a href="{{ obj.catalog }}city/{{ obj.city.url }}/">{{ obj.city }}</a> {% if obj.country %}
{% if obj.place %} <div class="cli-place">
, <a href="/places/{{ obj.place.url }}/">{{ obj.place }}</a> <a href="{{ obj.catalog }}country/{{ obj.country.url }}/">{{ obj.country }}</a>, <a href="{{ obj.catalog }}city/{{ obj.city.url }}/">{{ obj.city }}</a>
{% endif %} {% if obj.place %}
</div> , <a href="/places/{{ obj.place.url }}/">{{ obj.place }}</a>
{% endif %} {% endif %}
</div> </div>
</div> {% endif %}
<div class="cli-buttons clearfix"> </div>
<div class="cli-m-buttons"> </div>
{% include 'client/includes/exposition/services.html' with obj=obj %} <div class="cli-buttons clearfix">
{% include 'client/includes/calendar_button.html' with obj=obj%} <div class="cli-m-buttons">
<div class="{% if request.user.is_authenticated%}note-wrap{% else %}note-wrap-disabled{% endif %}"> {% include 'client/includes/exposition/services.html' with obj=obj %}
{% with note=obj|note_by_user:request.user %} {% include 'client/includes/calendar_button.html' with obj=obj%}
<a class="button green icon-note {% if note %}active{% endif %} note-button" href="/conference/add-note/{{ obj.url }}/">{% trans 'заметка' %}</a> <div class="{% if request.user.is_authenticated%}note-wrap{% else %}note-wrap-disabled{% endif %}">
<div class="note-overlay"> {% with note=obj|note_by_user:request.user %}
<form action=""> <a class="button green icon-note {% if note %}active{% endif %} note-button" href="/conference/add-note/{{ obj.url }}/">{% trans 'заметка' %}</a>
<textarea name="note_text" class="note-text"> {{ note }}</textarea> <div class="note-overlay">
</form> <form action="">
</div> <textarea name="note_text" class="note-text"> {{ note }}</textarea>
{% endwith %} </form>
</div> </div>
{% if request.user.is_admin %} {% endwith %}
<div class="note-wrap"> </div>
<a class="button green " href="/admin/conference/{{ obj.url }}/">{% trans 'изменить' %}</a> {% if request.user.is_admin %}
</div> <div class="note-wrap">
{% endif %} <a class="button green " href="/admin/conference/{{ obj.url }}/">{% trans 'изменить' %}</a>
<div></div> </div>
</div> {% endif %}
<div class="cli-s-buttons"> <div></div>
{% include 'client/buttons/booking_button.html' with object=obj %} </div>
</div> <div class="cli-s-buttons">
</div> {% include 'client/buttons/booking_button.html' with object=obj %}
</div> </div>
<footer class="clearfix"> </div>
<div class="cli-stats"> </div>
{% if obj.visitors %} <footer class="clearfix">
<span class="visitors" title="Посетители">{{ obj.visitors }}</span> <div class="cli-stats">
{% endif %} {% if obj.visitors %}
{% if obj.members %} <span class="visitors" title="Посетители">{{ obj.visitors }}</span>
<span class="participants" title="Участники">{{ obj.members }}</span> {% endif %}
{% endif %} {% if obj.members %}
</div> <span class="participants" title="Участники">{{ obj.members }}</span>
<div class="cli-tags"> {% endif %}
{% include 'client/includes/exposition/tags.html' with obj=obj %} </div>
</div> <div class="cli-tags">
</footer> {% include 'client/includes/exposition/tags.html' with obj=obj %}
</li> </div>
{% if forloop.counter == 8 %} </footer>
<!-- Яндекс.Директ --> </li>
<script type="text/javascript"> {% if forloop.counter == 8 %}
yandex_partner_id = 58151; <!-- Яндекс.Директ -->
yandex_site_bg_color = 'FFFFFF'; <script type="text/javascript">
yandex_ad_format = 'direct'; yandex_partner_id = 58151;
yandex_font_size = 1; yandex_site_bg_color = 'FFFFFF';
yandex_direct_type = 'horizontal'; yandex_ad_format = 'direct';
yandex_direct_border_type = 'block'; yandex_font_size = 1;
yandex_direct_limit = 3; yandex_direct_type = 'horizontal';
yandex_direct_title_font_size = 3; yandex_direct_border_type = 'block';
yandex_direct_border_radius = true; yandex_direct_limit = 3;
yandex_direct_links_underline = false; yandex_direct_title_font_size = 3;
yandex_direct_header_bg_color = 'FEEAC7'; yandex_direct_border_radius = true;
yandex_direct_bg_color = 'FFF9F0'; yandex_direct_links_underline = false;
yandex_direct_border_color = 'FBE5C0'; yandex_direct_header_bg_color = 'FEEAC7';
yandex_direct_title_color = '666666'; yandex_direct_bg_color = 'FFF9F0';
yandex_direct_url_color = '000000'; yandex_direct_border_color = 'FBE5C0';
yandex_direct_text_color = '000000'; yandex_direct_title_color = '666666';
yandex_direct_hover_color = 'FF3333'; yandex_direct_url_color = '000000';
yandex_direct_sitelinks_color = '666666'; yandex_direct_text_color = '000000';
yandex_direct_favicon = false; yandex_direct_hover_color = 'FF3333';
yandex_no_sitelinks = false; yandex_direct_sitelinks_color = '666666';
document.write('<scr'+'ipt type="text/javascript" src="//an.yandex.ru/system/context.js"></scr'+'ipt>'); yandex_direct_favicon = false;
</script> yandex_no_sitelinks = false;
{%endif %} document.write('<scr'+'ipt type="text/javascript" src="//an.yandex.ru/system/context.js"></scr'+'ipt>');
{% endfor %} </script>
{% endwith %} {%endif %}
</ul> {% endfor %}
</ul>
{% else %}
<p class="message-not-found">
<span class="message">
{% trans "Конференции по указанным параметрам не найдены. Попробуйте задать менее точный запрос по теме или расширить период времени" %}
</span>
</p>
{% endif %}
{% endwith %}
{% block scripts %} {% block scripts %}
{% if request.GET.debug == '1' %} {% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script> <script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script>

@ -3,26 +3,14 @@
<div class="i-steps"> <div class="i-steps">
<div class="is-title">{% if event.catalog == '/expo/' %}{% trans 'Участвовать в выставке' %}{% else %}{% trans 'Посетить конференцию' %}{% endif %}</div> <div class="is-title">{% if event.catalog == '/expo/' %}{% trans 'Участвовать в выставке' %}{% else %}{% trans 'Посетить конференцию' %}{% endif %}</div>
<ul> <ul>
{% if event.country_id in sng_countries %} <li class="s1">
<li class="s1"> <div class="label">{% if event.catalog == '/expo/' %}{% trans 'Создайте уникальную концепцию' %}{% else %}{% trans 'Зарегистрируйтесь на событие' %}{% endif %}</div>
<div class="label">1. {% trans 'Участвовать в событии' %}</div> <a class="step"
<a class="step" href="{% if event.registration_link %}{{ registration_link }}{% else %}{{ event.get_permanent_url }}service/tickets/{% endif %}"
href="{{ event.get_permanent_url }}service/participation/" target="_blank">
target="_blank"> {% if event.catalog == '/expo/' %}{% trans 'Заявка на участие' %}{% else %}{% trans 'Регистрация' %}{% endif %}
{% trans 'Участвовать' %} </a>
</a> </li>
</li>
{% else %}
<li class="s1">
<div class="label">1. {% trans 'Зарегистрируйтесь на событие' %}</div>
<a class="step"
href="{% if event.registration_link %}{{ registration_link }}{% else %}{{ event.get_permanent_url }}service/tickets/{% endif %}"
target="_blank">
{% if event.catalog == '/expo/' %}{% trans 'Билеты на выставку' %}{% else %}{% trans 'Регистрация' %}{% endif %}
</a>
</li>
{% endif %}
<li class="s2"> <li class="s2">
<div class="label">{% trans 'Забронируйте отель по лучшей цене' %}</div> <div class="label">{% trans 'Забронируйте отель по лучшей цене' %}</div>

@ -1,8 +1,10 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}
{% with objects=object_list %}
{% if objects %}
<ul class="cat-list cl-exhibitions"> <ul class="cat-list cl-exhibitions">
{% with objects=object_list %}
{% for obj in objects %} {% for obj in objects %}
<li class="cl-item {% if obj.canceled %}canceled{% endif %}"> <li class="cl-item {% if obj.canceled %}canceled{% endif %}">
<div class="cl-item-wrap clearfix"> <div class="cl-item-wrap clearfix">
@ -119,8 +121,20 @@
</script> </script>
{%endif %} {%endif %}
{% endfor %} {% endfor %}
{% endwith %}
</ul> </ul>
{% else %}
<p class="message-not-found">
<span class="message">
{% trans "Выставки по указанным параметрам не найдены. Попробуйте задать менее точный запрос по теме или расширить период времени" %}
</span>
</p>
{% endif %}
{% endwith %}
{% block scripts %} {% block scripts %}
{% if request.GET.debug == '1' %} {% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script> <script src="{% static 'client/js/_modules/block.exposition.list.js' %}"></script>

@ -1,56 +1,53 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% with objects=object_list %}
<ul class="cat-list cl-places"> <ul class="cat-list cl-places">
{% for object in object_list %} {% for object in object_list %}
<li class="cl-item" {% if forloop.counter == 1 %}style="border:1px solid #ff6600;"{% else %}{% endif %}> <li class="cl-item" {% if forloop.counter == 1 %}style="border:1px solid #ff6600;"{% else %}{% endif %}>
<div class="cl-item-wrap clearfix"> <div class="cl-item-wrap clearfix">
<a href="{{ object.get_permanent_url }}"> <a href="{{ object.get_permanent_url }}">
<div class="cli-pict"> <div class="cli-pict">
{% with obj=object %} {% with obj=object %}
{% include 'client/includes/show_logo.html' %} {% include 'client/includes/show_logo.html' %}
{% endwith %} {% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title"><a href="{{ object.get_permanent_url }}">{{ object.name|safe }}</a></div>
<!--<div class="cli-rate">{{ object.rating }}</div>-->
</header>
<div class="cli-descr">{{ object.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %}
<div class="cli-place"><a href="/places/country/{{ object.country.url }}/">{{ object.country }}</a>, <a href="/places/city/{{ object.city.url }}/">{{ object.city }}</a>
</div>
</div>
</div> </div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title"><a href="{{ object.get_permanent_url }}">{{ object.name|safe }}</a></div>
<!--<div class="cli-rate">{{ object.rating }}</div>-->
</header>
<div class="cli-descr">{{ object.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %}
<div class="cli-place"><a href="/places/country/{{ object.country.url }}/">{{ object.country }}</a>, <a href="/places/city/{{ object.city.url }}/">{{ object.city }}</a>
</div>
</div>
</div>
<div class="cli-buttons clearfix">
<div class="cli-m-buttons">
<a class="button icon-info" href="{{ object.get_permanent_url }}">{% trans 'описание' %}</a>
{% if object.get_events_number %}
<a class="button green icon-list" href="#">{% trans 'события' %} ({{ object.get_events_number }})</a>
{% endif %}
{% if object.photogallery %}
<a class="button blue icon-photo" href="{{ object.get_permanent_url }}photo/">{% trans 'фото' %}</a>
{% endif %}
</div>
<div class="cli-s-buttons">
<a class="button blue2 lc" target="_blank" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отели поблизости' %}</a> <div class="cli-buttons clearfix">
</div> <div class="cli-m-buttons">
<a class="button icon-info" href="{{ object.get_permanent_url }}">{% trans 'описание' %}</a>
</div> {% if object.get_events_number %}
<a class="button green icon-list" href="#">{% trans 'события' %} ({{ object.get_events_number }})</a>
{% endif %}
</li> {% if object.photogallery %}
{% endfor %} <a class="button blue icon-photo" href="{{ object.get_permanent_url }}photo/">{% trans 'фото' %}</a>
</ul> {% endif %}
</div>
<div class="cli-s-buttons">
<a class="button blue2 lc" target="_blank" href="http://www.booking.com/searchresults.html?aid={{ book_aid }}&city={{ object.city.id }}">{% trans 'Найти отели поблизости' %}</a>
</div>
</div>
</li>
{% endfor %}
</ul>
{% endwith %}

@ -23,6 +23,7 @@
{% block page_title %} {% block page_title %}
<div class="page-title"> <div class="page-title">
<h1>{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Посещение выставки' %} {% if object %}{{ object.name }}{% endif %}{% endif %}</h1> <h1>{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Посещение выставки' %} {% if object %}{{ object.name }}{% endif %}{% endif %}</h1>
{{ form.errors }}
</div> </div>
{% endblock %} {% endblock %}
@ -150,28 +151,17 @@
<div class="rq-s-line"> <div class="rq-s-line">
<div class="mf-field full-width"> <div class="mf-field full-width">
<input type="text" name="languages" id="id_languages" placeholder="{% trans 'Знание языков' %}"/> {{ form.languages }}
</div> </div>
</div> </div>
<div class="rq-s-line"> <div class="rq-s-line">
<!-- todo: сделать input:text--> <div class="mf-field full-width">
<div class="c-select-box select" data-placeholder="{% trans 'Тематика' %}"> {{ form.themes }}
<div class="csb-selected-items"></div>
<div class="csb-menu-wrap">
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
</ul>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div class="rq-s-line"> <div class="rq-s-line">

@ -50,7 +50,7 @@
</div> </div>
<div class="rq-form service-page" {% if form.errors %}style="display:block"{% endif %}> <div class="rq-form service-page" {% if form.errors %}style="display:block"{% endif %}>
{{ form.errors }} {% comment %}{{ form.errors }}{% endcomment %}
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
<hr /> <hr />
@ -62,11 +62,12 @@
<div class="mf-line cols-2 rq-trans"> <div class="mf-line cols-2 rq-trans">
<div class="mf-field"> <div class="mf-field">
<input id="id_languages" name="languages" placeholder="{% trans 'Знание языков' %}" type="text"> <input id="id_languages" name="languages" placeholder="{% trans 'Знание языков' %}" type="text" value="{{ form.languages.value }}">
</div> </div>
<div class="mf-field"> <div class="mf-field">
<input id="id_themes" name="themes" placeholder="{% trans 'Тематика' %}" type="text"> <input id="id_themes" name="themes" placeholder="{% trans 'Тематика' %}" type="text" value="{{ form.themes.value }}">
</div> </div>
</div> </div>
@ -86,13 +87,21 @@
<label>{% trans 'Даты работы' %}:</label> <label>{% trans 'Даты работы' %}:</label>
<div class="mf-field"> <div class="mf-field">
<div class="period"> <div class="period">
<div class="pwf-field"> <div class="pwf-field validate-field{% if form.fr.errors %} error-field{% endif %}">
<label>{% trans 'с' %}</label> <label>{% trans 'с' %}</label>
{{ form.fr }} {{ form.fr }}
<div class="error-blob">
{{ form.fr.errors }}
</div>
</div> </div>
<div class="pwf-field"> <div class="pwf-field validate-field{% if form.to.errors %} error-field{% endif %}">
<label>{% trans 'по' %}</label> <label>{% trans 'по' %}</label>
{{ form.to }} {{ form.to }}
<div class="error-blob">
{{ form.to.errors }}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -183,7 +192,7 @@
</form> </form>
</div> </div>
<div class="rq-btn-wrap rq-btn-to-hide"> <div class="rq-btn-wrap rq-btn-to-hide rq-to-hide">
<div class="rqb-cols"> <div class="rqb-cols">
<div class="rqb-button"> <div class="rqb-button">

@ -13761,3 +13761,15 @@ hr + .rq-note {
background-position: -74px 0; background-position: -74px 0;
} }
/**************************\
# форма "отправить заявку"
\**************************/
.period .pwf-field .error-blob{
line-height: 18px;
}
.service-page .period .pwf-field.error-field:before{
margin-right: 13px;
margin-top: -8px;
}

@ -577,17 +577,24 @@ if (EXPO.searchBlock){
} }
}; };
// var newData = ['banan','banan2','banan3','banan4','banan5'];
/**
* the ID value of the timer that is set
*/
self.timeout;
self.$inputFilter.attr('autocomplete', 'on'); self.$inputFilter.attr('autocomplete', 'on');
self.$inputFilter.on('keyup', function (event) { self.$inputFilter.on('keyup', function (event) {
text = $(this).val(); text = $(this).val();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
clearTimeout(self.timeout);
if (text.length > 2 && firstComplete){ if (text.length > 2 && firstComplete){
getRequest({'term':text, 'form':form}, self.opt.autoCompleteUrl, requestHandler); self.timeout = setTimeout(function () {
firstComplete = false; getRequest({'term':text, 'form':form}, self.opt.autoCompleteUrl, requestHandler);
firstComplete = false;
}, 1000);
}else if(text.length == 0 && !firstComplete){ }else if(text.length == 0 && !firstComplete){
if(self.$inputFilter.hasClass('ui-autocomplete-input')){ if(self.$inputFilter.hasClass('ui-autocomplete-input')){
@ -1604,17 +1611,24 @@ if (EXPO.searchBlock){
} }
}; };
// var newData = ['banan','banan2','banan3','banan4','banan5'];
/**
* the ID value of the timer that is set
*/
self.timeout;
self.$inputFilter.attr('autocomplete', 'on'); self.$inputFilter.attr('autocomplete', 'on');
self.$inputFilter.on('keyup', function (event) { self.$inputFilter.on('keyup', function (event) {
text = $(this).val(); text = $(this).val();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
clearTimeout(self.timeout);
if (text.length > 2 && firstComplete){ if (text.length > 2 && firstComplete){
getRequest({'term':text, 'form':form}, self.opt.autoCompleteUrl, requestHandler); self.timeout = setTimeout(function () {
firstComplete = false; getRequest({'term':text, 'form':form}, self.opt.autoCompleteUrl, requestHandler);
firstComplete = false;
}, 1000);
}else if(text.length == 0 && !firstComplete){ }else if(text.length == 0 && !firstComplete){
if(self.$inputFilter.hasClass('ui-autocomplete-input')){ if(self.$inputFilter.hasClass('ui-autocomplete-input')){
@ -1996,14 +2010,20 @@ if (EXPO.searchBlock){
} }
} }
}; };
this.completeName = 'autocomplete', this.completeName = 'autocomplete';
this.firstComplete = true; this.firstComplete = true;
this.$field.attr('autocomplete','off'); this.$field.attr('autocomplete','off');
/**
* the ID value of the timer that is set
*/
this.timeout;
//autocomplete behaviour //autocomplete behaviour
self.$field.on('keyup', function (event) { self.$field.on('keyup', function (event) {
var reqObj; var reqObj;
text = $(this).val(); text = $(this).val();
event.stopImmediatePropagation(); event.stopImmediatePropagation();
clearTimeout(self.timeout);
if(self.dataForm){ if(self.dataForm){
reqObj = { reqObj = {
'term':text, 'term':text,
@ -2016,15 +2036,18 @@ if (EXPO.searchBlock){
} }
if(self.opt.anyChar){ if(self.opt.anyChar){
if (text.length > 2){ if (text.length > 2){
getRequest(reqObj, self.opt.autoCompleteUrl, function (data) { self.timeout = setTimeout(function () {
if(self.$field.hasClass('ui-autocomplete-input')){ getRequest(reqObj, self.opt.autoCompleteUrl, function (data) {
self.$field[self.completeName]( "destroy" ); if(self.$field.hasClass('ui-autocomplete-input')){
self.$field[self.completeName]( "destroy" );
}
self.rawData.set(data);
self._initAutoComplete();
self.showList('');
});
}, 1000);
}
self.rawData.set(data);
self._initAutoComplete();
self.showList('');
});
} else if(text.length === 0){ } else if(text.length === 0){
if(self.$field.hasClass('ui-autocomplete-input')){ if(self.$field.hasClass('ui-autocomplete-input')){
self.$field[self.completeName]( "destroy" ); self.$field[self.completeName]( "destroy" );
@ -2034,14 +2057,15 @@ if (EXPO.searchBlock){
} }
}else{ }else{
if (text.length > 2 && firstComplete){ if (text.length > 2 && firstComplete){
getRequest(reqObj, self.opt.autoCompleteUrl, function (data) { self.timeout = setTimeout(function () {
getRequest(reqObj, self.opt.autoCompleteUrl, function (data) {
self.rawData.set(data);
self._initAutoComplete();
self.showList('');
});
firstComplete = false;
}, 1000);
self.rawData.set(data);
self._initAutoComplete();
self.showList('');
// self.DOMcompleteWrap.addClass('full-visible');
});
firstComplete = false;
}else if(text.length == 0 && !firstComplete){ }else if(text.length == 0 && !firstComplete){
if(self.$field.hasClass('ui-autocomplete-input')){ if(self.$field.hasClass('ui-autocomplete-input')){

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