diff --git a/templates/client/accounts/feed.html b/templates/client/accounts/feed.html index b4974111..4237fb73 100644 --- a/templates/client/accounts/feed.html +++ b/templates/client/accounts/feed.html @@ -28,7 +28,7 @@
~~text~~
- x + x
@@ -41,7 +41,7 @@
~~text~~
- x + x
@@ -106,7 +106,7 @@ filterInputId: 'filter-place-filter-input', modalTrigger: 'filter-place-modal-trigger', selectedItemsContainer: 'filter-csb-selected-items', - clearAllButtonClass: 'clear-all-button', + clearAllButtonClass: 'modal-clear', applyBtnClass: 'modal-approve', tagsBoxId: 'filter-places-tags', deleteTagClass: 'csbs-del', @@ -129,7 +129,7 @@ subjectTriggerWrapId: 'filter-subj-checks', //switched by default defaultOn: ['f-s-exhibition-check', 'f-s-conference-check'], - clearAllButtonClass: 'clear-all-button', + clearAllButtonClass: 'modal-clear', applyBtnClass: 'modal-approve', tagsBoxId: 'filter-subject-tags', deleteTagClass: 'csbs-del', diff --git a/templates/client/static_client/js/_modules/block.search.js b/templates/client/static_client/js/_modules/block.search.js index 7975dfb6..3762241d 100644 --- a/templates/client/static_client/js/_modules/block.search.js +++ b/templates/client/static_client/js/_modules/block.search.js @@ -1423,7 +1423,7 @@ if (EXPO.searchBlock){ } } $('.level.active',this.$modal).removeClass('active'); - this._refreshText() + this._refreshText(); self.selectedWrap.removeClass('visible'); }, /** diff --git a/templates/client/static_client/js/_modules/page.events.feed.js b/templates/client/static_client/js/_modules/page.events.feed.js index c62afba8..ec85b645 100644 --- a/templates/client/static_client/js/_modules/page.events.feed.js +++ b/templates/client/static_client/js/_modules/page.events.feed.js @@ -312,12 +312,9 @@ if (EXPO.events.feed) { } return false; }); - $('#'+self.opt.deleteId).on('click',function () { - $('.' + self.opt.deleteTagClass, $modal).trigger('click'); - }); - $('.clear', $modal).on('click', function () { - self.resetList(); - return false; + $('.del-on-page').on('click',function () { + var dataCheckboxId = $(this).attr('data-checkbox-id'); + $('.' + self.opt.deleteTagClass+'[data-checkbox-id="'+dataCheckboxId+'"]', $modal).trigger('click'); }); self._autocompleteInit(); $('.' + applyBtnClass, $modal).on('click', function () { @@ -326,8 +323,10 @@ if (EXPO.events.feed) { }); // кнопка "очистить параметры" - $modalTrigger.siblings('.' + self.opt.clearAllButtonClass).on('click', function () { + $('.'+self.opt.clearAllButtonClass,$modal).on('click', function (e) { + e.preventDefault(); self.resetList(); + return false; }); }); }; @@ -665,14 +664,17 @@ if (EXPO.events.feed) { var self = this; for (var key in self.itemsSelected) { if (self.itemsSelected.hasOwnProperty(key)) { - $('#' + key, self.$selfContainer).prop('checked', false).trigger('change'); + $('#'+key, self.$selfContainer).prop('checked', false).closest('.custom-radio-check').removeClass('active'); dna.destroy(self.itemsSelected[key]); + dna.destroy(self.tagsBoxItems[key]); + } } - $('.sublist', self.$modalInst).addClass('hidden'); - $('.level', self.$modalInst).removeClass('active'); - self.$selectedItemsWrap.removeClass('visible'); + $('.level.active',this.$modal).removeClass('active'); + this._refreshLabel(); + + this.$selectedItemsWrap.removeClass('visible'); }, /** * render label text, if there is no selected element then text will be default @@ -689,6 +691,7 @@ if (EXPO.events.feed) { }, // кнопка применить applyHandler: function (it) { + EXPO.events.feed.modalWindow.close(); } @@ -827,39 +830,42 @@ if (EXPO.events.feed) { DOMParentRow = com.closest(this, itemClass), - DOMParentItem = com.hasClass(DOMParentRow, highestItemClass) == false ? com.closest(DOMParentRow.parentNode, itemClass) : DOMParentRow, - DOMParentCheckbox = DOMParentItem.querySelector('.' + checkboxClass), - DOMSublist = DOMParentItem.querySelector('.' + sublistClass), - DOMSublistInner = DOMParentRow.querySelector('.' + sublistClass), + DOMParentItem = com.hasClass(DOMParentRow, highestItemClass) == false?com.closest(DOMParentRow.parentNode, itemClass):DOMParentRow, + DOMParentCheckbox = DOMParentItem.querySelector('.'+checkboxClass), + DOMSublist = DOMParentItem.querySelector('.'+sublistClass), + DOMSublistInner = DOMParentRow.querySelector('.'+sublistClass), DOMHighestItem = com.closest(this, highestItemClass), - DOMHighestCheckbox = DOMHighestItem.querySelector('.' + checkboxClass), + DOMHighestCheckbox = DOMHighestItem.querySelector('.'+checkboxClass), + DOMHighestSublist = DOMHighestItem.querySelector('.'+sublistClass), + selectSublist = function (it) { var DOMParentItem = com.closest(it, itemClass) || this, - DOMSublist = DOMParentItem.querySelector('.' + sublistClass); - $('.' + checkboxClass, DOMSublist).each(function () { + DOMSublist = DOMParentItem.querySelector('.'+sublistClass); + $('.'+checkboxClass, DOMSublist).each(function () { selectItem(this); }); }, unSelectSublist = function (it) { var DOMParentItem = com.closest(it, itemClass) || this, - DOMSublist = DOMParentItem.querySelector('.' + sublistClass); - $('.' + checkboxClass, DOMSublist).each(function () { + DOMSublist = DOMParentItem.querySelector('.'+sublistClass); + $('.'+checkboxClass, DOMSublist).each(function () { unSelectItem(this); + }); }, selectParent = function (it) { var DOMParentRow = com.closest(it, itemClass), DOMParentItem; - if (com.hasClass(DOMParentRow, 'level1')) { + if(com.hasClass(DOMParentRow,'level1')){ DOMParentItem = DOMParentRow; - } else { + }else{ DOMParentItem = com.closest(DOMParentRow.parentNode, itemClass); } - com.addClass(DOMParentItem.querySelector('.' + fakeCheckboxClass), activeClass); - DOMParentItem.querySelector('.' + checkboxClass).checked = true; + com.addClass(DOMParentItem.querySelector('.'+fakeCheckboxClass), activeClass); + DOMParentItem.querySelector('.'+checkboxClass).checked = true; //it.selected = true; @@ -868,8 +874,8 @@ if (EXPO.events.feed) { var DOMParentRow = com.closest(it, itemClass), DOMParentItem = com.closest(DOMParentRow.parentNode, itemClass) || DOMParentRow; - com.removeClass(DOMParentItem.querySelector('.' + fakeCheckboxClass), activeClass); - DOMParentItem.querySelector('.' + checkboxClass).checked = false; + com.removeClass(DOMParentItem.querySelector('.'+fakeCheckboxClass), activeClass); + DOMParentItem.querySelector('.'+checkboxClass).checked = false; //it.checked = false; }, @@ -880,97 +886,110 @@ if (EXPO.events.feed) { }, unSelectItem = function (it) { - var itFakeCheckbox = com.closest(it, fakeCheckboxClass); + var itFakeCheckbox = com.closest(it, fakeCheckboxClass), + DOMitem = com.closest(it, itemClass); com.removeClass(itFakeCheckbox, activeClass); it.checked = false; + // if there is children items + if(DOMitem.querySelector('.'+sublistClass) && !com.hasClass(DOMitem,highestItemClass)){ + unSelectSublist(it); + } }, allChildrenSelected = function () { //var DOMselected = DOMSublist.querySelectorAll('.'+checkboxClass+':checked'), - var DOMSublistParent = com.closest(DOMSublist, sublistClass), - $selected = $(DOMSublist).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass + ':checked'), + var DOMSublistParent = com.closest(DOMSublist,sublistClass), + $selected = $(DOMSublist).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass+':checked'), selectedCount = $selected.length, //allCount = DOMSublist.querySelectorAll('.'+checkboxClass).length; - allCount = $(DOMSublist).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass).length; + allCount = $(DOMSublist).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass).length; - if (allCount == selectedCount && selectedCount != 0) { + if(allCount == selectedCount && selectedCount != 0){ return true; - } else { + } else{ return false; } }, parentSelected = function () { - var parentCheckbox = DOMParentItem.querySelector('.' + checkboxClass); - if (parentCheckbox.checked) { + var parentCheckbox = DOMParentItem.querySelector('.'+checkboxClass); + if(parentCheckbox.checked){ return true; - } else { + }else{ return false; } }, - // Функционал добавления тегов: если есть в панели выбранный элемент либо его дочерние то удалить эти эдементы и разместить выбранный; иначе разместить выбранные. + // Функционал добавления тегов: если есть в панели выбранный элемент либо его дочерние то удалить эти эдементы; refreshTags = function (it) { - var DOMSublist = com.closest(it, sublistClass); - var DOMItem = com.closest(it, itemClass); - var DOMSublistInner = DOMItem.querySelector('.' + sublistClass); - var DOMAllTags = DOMTagsWrapper.querySelectorAll('.' + tagClass); + var DOMSublist = com.closest(it,sublistClass); + var DOMItem = com.closest(it,itemClass); + var DOMSublistInner = DOMItem.querySelector('.'+sublistClass); + var DOMAllTags = DOMTagsWrapper.querySelectorAll('.'+tagClass); var ARRsublist; - var ARRsublistChildren = DOMSublist.querySelector('.' + sublistClass) ? $('.' + checkboxClass + ':checked', DOMSublist.querySelector('.' + sublistClass)) : null; - var ARRsublistChildrenLength = ARRsublistChildren ? ARRsublistChildren.length : null; + var ARRsublistChildren = DOMSublist.querySelector('.'+sublistClass)?$('.'+checkboxClass+':checked',DOMSublist.querySelector('.'+sublistClass)):null; + var ARRsublistChildrenLength = ARRsublistChildren?ARRsublistChildren.length:null; var ARRSublistIds = []; var ARRAllTagsIds = []; var allTagsLength = 0; var sublistIdsLength = 0; var itId = it.getAttribute('id'); - var i = 0, j = 0, t = 0, tmp, k = 0; + var i = 0, j= 0, t= 0, tmp, k = 0; var tagId; - var tagText = DOMParentRow.querySelector('.' + triggerClass).innerHTML; + var tagText = DOMParentRow.querySelector('.'+triggerClass).innerHTML; // если есть дочерние элементы - if (DOMSublistInner) { - ARRsublist = $(DOMSublistInner).children('li').children('.' + fakeCheckboxClass).find('.' + checkboxClass + ':checked') + if(DOMSublistInner){ + ARRsublist = $(DOMSublistInner).children('li').children('.'+fakeCheckboxClass).find('.'+checkboxClass+':checked') //получаем массив id жлементовЮ для которых есть тег - for (k; k < ARRsublist.length; k++) { + for(k; k < ARRsublist.length; k++){ tmp = ARRsublist[k].getAttribute('id'); ARRSublistIds.push(tmp); } //очистк - for (t; t < DOMAllTags.length; t++) { - tmp = DOMAllTags[t].querySelector('.' + tagButtonClass).getAttribute(tagIdAttribute); - if (tmp != '~~id~~') { + for(t; t2&&d?(n({term:t,form:l},o.opt.autoCompleteUrl,u),d=!1):0!=t.length||d||o.$inputFilter.hasClass("ui-autocomplete-input")&&(o.$inputFilter.autocomplete("destroy"),d=!0),!1}).click(function(){return!1})},_renderSublist:function(e,t,i){var n=this,s=0,a=t+"-sub",o=function(e){if(e.length){for(n.sublist[a]={},s;sS;S++)for(c=y[S],T=0;x>T;T++)c==C[T]&&B(s[T]);for(S=0;_>S;S++)c=y[S],c==I&&B(i)}else for(S=0;_>S;S++)c=y[S],c==I&&B(I)},B=function(e){var t=e.getAttribute("id");i._destroyTag(t),A()},M=function(e){var s=t.closest(e,n),a=s.querySelector("."+p),r=a.innerHTML,o=e.getAttribute("id"),l={id:o,text:r};i._addTag(o,l),A()},A=function(){o.children("."+d).length&&"~~id~~"!=o.children("."+d)[0].getAttribute(f)?o.addClass("visible"):o.removeClass("visible")},F=function(){var t=$(b).children("li").children("."+e).find("."+r+":checked");t.each(function(){M(this)})},E=function(){var t=$(b).children("li").children("."+e).find("."+r+":checked");t.each(function(){B(this)})};this.checked?(w()?(I(this),T(this),P(v),M(v),E(b),v.getAttribute("id")!=y.getAttribute("id")||y.checked||(T(y),P(y),M(y))):(T(this),P(this),M(this)),k&&_(this)):(D()?(S(this),O(this),P(v),B(v),F(b),y.checked&&(O(y),P(y),B(y))):(O(this),P(this),B(this)),k&&x(this)),u()}),$("."+i.opt.deleteTagClass,s).on("click",function(){var e=$(this).attr("data-checkbox-id"),t=$("#"+e);return t.prop("checked",!1),t.trigger("change"),i._refreshLabel(),o.children(".dna-clone").length||o.removeClass("visible"),!1}),$("#"+i.opt.deleteId).on("click",function(){$("."+i.opt.deleteTagClass,s).trigger("click")}),$(".clear",s).on("click",function(){return i.resetList(),!1}),$(".q-sel a",s).on("click",function(){var e=$(this),t=e.attr("data-name"),s=e.attr("data-id"),a={name:t,id:s},r=function(e){i._loadParentTree(e,function(){i._checkCheckBox(s)})};return n(a,i.opt.getParentUrl,r),!1}),$("."+d,s).on("click",function(){return i.applyHandler(this),!1}),c.siblings("."+i.opt.clearAllButtonClass).on("click",function(){i.resetList()})})};return c.prototype={_getAjax:function(e,t){var i=this;e||(e=""),$.ajax({type:"GET",url:i.opt.ajaxUrl,data:e,success:function(e){return"function"!=typeof t?(i.rawData=e,e):(i.rawData=e,void t(e))}})},_renderSublist:function(e,t,i){var n=this,s=0,a=t+"-sub",o=function(e){if(e.length){for(n.curDNA[a]={},s;s2&&c?(r.show(),n({term:t,form:o},a.opt.autoCompleteUrl,h),c=!1):0!=t.length||c||a.$inputFilter.hasClass("ui-autocomplete-input")&&(a.$inputFilter.autocomplete("destroy"),c=!0),!1}).click(function(){return!1})},_loadParentTree:function(e,t,i){var n,s,o,l,c=this,d=e,h=$("#id_"+c.opt.prefix+d.id),u=function(e){var n=$("#id_"+c.opt.prefix+d.id),h=function(){r.hide(),i||0===i?t(i):t()};r.hide(),n.length&&a(c.curDNA[s+"-sub"])==e&&(o={name:d.name,id:d.id},r.show(),l=$("#id_"+c.opt.prefix+d.id).closest(".level").children(".trigger").attr("data-template-id"),c._renderNested(o,h,l,d.id))},p=function(){r.hide(),i||0===i?t(i):t()};r.show(),d.hasOwnProperty("parent")?h.length?(o={name:d.name,id:d.id},l=h.closest(".level").children(".trigger").attr("data-template-id"),c._renderNested(o,function(){r.hide(),t()},l,d.id)):(n={name:d.parent.name,id:d.parent.id},s=$("#id_"+c.opt.prefix+d.parent.id).closest(".level").children(".trigger").attr("data-template-id"),c._renderSublist(n,s,u)):(n={name:d.name,id:d.id},s=$("#id_"+c.opt.prefix+d.id).closest(".level").children(".trigger").attr("data-template-id"),c._renderSublist(n,s,p))},applyHandler:function(){},_refreshLabel:function(){var e=this.selectedWrap.children().length;this.$label.text(this.$label.attr(e?"data-selected":"data-default"))}},e.init=function(e){$.extend(this.opt,e);var n=this,s=function(){$(n.DOMform).find('input[name="~~name~~"]').remove()};"None"!=this.opt.searchData&&this.opt.searchData&&(this.previousSearch=JSON.parse(this.opt.searchData)),this.DOMform=document.getElementById(this.opt.formId),this.DOMhint=document.getElementById(this.opt.filter.hintId),$(this.DOMform).on("submit",function(){s()}),this.DOMapplyButton=document.getElementById(this.opt.applyButtonId),this.filterPane=new i(this.opt.filter),$("#"+this.opt.filter.buttonId).on("click",function(){return t.hasClass(this,n.opt.activeClass)?(t.removeClass(this,n.opt.activeClass),n.filterPane.hide()):(t.addClass(this,n.opt.activeClass),n.filterPane.show()),!1}),$("#"+n.opt.bodyId+" ."+n.opt.modalTriggerClass).on("click",function(e){return e.preventDefault(),n.modalWindow.pullData(this.getAttribute("href")),n.modalWindow.open(),!1}),$("#"+n.opt.applyButtonId).on("click",function(){return $(n.DOMform).submit(),!1}),this.modalWindow=new t.Modal(n.opt.modal),this.placesModal=new c(n.opt.place),this.subjModal=new l(n.opt.subject),this.placesModal.applyHandler=function(){n.modalWindow.close(),$(n.DOMform).submit()},this.subjModal.applyHandler=function(){n.modalWindow.close(),$(n.DOMform).submit()},$(function(){if(n.previousSearch.inputs.length){$(n.DOMhint).hide();for(var e=0;e2&&d?(n({term:t,form:c},o.opt.autoCompleteUrl,u),d=!1):0!=t.length||d||o.$inputFilter.hasClass("ui-autocomplete-input")&&(o.$inputFilter.autocomplete("destroy"),d=!0),!1}).click(function(){return!1})},_renderSublist:function(e,t,i){var n=this,s=0,a=t+"-sub",o=function(e){if(e.length){for(n.sublist[a]={},s;sT;T++)for(h=_[T],O=0;S>O;O++)h==C[O]&&A(o[O]);for(T=0;x>T;T++)h=_[T],h==I&&A(i);b.querySelectorAll(".final-tire")&&$("."+e+"."+s,b.querySelectorAll(".final-tire")).each(function(){A($("."+r,this)[0])})}else for(T=0;x>T;T++)h=_[T],h==I&&A(I)},A=function(e){var t=e.getAttribute("id");i._destroyTag(t),q()},M=function(e){var s=t.closest(e,n),a=s.querySelector("."+p),r=a.innerHTML,o=e.getAttribute("id"),c={id:o,text:r};i._addTag(o,c),q()},q=function(){o.find("."+u).length&&"~~id~~"!=o.find("."+u)[0].getAttribute(f)?o.addClass("visible"):o.removeClass("visible")},F=function(t){var i=$(t).children("li").children("."+e).find("."+r+":checked");i.each(function(){M(this)})},E=function(){var t=$(b).children("li").children("."+e).find("."+r+":checked");t.each(function(){A(this)})};i.strictMode?this.checked?(O(this),D(this),M(this)):(P(this),D(this),A(this)):this.checked?($(k).find("."+r)[0]&&k&&"~~id~~"!=$(k).find("."+r)[0].value&&D(this),w()?(I(this),O(this),D(m),M(m),E(b),m.getAttribute("id")!=C.getAttribute("id")||C.checked||(O(C),D(C),M(C))):(O(this),D(this),M(this)),k&&x(this)):(B()?(T(this),P(this),D(m),A(m),F(b),C.checked&&(P(C),A(C),F(_))):(P(this),D(this),A(this)),k&&(S(this),D(this))),h()}),$("."+i.opt.deleteTagClass,s).on("click",function(){var e=$(this).attr("data-checkbox-id"),t=$("#"+e);return t.prop("checked",!1),t.trigger("change"),i._refreshLabel(),o.children(".dna-clone").length||o.removeClass("visible"),!1}),$(".del-on-page").on("click",function(){var e=$(this).attr("data-checkbox-id");$("."+i.opt.deleteTagClass+'[data-checkbox-id="'+e+'"]',s).trigger("click")}),$(".clear",s).on("click",function(){return i.resetList(),!1}),$(".q-sel a",s).on("click",function(){var e=$(this),t=e.attr("data-name"),s=e.attr("data-id"),a={name:t,id:s},r=function(e){i._loadParentTree(e,function(){i._checkCheckBox(s)})};return n(a,i.opt.getParentUrl,r),!1}),$("."+l,s).on("click",function(){return i.applyHandler(this),!1}),$("."+i.opt.clearAllButtonClass,s).on("click",function(e){return e.preventDefault(),i.resetList(),!1})})};return l.prototype={_getAjax:function(e,t){var i=this;e||(e=""),$.ajax({type:"GET",url:i.opt.ajaxUrl,data:e,success:function(e){return"function"!=typeof t?(i.rawData=e,e):(i.rawData=e,void t(e))}})},_renderSublist:function(e,t,i){var n=this,s=0,a=t+"-sub",o=function(e){if(e.length){for(n.curDNA[a]={},s;s2&&l?(r.show(),n({term:t,form:o},a.opt.autoCompleteUrl,h),l=!1):0!=t.length||l||a.$inputFilter.hasClass("ui-autocomplete-input")&&(a.$inputFilter.autocomplete("destroy"),l=!0),!1}).click(function(){return!1})},_loadParentTree:function(e,t,i){var n,s,o,c,l=this,d=e,h=$("#id_"+l.opt.prefix+d.id),u=function(e){var n=$("#id_"+l.opt.prefix+d.id),h=function(){r.hide(),i||0===i?t(i):t()};r.hide(),n.length&&a(l.curDNA[s+"-sub"])==e&&(o={name:d.name,id:d.id},r.show(),c=$("#id_"+l.opt.prefix+d.id).closest(".level").children(".trigger").attr("data-template-id"),l._renderNested(o,h,c,d.id))},p=function(){r.hide(),i||0===i?t(i):t()};r.show(),d.hasOwnProperty("parent")?h.length?(o={name:d.name,id:d.id},c=h.closest(".level").children(".trigger").attr("data-template-id"),l._renderNested(o,function(){r.hide(),t()},c,d.id)):(n={name:d.parent.name,id:d.parent.id},s=$("#id_"+l.opt.prefix+d.parent.id).closest(".level").children(".trigger").attr("data-template-id"),l._renderSublist(n,s,u)):(n={name:d.name,id:d.id},s=$("#id_"+l.opt.prefix+d.id).closest(".level").children(".trigger").attr("data-template-id"),l._renderSublist(n,s,p))},applyHandler:function(){EXPO.events.feed.modalWindow.close()},_refreshLabel:function(){var e=this.selectedWrap.children().length;this.$label.text(this.$label.attr(e?"data-selected":"data-default"))}},e.init=function(e){$.extend(this.opt,e);var n=this,s=function(){$(n.DOMform).find('input[name="~~name~~"]').remove()};"None"!=this.opt.searchData&&this.opt.searchData&&(this.previousSearch=JSON.parse(this.opt.searchData)),this.DOMform=document.getElementById(this.opt.formId),this.DOMhint=document.getElementById(this.opt.filter.hintId),$(this.DOMform).on("submit",function(){s()}),this.DOMapplyButton=document.getElementById(this.opt.applyButtonId),this.filterPane=new i(this.opt.filter),$("#"+this.opt.filter.buttonId).on("click",function(){return t.hasClass(this,n.opt.activeClass)?(t.removeClass(this,n.opt.activeClass),n.filterPane.hide()):(t.addClass(this,n.opt.activeClass),n.filterPane.show()),!1}),$("#"+n.opt.bodyId+" ."+n.opt.modalTriggerClass).on("click",function(e){return e.preventDefault(),n.modalWindow.pullData(this.getAttribute("href")),n.modalWindow.open(),!1}),$("#"+n.opt.applyButtonId).on("click",function(){return $(n.DOMform).submit(),!1}),this.modalWindow=new t.Modal(n.opt.modal),this.placesModal=new l(n.opt.place),this.subjModal=new c(n.opt.subject),$(function(){if(n.previousSearch.inputs.length){$(n.DOMhint).hide();for(var e=0;e