1/** 2 * Egy kis segÃtÅ osztály. 3 */ 4var utility = {}; 5 6/** 7 * Realtime módosÃtja a cÃmsávban az URL-t. 8 * 9 * @param {string} uri Ezt megadva a kapott szöveget a domain cÃmhez fűzi. 10 */ 11utility.modifyURI = function (uri) { 12 if (typeof uri !== 'undefined') { 13 window.history.replaceState('', '', window.location.protocol + '//' + window.location.hostname + '/' + uri); 14 } else { 15 window.history.replaceState('', '', window.location.protocol + '//' + window.location.hostname); 16 } 17}; 18 19/** 20 * Ez a vezérlÅ scriptje a Slider layout-nak ami egy cikklistázó Divi modulhoz készült. 21 */ 22var SLIDERS = {}; 23 24/** 25 * Az init megkeresi az összes Slider-t és intézi az idÅzÃtett cikkváltást valamint a "cikk számláló"/"aktÃv cikket jelzÅ pont/pötty" és a "cikkváltó nyilak" felkonfigurálását. 26 * 27 * Az init és a slideren bellüli elsÅ majd utolsó kép betöltésekor a slider magassága is automatikusan állÃtva van, Ãgy elhelyezhetÅ benne abszolút pozÃcióval a kép/szöveg doboz. 28 */ 29SLIDERS.init = function () { 30 SLIDERS.elementContainingSlidersAndOpenCloseElementsClassName = '.slider-containing-article'; 31 SLIDERS.sliderElementClassName = '.enews-article-slider'; 32 SLIDERS.sliderContainerClassName = '.slider-container'; 33 SLIDERS.sliderOpeningElementClassName = '.open-slider'; 34 SLIDERS.sliderClosingElementClassName = '.close-slider'; 35 SLIDERS.slidingElementClassName = '.slider-article'; 36 SLIDERS.sliderIdContainingAttributeName = 'slider-id'; 37 SLIDERS.sliderShowingClassName = '.show'; 38 SLIDERS.existingSliders = {}; 39 SLIDERS.uriHasNumberAtTheEnd = false; 40 SLIDERS.minimumIterationInterval = 100; /* ms */ 41 SLIDERS.slidersFoundInDom = document.querySelectorAll(SLIDERS.sliderElementClassName); 42 43 /* Csak akkor teszünk bármit, ha van legalább egy Slider. */ 44 if (SLIDERS.slidersFoundInDom.length > 0) { 45 /** Az URI per jelenként elválasztva egy tömbben. */ 46 var pathArray = window.location.pathname.split('/'); 47 48 /** EllenÅrizzük, hogy érdekel-e egyáltalán minket az URI vége. */ 49 if ((isFinite(pathArray[pathArray.length - 1]) && pathArray[pathArray.length - 1] !== '') || (isFinite(pathArray[pathArray.length - 2]) && pathArray[pathArray.length - 2] !== '')) { 50 SLIDERS.uriHasNumberAtTheEnd = true; 51 } 52 53 /** Feldolgozzuk a megtalált Slider DOM elemeket. */ 54 for (var index in SLIDERS.slidersFoundInDom) { 55 if (isFinite(index)) { 56 /** Egy Slider Objektum alapja. */ 57 var currentSlider = { 58 id: index, 59 currentlyVisibleSlideId: 0, 60 iterationIsEnabled: false, 61 iterationId: null, 62 iterationInterval: null, 63 hasMultipleArticles: false, 64 shouldItReactToUri: false, 65 domElement: SLIDERS.slidersFoundInDom[index], 66 slidingDomElements: SLIDERS.slidersFoundInDom[index].querySelectorAll(SLIDERS.slidingElementClassName) 67 }; 68 69 /** Elhelyezzük a SLIDERS tárolójában. */ 70 SLIDERS.existingSliders[index] = currentSlider; 71 72 /** Megadjuk a DOM elemnek az azonosÃtóit. */ 73 currentSlider.domElement.id = 'enews-article-slider-' + index; 74 currentSlider.domElement.setAttribute('slider-id', index); 75 76 /** Ha kell elhelyezzük a nyilakat és pöttyöket. */ 77 SLIDERS.setSlideSteppingArrowsAndDots(currentSlider); 78 79 /** EllenÅrizzük, hogy a Slider reagens legyen-e a megadott URI-re. */ 80 if (currentSlider.domElement.getAttribute('data-slider-is-uri-reacting') === 'true') { 81 currentSlider.shouldItReactToUri = true; 82 } 83 84 /* A slideren bellüli elsÅ majd utolsó kép betöltésekor a slider magassága is automatikusan állÃtva van. */ 85 if (currentSlider.slidingDomElements[0].querySelectorAll('img').length > 0) { 86 currentSlider.slidingDomElements[0].querySelector('img').onload = function () { 87 SLIDERS.setSliderHeight(currentSlider); 88 }; 89 } 90 if (currentSlider.hasMultipleArticles && currentSlider.slidingDomElements[currentSlider.slidingDomElements.length - 1].querySelectorAll('img').length > 0) { 91 currentSlider.slidingDomElements[currentSlider.slidingDomElements.length - 1].querySelector('img').onload = function () { 92 SLIDERS.setSliderHeight(currentSlider); 93 }; 94 } 95 96 /* Ha a Slideren bellül volt autoplay megadva akkor intézzük a cikk/kép ciklikus léptetését. */ 97 if (currentSlider.iterationIsEnabled) { 98 currentSlider.iterationId = SLIDERS.iterateSlider(currentSlider.id, currentSlider.iterationInterval); 99 } 100 } 101 } 102 103 SLIDERS.setStartingSlides(pathArray); 104 SLIDERS.setSlidersShowHideEvents(); 105 document.addEventListener('keyup', SLIDERS.stepOnKeys); 106 } 107}; 108 109/** 110 * Ha a Slidernek több váltakozó eleme van akkor beállÃtjuk neki a nyilakat és a "cikk számláló" / "aktÃv cikket jelzÅ pontokat/pöttyöket". 111 */ 112SLIDERS.setSlideSteppingArrowsAndDots = function (currentSlider) { 113 if (currentSlider.domElement.getElementsByClassName('slider-
113display-left').length > 0) { 114 currentSlider.hasMultipleArticles = true; 115 var leftArrows = currentSlider.domElement.getElementsByClassName('slider-display-left'); 116 for(var key in leftArrows) { 117 if(isFinite(key)) { 118 leftArrows[key].setAttribute('onclick', 'SLIDERS.stepArticle("' + currentSlider.id + '",-1)'); 119 } 120 } 121 122 var rightArrows = currentSlider.domElement.getElementsByClassName('slider-display-right'); 123 for(var key in rightArrows) { 124 if(isFinite(key)) { 125 rightArrows[key].setAttribute('onclick', 'SLIDERS.stepArticle("' + currentSlider.id + '",1)'); 126 } 127 } 128 129 if (currentSlider.domElement.getAttribute('data-autoplay') !== false && parseInt(currentSlider.domElement.getAttribute('data-autoplay')) >= SLIDERS.minimumIterationInterval) { 130 currentSlider.iterationIsEnabled = true; 131 currentSlider.iterationInterval = parseInt(currentSlider.domElement.getAttribute('data-autoplay')); 132 } 133 for (var key in currentSlider.domElement.getElementsByClassName('dots')) { 134 if (isFinite(key)) { 135 currentSlider.domElement.getElementsByClassName('dots')[key].setAttribute('onclick', 'SLIDERS.showSlide("' + currentSlider.id + '",' + (parseInt(key)) + ')'); 136 } 137 } 138 } 139}; 140 141/** 142 * Ha esetleg van az URI végén megadott szám, utalva egy Slider kezdÅ poziciójára, 143 * akkor a twig-ekben érzékelésre konfigurált Slidereknek be állÃtjuk azt a kezdÅ elemet. 144 * 145 * Minden egyéb Slider az elsÅ elemre lesz állÃtva. 146 */ 147SLIDERS.setStartingSlides = function (pathArray) { 148 for (var index in SLIDERS.existingSliders) { 149 if (isFinite(index)) { 150 var currentSlider = SLIDERS.existingSliders[index]; 151 if (SLIDERS.uriHasNumberAtTheEnd && currentSlider.shouldItReactoToUri) { 152 if (isFinite(pathArray[pathArray.length - 1]) && pathArray[pathArray.length - 1] !== '') { 153 SLIDERS.showSlide(currentSlider.id, pathArray[pathArray.length - 1]); 154 } else if (isFinite(pathArray[pathArray.length - 2]) && pathArray[pathArray.length - 2] !== '') { 155 SLIDERS.showSlide(currentSlider.id, pathArray[pathArray.length - 2]); 156 } 157 } else { 158 SLIDERS.showSlide(currentSlider.id, 0); 159 } 160 } 161 } 162}; 163 164/** 165 * Ha nem cikklistázó modulban van elhelyezve slider és nem állandóan látható slider-t tervezünk akkor, 166 * ez a metódus beállÃthatja a rejtett slider megjelenÃtéséhez a click open event-et és close event-et. 167 */ 168SLIDERS.setSlidersShowHideEvents = function () { 169 var sliderContainingElements = document.querySelectorAll(SLIDERS.elementContainingSlidersAndOpenCloseElementsClassName); 170 var sliderOpeningElements = null; 171 var sliderClosingElements = null; 172 173 if (sliderContainingElements.length > 0) { 174 for (var index in sliderContainingElements) { 175 if ( 176 !isFinite(index) || 177 sliderContainingElements[index].querySelectorAll(SLIDERS.sliderElementClassName).length === 0 || 178 sliderContainingElements[index].querySelectorAll(SLIDERS.sliderOpeningElementClassName).length === 0 || 179 sliderContainingElements[index].querySelectorAll(SLIDERS.sliderClosingElementClassName).length === 0 180 ) { 181 continue; 182 } 183 184 sliderOpeningElements = sliderContainingElements[index].querySelectorAll(SLIDERS.sliderOpeningElementClassName); 185 sliderClosingElements = sliderContainingElements[index].querySelectorAll(SLIDERS.sliderClosingElementClassName); 186 187 for (var openingElementIndex in sliderOpeningElements) { 188 if (isFinite(openingElementIndex)) { 189 sliderOpeningElements[openingElementIndex].addEventListener('click', SLIDERS.showSlider); 190 } 191 } 192 193 for (var closingElementIndex in sliderClosingElements) { 194 if (isFinite(closingElementIndex)) { 195 sliderClosingElements[closingElementIndex].addEventListener('click', SLIDERS.hideSlider); 196 } 197 } 198 } 199 } 200}; 201 202/** 203 * Ez az idÅzÃtett cikk/kép változtatását intézi. 204 */ 205SLIDERS.iterateSlider = function (id, Interval) { 206 setInterval( 207 function () { 208 if (SLIDERS.existingSliders[id].iterationIsEnabled) { 209 SLIDERS.stepArticle(id, 1); 210 } 211 }, Interval); 212}; 213 214/** 215 * A cikkek/képek kattintásra való léptetése. 216 */ 217SLIDERS.stepArticle = function (id, n) { 218 SLIDERS.showSlide(id, SLIDERS.existingSliders[id].currentlyVisibleSlideId += n); 219}; 220 221/** 222 * Cikk/kép léptetésekor minden a Slideren bellüli cikkek/képet elrejtünk, és megjelenÃtjük a kiválasztottat. 223 */ 224SLIDERS.showSlide = function (id, n) { 225 var slides = SLIDERS.existingSliders[id].slidingDomElements; 226 var dots = SLIDERS.existingSliders[id].domElement.querySelectorAll('.dots'); 227 var currentlyVisibleSlideId = parseInt(SLIDERS.existingSliders[id].currentlyVisibleSlideId); 228 /* EllenÅrizzük, hogy a kért slide indexe a minimum és maximum értékek között van-e. */ 229 if (parseInt(n) >= slides.length) { 230 currentlyVisibleSlideId = 0; 231 } else if (parseInt(n) < 0) { 232 currentlyVisibleSlideId = parseInt(slides.length) - 1; 233 } else { 234 currentlyVisibleSlideId = parseInt(n); 235 } 236 237 // Az eredményt beállÃtjuk a Slideren értéknek. 238 SLIDERS.existingSliders[id].currentlyVisibleSlideId = currentlyVisibleSlideId; 239 240 /** Ha a Slidernek több cikke/képe is van akkor az épp láthatónak a jelzÅ pöttyét/pontját is állÃtjuk. */ 241 if (SLIDERS.existingSliders[id].hasMultipleArticles) { 242 for (var index in dots) { 243 if (isFinite(index)) { 244 slides[index].classList.remove('slider-show'); 245 dots[index].classList.remove('slider-active-dot'); 246 } 247 } 248 dots[currentlyVisibleSlideId].classList.add('slider-active-dot'); 249 } 250 251 /** Hozzáadjuk a láthatóságért felelÅs osztályt a kiválasztott slide-hoz */ 252 if (!slides[currentlyVisibleSlideId].classList.contains('slider-show')) { 253 slides[currentlyVisibleSlideId].classList.add('slider-show'); 254 } 255
256 /** Ha URI reagens a Slider, akkor cikk/kép léptetéskor állÃtjuk az URI-t az épp látható slide indexének megfelelÅen. */ 257 var pathArray = window.location.pathname.split('/'); 258 var newUriArray = []; 259 if (isFinite(pathArray[pathArray.length - 1]) && pathArray[pathArray.length - 1] !== '' && pathArray[pathArray.length - 1] !== null && pathArray[pathArray.length - 1] !== undefined) { 260 newUriArray = pathArray.slice(1, -1); 261 newUriArray.push(currentlyVisibleSlideId); 262 utility.modifyURI(newUriArray.join('/') + '/'); 263 } else if (isFinite(pathArray[pathArray.length - 2]) && pathArray[pathArray.length - 2] !== '' && pathArray[pathArray.length - 2] !== null && pathArray[pathArray.length - 2] !== undefined) { 264 newUriArray = pathArray.slice(1, -2); 265 newUriArray.push(currentlyVisibleSlideId); 266 utility.modifyURI(newUriArray.join('/') + '/'); 267 } 268}; 269 270/** 271 * Funkció a ciklikus léptetés bekapcsolásához. 272 */ 273SLIDERS.enableAutoplay = function (id) { 274 SLIDERS.existingSliders[id].iterationIsEnabled = true; 275}; 276 277/** 278 * Funkció a ciklikus léptetés kikapcsolásához. 279 */ 280SLIDERS.disableAutoplay = function (id) { 281 SLIDERS.existingSliders[id].iterationIsEnabled = false; 282}; 283 284/** 285 * Ez a nyÃl gombokat figyeli, ha jobbra nyomja a felhasználó elÅre lépteti, ha balra akkor vissza. 286 * 287 * @param {type} event 288 */ 289SLIDERS.stepOnKeys = function (event) { 290 var e = event || window.event; 291 var code = e.charCode || e.keyCode; 292 var activeSliderId = 0; 293 if (document.querySelectorAll(SLIDERS.sliderContainerClassName + SLIDERS.sliderShowingClassName).length > 0) { 294 activeSliderId = document.querySelector(SLIDERS.sliderContainerClassName + SLIDERS.sliderShowingClassName + ' ' + SLIDERS.sliderElementClassName).getAttribute(SLIDERS.sliderIdContainingAttributeName); 295 } 296 /* Left */ 297 if (code === 37 || code === '37') { 298 SLIDERS.stepArticle(activeSliderId, -1); 299 } 300 /* Right */ 301 if (code === 39 || code === '39') { 302 SLIDERS.stepArticle(activeSliderId, 1); 303 } 304}; 305 306/** 307 * Az adott Slider magasságának újraszámolása. 308 */ 309SLIDERS.setSliderHeight = function (currentSlider) { 310 var maxHeight = 0; 311 var slides = currentSlider.slidingDomElements; 312 for (var index in slides) { 313 if (isFinite(index)) { 314 slides[index].style.overflowY = 'visible'; 315 var slideHeight = slides[index].scrollHeight; 316 317 if (slideHeight === 0 || slideHeight === '0px') { 318 slideHeight = slides[index].clientHeight; 319 } 320 321 if (maxHeight < slideHeight) { 322 maxHeight = slideHeight; 323 } 324 } 325 } 326 327 if (maxHeight === 0 || maxHeight === '0px') { 328 maxHeight = slides[0].scrollWidth / 4 * 3; 329 } 330 331 var dotsContainerHeight = 0; 332 if (currentSlider.hasMultipleArticles) { 333 dotsContainerHeight = currentSlider.domElement.querySelectorAll('.slider-display-bottom-middle')[0].scrollHeight; 334 if (dotsContainerHeight === 0 || dotsContainerHeight === '0px') { 335 dotsContainerHeight = currentSlider.domElement.querySelectorAll('.slider-display-bottom-middle')[0].clientHeight; 336 } 337 } 338 currentSlider.domElement.style.height = (maxHeight + dotsContainerHeight) + 'px'; 339}; 340 341SLIDERS.showSlider = function (event) { 342 event.target.closest(SLIDERS.elementContainingSlidersAndOpenCloseElementsClassName).querySelector(SLIDERS.sliderContainerClassName).classList.add(SLIDERS.sliderShowingClassName.replace('.', '')); 343}; 344 345SLIDERS.hideSlider = function (event) { 346 event.target.closest(SLIDERS.elementContainingSlidersAndOpenCloseElementsClassName).querySelector(SLIDERS.sliderContainerClassName).classList.remove(SLIDERS.sliderShowingClassName.replace('.', '')); 347}; 348 349/** 350 * Az SLIDERS init indÃtása. 351 */ 352SLIDERS.init();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.