%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/templates/landing24/assets/js/helpers/ |
Current File : //home/bitrix/www/bitrix/templates/landing24/assets/js/helpers/gallery_cards_init.js |
;(function () { "use strict"; BX.addCustomEvent("BX.Landing.Block:init", function (event) { var gallery = event.block.querySelector(event.makeRelativeSelector(".js-gallery-cards")); if (gallery !== null) { window["landingGalleresCards" + event.block.id] = new LandingGalleryCards(gallery, event.block); window["landingGalleresCards" + event.block.id].initImages(); } }); BX.addCustomEvent("BX.Landing.Block:Node:update", function (event) { if (typeof(window["landingGalleresCards" + event.block.id]) != 'undefined') { var gallery = event.block.querySelector(event.makeRelativeSelector(".js-gallery-cards")); if (gallery !== null && gallery.contains(event.node)) { window["landingGalleresCards" + event.block.id].reinitImage(event.node); } } }); var LandingGalleryCards = function (gallery, block) { this.block = block; this.gallery = gallery; this.uniqId = Math.random().toString(16).substr(2, 8); }; LandingGalleryCards.prototype = { dataFancybox: 'data-fancybox', dataFancyboxInitied: 'data-fancybox-initied', dataFancyboxTitle: 'data-caption', // create A around the image, need to fancybox popup addOuterLink: function (image) { var src = image.getAttribute('src'); // BX.Landing.getBackgroundUrl(); if (src != null) { var parent = BX.findParent(image); // find all children, not only image! var childs = BX.findChild(parent,{},false,true); var childs = Object.keys(childs).map(function(key) { return childs[key]; }); var aParams = { 'attrs': { 'href': src }, 'children': childs }; aParams.attrs[this.dataFancybox] = BX.data(image, this.dataFancybox.replace('data-', '')) + '_' + this.uniqId; // add title to link var alt = image.getAttribute('alt'); if (alt != null) { aParams.attrs[this.dataFancyboxTitle] = alt; } // remove data-attribute to disable gallery on <img> var imageAdjutsParams = {'attrs': {}}; imageAdjutsParams.attrs[this.dataFancybox] = ""; imageAdjutsParams.attrs[this.dataFancyboxInitied] = "Y"; BX.adjust(image, imageAdjutsParams); // add img with outer link instead BX.adjust(parent, {'children': [BX.create('a', aParams)]}); } }, initImages: function () { var images = BX.findChild(this.gallery, {'attribute': this.dataFancybox}, true, true); images.forEach(BX.delegate(function (image) { if(!this.isImageInitied(image)) { this.addOuterLink(image); } }, this)); }, reinitImage: function (image) { // only if card has gallery image and image has outer link if (this.isImageInitied(image)) { var src = image.getAttribute('src'); if (src != null) { // find outer link var outer = BX.findParent(image, { 'tag': 'a', 'attribute': [this.dataFancybox] }); if (outer !== null) { var outerParams = {'attrs': {'href': src}}; // add title to link var alt = image.getAttribute('alt'); if (alt != null) { outerParams.attrs[this.dataFancyboxTitle] = alt; } BX.adjust(outer, outerParams); } } } }, isImageInitied: function (image) { return ( ( image.tagName == "IMG" && BX.data(image, this.dataFancyboxInitied.replace('data-', '')) == "Y" ) || ( image.tagName == "A" && image.firstChild != null && this.isImageInitied(image.firstChild) ) ); } }; })();