PageSourceSearch

https://giresun.bel.tr/wp-content/plugins/haber-manset-eklentisi/public/js/slider.js?ver=1.0.0

js giresun.bel.tr collected 2026-10-02 11:26:37 UTC 16,769 bytes, 439 lines download raw bytes

1jQuery(document).ready(function($) {
2    $('.yhs-slider-container').each(function() {
3        const container = $(this);
4        const slider = container.find('.yhs-slider');
5        const slides = container.find('.yhs-slide:not(.yhs-ad-slide)');
6        const adSlide = container.find('.yhs-ad-slide');
7        const prevBtn = container.find('.yhs-prev');
8        const nextBtn = container.find('.yhs-next');
9        const numberItems = container.find('.yhs-number-item:not(.yhs-ad-indicator)');
10        const adIndicator = container.find('.yhs-ad-indicator');
11        
12        const enableTransition = container.data('enable-transition') === 1;
13        const transitionSpeed = parseInt(getComputedStyle(container[0]).getPropertyValue('--transition-speed'));
14        const autoPlay = container.data('auto-play') === 1;
15        const autoPlaySpeed = container.data('auto-play-speed');
16        
17        // Reklam gösterim süresini al
18        const adDisplayTime = parseInt(container.data('ad-display-time'));
19        
20        let currentIndex = 0;
21        let autoPlayInterval;
22        let isAdVisible = false;
23        let adTimeout;
24        let isArrowClicked = false;
25
26        // Reklam pozisyonlarını al
27        const adPositions = [];
28        for (let i = 1; i <= 3; i++) {
29            const adIndicator = container.find(`.yhs-ad-indicator[data-slide="ad${i}"]`);
30            if (adIndicator.length) {
31                adPositions.push({
32                    position: parseInt(adIndicator.data('slide-position')),
33                    adNumber: i
34                });
35            }
36        }
37
38        // Slayt sırasını oluştur
39        function buildSlideSequence() {
40            slideSequence = [];
41            for (let i = 0; i < slides.length; i++) {
42                slideSequence.push(i);
43                adPositions.forEach(ad => {
44                    if (i === ad.position - 1) {
45                        slideSequence.push(`ad${ad.adNumber}`);
46                    }
47                });
48            }
49            return slideSequence;
50        }
51
52        // Slayt sırasını başlat
53        buildSlideSequence();
54        let sequenceIndex = 0;
55
56        function showSlide(index, adNumber = null) {
57            stopAutoPlay();
58            
59            if (adNumber) {
60                isAdVisible = true;
61                slider.css('transform', `translateX(${-index * 100}%)`);
62                
63                slides.css('visibility', 'hidden');
64                container.find('.yhs-ad-slide').css('display', 'none');
65                
66                container.find(`.yhs-ad-slide[data-ad-number="${adNumber}"]`).css({
67                    'display': 'flex',
68                    'visibility': 'visible',
69                    'position': 'absolute',
70                    'top': '0',
71                    'left': '0',
72                    'width': '100%',
73                    'height': '100%',
74                    'z-index': '2'
75                });
76                
77                container.find('.yhs-numbers-bar').css('z-index', '3');
78                container.find('.yhs-prev, .yhs-next').css('z-index', '3');
79                
80                numberItems.removeClass('active');
81                adIndicator.removeClass('active');
82                container.find(`.yhs-ad-indicator[data-slide="ad${adNumber}"]`).addClass('active');
83
84                adTimeout = setTimeout(() => {
85                    nextSlide();
86                }, adDisplayTime);
87            } else {
88                isAdVisible = false;
89                container.find('.yhs-ad-slide').css({
90                    'display': 'none',
91                    'visibility': 'hidden'
92                });
93                
94                slides.css('visibility', 'visible');
95                
96                // Geçiş efekti kontrolü
97                if (enableTransition) {
98                    slider.css({
99                        'transform': `translateX(${-index * 100}%)`,
100                        'transition': `transform ${transitionSpeed}ms ease-in-out`
101                    });
102                } else {
103                    slider.css({
104                        'transform': `translateX(${-index * 100}%)`,
105                        'transition': 'none'
106                    });
107                }
108                
109                container.find('.yhs-numbers-bar').css('z-index', '3');
110                container.find('.yhs-prev, .yhs-next').css('z-index', '4');
111                
112                numberItems.removeClass('active');
113                adIndicator.removeClass('active');
114                numberItems.eq(index).addClass('active');
115
116                startAutoPlay();
117            }
118        }
119
120        function nextSlide() {
121            sequenceIndex = (sequenceIndex + 1) % slideSequence.length;
122            const nextItem = slideSequence[sequenceIndex];
123            
124            if (typeof nextItem === 'string' && nextItem.startsWith('ad')) {
125                const adNumber = nextItem.replace('ad', '');
126                showSlide(currentIndex, adNumber);
127            } else {
128                currentIndex = nextItem;
129                showSlide(currentIndex, false);
130            }
131        }
132
133        function prevSlide() {
134            sequenceIndex = (sequenceIndex - 1 + slideSequence.length) % slideSequence.length;
135            const prevItem = slideSequence[sequenceIndex];
136            
137            if (typeof prevItem === 'string' && prevItem.startsWith('ad')) {
138                const adNumber = prevItem.replace('ad', '');
139                showSlide(currentIndex, adNumber);
140            } else {
141                currentIndex = prevItem;
142                showSlide(currentIndex, false);
143            }
144        }
145
146        // Event listeners
147        numberItems.on('click', function() {
148            const clickedIndex = $(this).index('.yhs-number-item:not(.yhs-ad-indicator)');
149            currentIndex = clickedIndex;
150            sequenceIndex = slideSequence.indexOf(clickedIndex);
151            showSlide(currentIndex, false);
152        });
153
154        adIndicator.on('click', function() {
155            const adNumber = $(this).data('slide').replace('ad', '');
156            sequenceIndex = slideSequence.indexOf(`ad${adNumber}`);
157            showSlide(currentIndex, adNumber);
158        });
159
160        prevBtn.on('click', function(e) {
161            e.preventDefault();
162            isArrowClicked = true;
163            stopAutoPlay();
164            prevSlide();
165        }).on('mouseenter', function() {
166            stopAutoPlay();
167        });
168
169        nextBtn.on('click', function(e) {
170            e.preventDefault();
171            isArrowClicked = true;
172            stopAutoPlay();
173            nextSlide();
174        }).on('mouseenter', function() {
175            stopAutoPlay();
176        });
177
178        function startAutoPlay() {
179            if (autoPlay && !autoPlayInterval && !isAdVisible && !isArrowClicked) {
180                autoPlayInterval = setInterval(nextSlide, autoPlaySpeed);
181            }
182        }
183
184        function stopAutoPlay() {
185            if (autoPlayInterval) {
186                clearInterval(autoPlayInterval);
187                autoPlayInterval = null;
188            }
189            if (adTimeout) {
190                clearTimeout(adTimeout);
191                adTimeout = null;
192            }
193        }
194
195        // Mouse events
196        container.on('mouseenter', function() {
197            stopAutoPlay();
198        }).on('mouseleave', function() {
199            isArrowClicked = false;
200            if (isAdVisible) {
201                // Reklam görünürken mouse çıkarıldığında kalan süreyi hesapla
202                adTimeout = setTimeout(() => {
203                    nextSlide();
204                }, adDisplayTime);
205            } else {
206                startAutoPlay();
207            }
208        });
209
210        let isDragging = false;
211        let startX = 0;
212        let dragDistance = 0;
213        let startTime;
214        const maxTapDuration = 200;
214 // maksimum tıklama süresi (ms)
215        const minDragDistance = 10; // minimum sürükleme mesafesi (px)
216
217        // Mouse sürükleme olayları - container üzerinde dinle
218        container.on('mousedown', function(e) {
219            isDragging = false; // Başlangıçta sürükleme false olsun
220            startX = e.pageX;
221            dragDistance = 0;
222            startTime = new Date().getTime();
223        });
224
225        $(document).on('mousemove', function(e) {
226            if (!startX) return;
227            
228            dragDistance = Math.abs(e.pageX - startX);
229            
230            // Minimum sürükleme mesafesi aşıldığında sürükleme başlasın
231            if (dragDistance > minDragDistance) {
232                isDragging = true;
233                container.find('a').css('pointer-events', 'none');
234                
235                const moveX = -(currentIndex * 100) + ((e.pageX - startX) / container.width() * 100);
236                slider.css({
237                    'transform': `translateX(${moveX}%)`,
238                    'transition': 'none'
239                });
240            }
241        });
242
243        $(document).on('mouseup', function(e) {
244            if (!startX) return;
245            
246            const endTime = new Date().getTime();
247            const tapDuration = endTime - startTime;
248            
249            if (isDragging && dragDistance > 100) { // Sürükleme işlemi
250                if (e.pageX - startX > 0) {
251                    prevSlide();
252                } else {
253                    nextSlide();
254                }
255            } else if (tapDuration < maxTapDuration && dragDistance < minDragDistance) {
256                // Kısa ve hareketsiz tıklama - link tıklaması olarak kabul et
257                const clickedLink = $(e.target).closest('a');
258                if (clickedLink.length) {
259                    const href = clickedLink.attr('href');
260                    const target = clickedLink.attr('target') || '_self';
261                    window.open(href, target);
262                }
263            } else {
264                // Yetersiz sürükleme mesafesi, mevcut slide'a geri dön
265                showSlide(currentIndex, isAdVisible);
266            }
267            
268            // Temizlik
269            startX = 0;
270            dragDistance = 0;
271            isDragging = false;
272            
273            // Tıklamaları tekrar aktif et
274            container.find('a').css('pointer-events', 'auto');
275            
276            slider.css('transition', `transform ${transitionSpeed}ms ease-in-out`);
277        });
278
279        // Mouse sürükleme sırasında metin seçimini engelle
280        container.on('dragstart', function(e) {
281            e.preventDefault();
282        });
283
284        // Normal rakamlar için hover olayı
285        numberItems.on('mouseenter', function(e) {
286            const hoverIndex = $(this).index('.yhs-number-item:not(.yhs-ad-indicator)');
287            currentIndex = hoverIndex;
288            sequenceIndex = slideSequence.indexOf(hoverIndex);
289            showSlide(currentIndex, false);
290            stopAutoPlay();
291        });
292
293        // Reklam göstergeleri için hover olayı
294        adIndicator.on('mouseenter', function(e) {
295            const adNumber = $(this).data('slide').replace('ad', '');
296            sequenceIndex = slideSequence.indexOf(`ad${adNumber}`);
297            showSlide(currentIndex, adNumber);
298            stopAutoPlay();
299        });
300
301        // Normal rakamlar için mouseleave olayı
302        numberItems.on('mouseleave', function(e) {
303            if (!$(e.relatedTarget).closest('.yhs-slider-container').length) {
304                if (!isAdVisible) {
305                    startAutoPlay();
306                }
307            }
308        });
309
310        // Reklam göstergeleri için mouseleave olayı
311        adIndicator.on('mouseleave', function(e) {
312            if (!$(e.relatedTarget).closest('.yhs-slider-container').length) {
313                if (!isAdVisible) {
314                    startAutoPlay();
315                }
316            }
317        });
318
319        // Başlangıç durumu
320        showSlide(0, false);
321        startAutoPlay();
322
323        // Touch olayları için değişkenler
324        let touchStartX = 0;
325        let touchEndX = 0;
326        let isTouching = false;
327        let touchStartTime;
328
329        // Touch event listeners
330        container.on('touchstart', function(e) {
331            isTouching = false;
332            touchStartX = e.touches[0].clientX;
333            touchStartTime = new Date().getTime();
334            startX = touchStartX; // Mouse sürükleme ile uyumlu olması için
335        });
336
337        container.on('touchmove', function(e) {
338            if (!touchStartX) return;
339            
340            const touchCurrentX = e.touches[0].clientX;
341            dragDistance = Math.abs(touchCurrentX - touchStartX);
342            
343            if (dragDistance > minDragDistance) {
344                isTouching = true;
345                container.find('a').css('pointer-events', 'none');
346                
347                const moveX = -(currentIndex * 100) + ((touchCurrentX - touchStartX) / container.width() * 100);
348                slider.css({
349                    'transform': `translateX(${moveX}%)`,
350                    'transition': 'none'
351                });
352            }
353        });
354
355        container.on('touchend', function(e) {
356            if (!touchStartX) return;
357            
358            const touchEndTime = new Date().getTime();
359            const tapDuration = touchEndTime - touchStartTime;
360            touchEndX = e.changedTouches[0].clientX;
361            
362            if (isTouching && dragDistance > 100) {
363                if (touchEndX > touchStartX) {
364                    prevSlide();
365                } else {
366                    nextSlide();
367                }
368            } else if (tapDuration < maxTapDuration && dragDistance < minDragDistance) {
369                // Kısa dokunma - link tıklaması olarak kabul et
370                const clickedLink = $(e.target).closest('a');
371                if (clickedLink.length) {
372                    const href = clickedLink.attr('href');
373                    const target = clickedLink.attr('target') || '_self';
374                    window.open(href, target);
375                }
376            } else {
377                // Yetersiz sürükleme mesafesi, mevcut slide'a geri dön
378                showSlide(currentIndex, isAdVisible);
379            }
380            
381            // Temizlik
382            touchStartX = 0;
383            touchEndX = 0;
384            startX = 0;
385            dragDistance = 0;
386            isTouching = false;
387            
388            // Tıklamaları tekrar aktif et
389            container.find('a').css('pointer-events', 'auto');
390            
391            slider.css('transition', `transform ${transitionSpeed}ms ease-in-out`);
392        });
393
394        // Mobil için numara tıklama olayları
395        numberItems.on('touchend', function(e) {
396            e.preventDefault();
397            const clickedIndex = $(this).index('.yhs-number-item:not(.yhs-ad-indicator)');
398            currentIndex = clickedIndex;
399            sequenceIndex = slideSequence.indexOf(clickedIndex);
400            showSlide(currentIndex, false);
401            stopAutoPlay();
402        });
403
404        adIndicator.on('touchend', function(e) {
405            e.preventDefault();
406            const adNumber = $(this).data('slide').replace('ad', '');
407            sequenceIndex = slideSequence.indexOf(`ad${adNumber}`);
408            showSlide(currentIndex, adNumber);
409            stopAutoPlay();
410        });
411
412        // Sağ tık ayarını al ve boolean'a çevir
413        const enableRightClick = Boolean(parseInt(container.data('enable-right-click')));
414        
415        // Sağ tık kontrolü
416        if (!enableRightClick) {
417            // Sağ tık devre dışıysa engelle
418            container.on('contextmenu', 'img, a', function(e) {
419                e.preventDefault();
420                return false;
421            });
422            
423            container.on('mousedown', 'a', function(e) {
424                if (e.button === 2) {
425                    e.preventDefault();
426                    return false;
427                }
428            });
429        }
430        
431        // Link tıklama kontrolü
432        container.on('mousedown', 'a', function(e) {
433            if (e.button === 2) { // Sağ tık
434                e.preventDefault(); // Her durumda sağ tıkla link açılmasını engelle
435                return false;
436            }
437        });
438    });
439});

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.