t91: add subscribe button in expo list + fix booking block

stage8
ya_dim4ik 9 years ago
parent 0a363e7af3
commit 93efe3243b
  1. 8
      static/client/css/main.css
  2. 2
      static/client/css_min/main.min.css
  3. 54
      static/client/js/_modules/block.exposition.list.js
  4. 81
      static/client/js/_modules/page.exposition.object.js
  5. 14
      static/client/js/main.js
  6. 14
      static/client/js/vendor.js
  7. 2
      static/client/js_min/_modules/block.exposition.list.min.js
  8. 2
      static/client/js_min/_modules/page.exposition.object.min.js
  9. 4
      static/client/js_min/vendor.min.js
  10. 25
      templates/client/exposition/exposition_detail.html
  11. 14
      templates/client/includes/exposition/exposition_list.html
  12. 23
      templates/client/popups/event_news_subscribe.html

@ -14788,3 +14788,11 @@ h1 .preview_toggle:hover{
font-weight: 500; font-weight: 500;
color: #333; color: #333;
} }
.cli-m-buttons .new_subribe_btn {
float: none;
}
.exposition_booking_block .h-booking ul li:last-child {
margin-right: 0;
}

File diff suppressed because one or more lines are too long

@ -6,13 +6,15 @@ if (EXPO.exposition.list){
EXPO.exposition.list = (function () { EXPO.exposition.list = (function () {
// dependencies // dependencies
var com = EXPO.common; var com = EXPO.common,
$waiter;
// variables // variables
var that = {}; var that = {};
that.opt = {}; //свойства по умолчанию that.opt = {}; //свойства по умолчанию
//private //private
$(function () { $(function () {
$waiter = $('#wait-ajax:not(.absolute)').css({'z-index': '8031'});
}); });
// methods // methods
@ -21,6 +23,56 @@ if (EXPO.exposition.list){
$.extend(this.opt, options); $.extend(this.opt, options);
com.opt.addCalendarText = this.opt.addCalendarText; com.opt.addCalendarText = this.opt.addCalendarText;
com.opt.removeCalendarText = this.opt.removeCalendarText; com.opt.removeCalendarText = this.opt.removeCalendarText;
$('#'+this.opt.event_news_subscribe.id).on("submit", function () {
var formData = $(this).serialize(),
formUrl = $(this).attr("action"),
$form = $(this),
/**
* executes after AJAX get request is complete
* @param data - data recieved from server ex
*/
handler = function (data) {
var clearValue = function () {
$('.err',$form).removeClass("err");
$('.pwf-msg',$form).text('');
};
if (data.success != true){
clearValue();
for (var k in data.errors){
if (data.errors.hasOwnProperty(k)) {
$('input[name="'+k+'"]',$form)
.closest(".required").addClass("err")
.siblings(".pwf-msg").text(data.errors[k]);
}
}
} else {
clearValue();
dataLayer.push({'event': 'event-news-subscribe-form'});
$('input:text',$form).val('');
$('p#success').show();
if (data.sent == true) {
window.location = data.redirect_url;
} else {
window.setTimeout(function () {
$.fancybox.close();
$form
.parents('.pw-body')
.find('#success')
.hide();
}, 1000);
}
}
$waiter.hide();
};
$waiter.show();
com.postRequest(formData,formUrl,handler);
return false;
});
}; };
return that; return that;
}()); }());

@ -105,53 +105,52 @@ if (EXPO.exposition.object){
/** /**
* event news subscribe form validation * event news subscribe form validation
*/ */
$('#'+this.opt.event_news_subscribe.id).on("submit", function () { $(function () {
var formData = $(this).serialize(), $('#'+self.opt.event_news_subscribe.id).on("submit", function () {
formUrl = $(this).attr("action"), var formData = $(this).serialize(),
$form = $(this), formUrl = $(this).attr("action"),
/** $form = $(this),
* executes after AJAX get request is complete /**
* @param data - data recieved from server ex * executes after AJAX get request is complete
*/ * @param data - data recieved from server ex
handler = function (data) { */
var clearValue = function () { handler = function (data) {
$('.err',$form).removeClass("err"); var clearValue = function () {
$('.pwf-msg',$form).text(''); $('.err',$form).removeClass("err");
}; $('.pwf-msg',$form).text('');
if (data.success != true){ };
clearValue(); if (data.success != true){
for (var k in data.errors){ clearValue();
console.log(data.errors.hasOwnProperty(k)); for (var k in data.errors){
console.log(k); if (data.errors.hasOwnProperty(k)) {
if (data.errors.hasOwnProperty(k)) { $('input[name="'+k+'"]',$form)
$('input[name="'+k+'"]',$form) .closest(".required").addClass("err")
.closest(".required").addClass("err") .siblings(".pwf-msg").text(data.errors[k]);
.siblings(".pwf-msg").text(data.errors[k]); }
} }
}
}else{
clearValue();
dataLayer.push({'event': 'event-news-subscribe-form'});
$('input:text',$form).val('');
$('p#success').show();
if (data.sent == true) {
window.location = data.redirect_url;
} else { } else {
window.setTimeout(function () { clearValue();
$.fancybox.close(); dataLayer.push({'event': 'event-news-subscribe-form'});
}, 1000); $('input:text',$form).val('');
} $('p#success').show();
if (data.sent == true) {
window.location = data.redirect_url;
} else {
window.setTimeout(function () {
$.fancybox.close();
}, 1000);
}
} }
$waiter.hide(); $waiter.hide();
}; };
$waiter.show(); $waiter.show();
com.postRequest(formData,formUrl,handler); com.postRequest(formData,formUrl,handler);
return false; return false;
});
}); });
}; };
return that; return that;
}()); }());

@ -81,6 +81,20 @@ function placeInput(width){
var $body = $('body'); var $body = $('body');
var $doc = $(document); var $doc = $(document);
var $event_news_subscribe_form = $('#event-news-subscribe-form'),
$modal_title = $('#pw-event-news-subscribe').find('.pw-title');
$('.new_subribe_btn').on('click', function () {
var $this = $(this),
// Null will be on detail page
name = $this.parents('.cl-item').find('.cli-title a').text() || null;
if (name) {
$modal_title.text($modal_title.text() + ' ' + name);
}
$event_news_subscribe_form.attr('action', $(this).data('url'));
});
$.widget( "custom.catcomplete", $.ui.autocomplete, { $.widget( "custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function( ul, items ) { _renderMenu: function( ul, items ) {

@ -3760,6 +3760,20 @@ function placeInput(width){
var $body = $('body'); var $body = $('body');
var $doc = $(document); var $doc = $(document);
var $event_news_subscribe_form = $('#event-news-subscribe-form'),
$modal_title = $('#pw-event-news-subscribe').find('.pw-title');
$('.new_subribe_btn').on('click', function () {
var $this = $(this),
// Null will be on detail page
name = $this.parents('.cl-item').find('.cli-title a').text() || null;
if (name) {
$modal_title.text($modal_title.text() + ' ' + name);
}
$event_news_subscribe_form.attr('action', $(this).data('url'));
});
$.widget( "custom.catcomplete", $.ui.autocomplete, { $.widget( "custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function( ul, items ) { _renderMenu: function( ul, items ) {

@ -1 +1 @@
var EXPO=EXPO||{};EXPO.exposition=EXPO.exposition||{},EXPO.exposition.list?console.warn("WARNING: EXPO.place.object is already defined!"):EXPO.exposition.list=function(){var t=EXPO.common,e={};return e.opt={},$(function(){}),e.init=function(e){$.extend(this.opt,e),t.opt.addCalendarText=this.opt.addCalendarText,t.opt.removeCalendarText=this.opt.removeCalendarText},e}(); var EXPO=EXPO||{};EXPO.exposition=EXPO.exposition||{},EXPO.exposition.list?console.warn("WARNING: EXPO.place.object is already defined!"):EXPO.exposition.list=function(){var e,t=EXPO.common,s={};return s.opt={},$(function(){e=$("#wait-ajax:not(.absolute)").css({"z-index":"8031"})}),s.init=function(s){$.extend(this.opt,s),t.opt.addCalendarText=this.opt.addCalendarText,t.opt.removeCalendarText=this.opt.removeCalendarText,$("#"+this.opt.event_news_subscribe.id).on("submit",function(){var s=$(this).serialize(),i=$(this).attr("action"),n=$(this),o=function(t){var s=function(){$(".err",n).removeClass("err"),$(".pwf-msg",n).text("")};if(1!=t.success){s();for(var i in t.errors)t.errors.hasOwnProperty(i)&&$('input[name="'+i+'"]',n).closest(".required").addClass("err").siblings(".pwf-msg").text(t.errors[i])}else s(),dataLayer.push({event:"event-news-subscribe-form"}),$("input:text",n).val(""),$("p#success").show(),1==t.sent?window.location=t.redirect_url:window.setTimeout(function(){$.fancybox.close(),n.parents(".pw-body").find("#success").hide()},1e3);e.hide()};return e.show(),t.postRequest(s,i,o),!1})},s}();

@ -1 +1 @@
var EXPO=EXPO||{};EXPO.exposition=EXPO.exposition||{},EXPO.exposition.object?console.warn("WARNING: EXPO.exposition.object is already defined!"):EXPO.exposition.object=function(){var s,t=EXPO.common,e={};return e.opt={},$(function(){s=$("#wait-ajax:not(.absolute)").css({"z-index":"8031"})}),e.init=function(e){$.extend(this.opt,e);var i=this,o=$("."+this.opt.visit.activeClass+", ."+this.opt.visit.passiveClass);t.opt.addCalendarText=this.opt.addCalendarText,t.opt.removeCalendarText=this.opt.removeCalendarText,o.off("click"),o.on("click",function(){return $(this).hasClass("no_auth")||($(this).hasClass(i.opt.visit.activeClass)?($("."+i.opt.visit.activeClass).hide().siblings("."+i.opt.visit.passiveClass).show(),$("#"+i.opt.visit.visitorsListId).append(i.opt.visit.currentHtml),$("#"+i.opt.visit.somebodyId).removeClass("hidden"),$("#"+i.opt.visit.nobodyId).addClass("hidden")):($("."+i.opt.visit.passiveClass).hide().siblings("."+i.opt.visit.activeClass).show(),$("#"+i.opt.visit.visitorsListId).children(".current").remove(),0==$("#"+i.opt.visit.visitorsListId).children().length&&($("#"+i.opt.visit.somebodyId).addClass("hidden"),$("#"+i.opt.visit.nobodyId).removeClass("hidden")))),!1}),$("#"+this.opt.advertise.id).on("submit",function(){var e=$(this).serialize(),i=$(this).attr("action"),o=$(this),r=function(t){var e=function(){$(".err",o).removeClass("err"),$(".pwf-msg",o).text("")};if(t.success!==!0){e();for(var i in t.errors)t.errors.hasOwnProperty(i)&&$('input[name="'+i+'"]',o).closest(".required").addClass("err").siblings(".pwf-msg").text(t.errors[i])}else e(),dataLayer.push({event:"advmemberform"}),$("input:text",o).val(""),$.fancybox.close();s.hide()};return s.show(),t.postRequest(e,i,r),!1}),$("#"+this.opt.event_news_subscribe.id).on("submit",function(){var e=$(this).serialize(),i=$(this).attr("action"),o=$(this),r=function(t){var e=function(){$(".err",o).removeClass("err"),$(".pwf-msg",o).text("")};if(1!=t.success){e();for(var i in t.errors)console.log(t.errors.hasOwnProperty(i)),console.log(i),t.errors.hasOwnProperty(i)&&$('input[name="'+i+'"]',o).closest(".required").addClass("err").siblings(".pwf-msg").text(t.errors[i])}else e(),dataLayer.push({event:"event-news-subscribe-form"}),$("input:text",o).val(""),$("p#success").show(),1==t.sent?window.location=t.redirect_url:window.setTimeout(function(){$.fancybox.close()},1e3);s.hide()};return s.show(),t.postRequest(e,i,r),!1})},e}(); var EXPO=EXPO||{};EXPO.exposition=EXPO.exposition||{},EXPO.exposition.object?console.warn("WARNING: EXPO.exposition.object is already defined!"):EXPO.exposition.object=function(){var s,t=EXPO.common,i={};return i.opt={},$(function(){s=$("#wait-ajax:not(.absolute)").css({"z-index":"8031"})}),i.init=function(i){$.extend(this.opt,i);var e=this,o=$("."+this.opt.visit.activeClass+", ."+this.opt.visit.passiveClass);t.opt.addCalendarText=this.opt.addCalendarText,t.opt.removeCalendarText=this.opt.removeCalendarText,o.off("click"),o.on("click",function(){return $(this).hasClass("no_auth")||($(this).hasClass(e.opt.visit.activeClass)?($("."+e.opt.visit.activeClass).hide().siblings("."+e.opt.visit.passiveClass).show(),$("#"+e.opt.visit.visitorsListId).append(e.opt.visit.currentHtml),$("#"+e.opt.visit.somebodyId).removeClass("hidden"),$("#"+e.opt.visit.nobodyId).addClass("hidden")):($("."+e.opt.visit.passiveClass).hide().siblings("."+e.opt.visit.activeClass).show(),$("#"+e.opt.visit.visitorsListId).children(".current").remove(),0==$("#"+e.opt.visit.visitorsListId).children().length&&($("#"+e.opt.visit.somebodyId).addClass("hidden"),$("#"+e.opt.visit.nobodyId).removeClass("hidden")))),!1}),$("#"+this.opt.advertise.id).on("submit",function(){var i=$(this).serialize(),e=$(this).attr("action"),o=$(this),r=function(t){var i=function(){$(".err",o).removeClass("err"),$(".pwf-msg",o).text("")};if(t.success!==!0){i();for(var e in t.errors)t.errors.hasOwnProperty(e)&&$('input[name="'+e+'"]',o).closest(".required").addClass("err").siblings(".pwf-msg").text(t.errors[e])}else i(),dataLayer.push({event:"advmemberform"}),$("input:text",o).val(""),$.fancybox.close();s.hide()};return s.show(),t.postRequest(i,e,r),!1}),$(function(){$("#"+e.opt.event_news_subscribe.id).on("submit",function(){var i=$(this).serialize(),e=$(this).attr("action"),o=$(this),r=function(t){var i=function(){$(".err",o).removeClass("err"),$(".pwf-msg",o).text("")};if(1!=t.success){i();for(var e in t.errors)t.errors.hasOwnProperty(e)&&$('input[name="'+e+'"]',o).closest(".required").addClass("err").siblings(".pwf-msg").text(t.errors[e])}else i(),dataLayer.push({event:"event-news-subscribe-form"}),$("input:text",o).val(""),$("p#success").show(),1==t.sent?window.location=t.redirect_url:window.setTimeout(function(){$.fancybox.close()},1e3);s.hide()};return s.show(),t.postRequest(i,e,r),!1})})},i}();

File diff suppressed because one or more lines are too long

@ -127,7 +127,9 @@
</div> </div>
<div class="event_org"> <div class="event_org">
<a href="#pw-event-news-subscribe" class="button pw-open new_subribe_btn green"><i class="fa fa-at"></i>&nbsp;{% trans 'Подписаться на новости' %}</a> <a href="#pw-event-news-subscribe" class="button pw-open new_subribe_btn green" data-url="{% url 'events:subscribe' object.event_type object.url %}">
<i class="fa fa-at"></i>&nbsp;{% trans 'Напомнить о событии' %}
</a>
</div> </div>
</div> </div>
@ -301,8 +303,9 @@
</div> </div>
<hr> <hr>
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %} <div class="exposition_booking_block">
{% include 'client/includes/booking_block.html' with city=exposition.city place=exposition.place event=exposition %}
</div>
{# Планируют быть #} {# Планируют быть #}
<div class="conf_visitors"> <div class="conf_visitors">
{% with visitors=exposition.users.all|slice:":17" %} {% with visitors=exposition.users.all|slice:":17" %}
@ -484,16 +487,7 @@
<a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/city/{{ exposition.city.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a> <a href="{{ exposition.catalog }}theme/{{ exposition.theme.all.0.url }}/city/{{ exposition.city.url }}/">{% trans "Выставки по тематике " %}&laquo;{{ exposition.theme.all.0.name|capfirst }}&raquo; {% if request.LANGUAGE_CODE == 'ru' and exposition.city.inflect %}{{ exposition.city.inflect }}{% else %}{% trans 'in' %} {{ exposition.city.name }}{% endif %}</a>
{% endif %} {% endif %}
</div> </div>
{% endblock %}
{% block content_text %}{% endblock %}
{% block popup %}
{% include 'client/popups/advertise_member.html' with form=advertising_form %}
{% include 'client/popups/event_news_subscribe.html' %}
{% endblock %}
{% block scripts %}
{% if request.GET.debug == '1' %} {% if request.GET.debug == '1' %}
<script src="{% static 'client/js/_modules/page.exposition.object.js' %}"></script> <script src="{% static 'client/js/_modules/page.exposition.object.js' %}"></script>
{% else %} {% else %}
@ -561,4 +555,11 @@
}) })
</script> </script>
{% endblock %} {% endblock %}
{% block content_text %}{% endblock %}
{% block popup %}
{% include 'client/popups/advertise_member.html' with form=advertising_form %}
{% include 'client/popups/event_news_subscribe.html' %}
{% endblock %}
{% endblock %} {% endblock %}

@ -79,6 +79,11 @@
<div class="cli-m-buttons"> <div class="cli-m-buttons">
{% include 'client/includes/exposition/services.html' with obj=obj %} {% include 'client/includes/exposition/services.html' with obj=obj %}
{% include 'client/includes/calendar_button.html' with obj=obj%} {% include 'client/includes/calendar_button.html' with obj=obj%}
<a href="#pw-event-news-subscribe" class="button pw-open new_subribe_btn green" data-url="{% url 'events:subscribe' obj.event_type obj.url %}">
<i class="fa fa-at"></i>&nbsp;{% trans 'Напомнить о событии' %}
</a>
{% if request.user.is_admin %} {% if request.user.is_admin %}
<div class="note-wrap"> <div class="note-wrap">
<a class="button green " href="/admin/exposition/{{ obj.url }}/">{% trans 'изменить' %}</a> <a class="button green " href="/admin/exposition/{{ obj.url }}/">{% trans 'изменить' %}</a>
@ -130,6 +135,10 @@
{% endif %} {% endif %}
{% endwith %} {% endwith %}
{% block popup %}
{% include 'client/popups/event_news_subscribe.html' %}
{% endblock %}
{% 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>
@ -140,7 +149,10 @@
<script> <script>
EXPO.exposition.list.init({ EXPO.exposition.list.init({
addCalendarText:"{% trans 'В расписание' %}", addCalendarText:"{% trans 'В расписание' %}",
removeCalendarText:"{% trans 'Из расписания' %}" removeCalendarText:"{% trans 'Из расписания' %}",
event_news_subscribe: {
id: 'event-news-subscribe-form'
}
}); });
</script> </script>
{% endblock %} {% endblock %}

@ -2,18 +2,17 @@
{% load i18n %} {% load i18n %}
<div id="pw-event-news-subscribe" class="popup-window event-news-subscribe-modal" style="display: none;"> <div id="pw-event-news-subscribe" class="popup-window event-news-subscribe-modal" style="display: none;">
<section> <section>
<header class="clearfix">
<header class="clearfix"> <div class="pw-title">{% trans 'Подписка на новости' %} {{ object.name }}</div>
<div class="pw-title">{% trans 'Подписка на новости' %} {{ object.name }}</div> </header>
</header> <div class="pw-body clearfix">
<div class="pw-body clearfix">
<p id="success" style="display: none;"> <p id="success" style="display: none;">
{% trans 'Вы были успешно подписаны!' %} {% trans 'Вы были успешно подписаны!' %}
</p> </p>
<form id="event-news-subscribe-form" method="post" class="pw-form" action="{% url 'events:subscribe' object.event_type object.url %}"> <form id="event-news-subscribe-form" method="post" class="pw-form" action=".{# url 'events:subscribe' object.event_type object.url #}">
{% csrf_token %} {% csrf_token %}
{% if not user.is_authenticated or not user.contact_set.exists %} {% if not user.is_authenticated or not user.contact_set.exists %}
<div class="pwf-line"> <div class="pwf-line">
<div class="pwf-field required"> <div class="pwf-field required">
<input type="email" name="email" id="id_email" placeholder="Email"> <input type="email" name="email" id="id_email" placeholder="Email">
@ -26,12 +25,12 @@
</div> </div>
<div class="pwf-msg"></div> <div class="pwf-msg"></div>
</div> </div>
{% endif %} {% endif %}
<div class="pwf-buttons-line"> <div class="pwf-buttons-line">
<button type="submit" class="icon-check">{% trans 'Подписаться' %}</button> <button type="submit" class="icon-check">{% trans 'Подписаться' %}</button>
</div> </div>
</form> </form>
</div> </div>
</section> </section>
</div> </div>

Loading…
Cancel
Save