- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Acil Çağrı
Onlar için bir yardım eli olun
kriz zamanlarında
"Wejdan Charity" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.
<a href="/tr/suregelen-hayir-isi" class="frontheader-section__button frontheader-section__button--primary">
Hayır Bağışları
</a>
<a href="/tr/urgent-projects-tr" class="frontheader-section__button frontheader-section__button--secondary">
Projelerimiz
</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Acil Çağrı
Onlar için bir yardım eli olun
kriz zamanlarında
"Wejdan Charity" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.
<a href="/tr/suregelen-hayir-isi" class="frontheader-section__button frontheader-section__button--primary">
Hayır Bağışları
</a>
<a href="/tr/urgent-projects-tr" class="frontheader-section__button frontheader-section__button--secondary">
Projelerimiz
</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Acil Çağrı
Onlar için bir yardım eli olun
kriz zamanlarında
"Wejdan Charity" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.
<a href="/tr/suregelen-hayir-isi" class="frontheader-section__button frontheader-section__button--primary">
Hayır Bağışları
</a>
<a href="/tr/urgent-projects-tr" class="frontheader-section__button frontheader-section__button--secondary">
Projelerimiz
</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Acil Çağrı
Onlar için bir yardım eli olun
kriz zamanlarında
"Wejdan Charity" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.
<a href="/tr/suregelen-hayir-isi" class="frontheader-section__button frontheader-section__button--primary">
Hayır Bağışları
</a>
<a href="/tr/urgent-projects-tr" class="frontheader-section__button frontheader-section__button--secondary">
Projelerimiz
</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Acil Çağrı
Onlar için bir yardım eli olun
kriz zamanlarında
"Wejdan Charity" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.
<a href="/tr/suregelen-hayir-isi" class="frontheader-section__button frontheader-section__button--primary">
Hayır Bağışları
</a>
<a href="/tr/urgent-projects-tr" class="frontheader-section__button frontheader-section__button--secondary">
Projelerimiz
</a>
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Acil Çağrı
Onlar için bir yardım eli olun
kriz zamanlarında
"Wejdan Charity" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.
<a href="/tr/suregelen-hayir-isi" class="frontheader-section__button frontheader-section__button--primary">
Hayır Bağışları
</a>
<a href="/tr/urgent-projects-tr" class="frontheader-section__button frontheader-section__button--secondary">
Projelerimiz
</a>
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_call_to_action->render_content() (line 152 of themes/gavias_kunco/gva_content_builder/gva_call_to_action.php).
element_gva_call_to_action->render_content(Array, '') (Line: 110)
gavias_content_builder_render_element('gva_call_to_action', Array) (Line: 54)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Take action for animals now
<a href="#" class="btn-theme">Donation Now</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Take action for animals now
<a href="#" class="btn-theme">Donation Now</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Take action for animals now
<a href="#" class="btn-theme">Donation Now</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Take action for animals now
<a href="#" class="btn-theme">Donation Now</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Take action for animals now
<a href="#" class="btn-theme">Donation Now</a>
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Take action for animals now
<a href="#" class="btn-theme">Donation Now</a>
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Biz Kimiz
Umut ekiyoruz..
ve insanları ve geleceği inşa ediyoruz
Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.
Gelişim Aşamaları
Sürekli bir büyüme yolculuğu
Çalışma Alanları
İhtiyacın olduğu yere ulaşıyoruz
"Gülümsemeler getirmek için tutkuyla çalışıyoruz"
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Biz Kimiz
Umut ekiyoruz..
ve insanları ve geleceği inşa ediyoruz
Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.
Gelişim Aşamaları
Sürekli bir büyüme yolculuğu
Çalışma Alanları
İhtiyacın olduğu yere ulaşıyoruz
"Gülümsemeler getirmek için tutkuyla çalışıyoruz"
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Biz Kimiz
Umut ekiyoruz..
ve insanları ve geleceği inşa ediyoruz
Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.
Gelişim Aşamaları
Sürekli bir büyüme yolculuğu
Çalışma Alanları
İhtiyacın olduğu yere ulaşıyoruz
"Gülümsemeler getirmek için tutkuyla çalışıyoruz"
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Biz Kimiz
Umut ekiyoruz..
ve insanları ve geleceği inşa ediyoruz
Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.
Gelişim Aşamaları
Sürekli bir büyüme yolculuğu
Çalışma Alanları
İhtiyacın olduğu yere ulaşıyoruz
"Gülümsemeler getirmek için tutkuyla çalışıyoruz"
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Biz Kimiz
Umut ekiyoruz..
ve insanları ve geleceği inşa ediyoruz
Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.
Gelişim Aşamaları
Sürekli bir büyüme yolculuğu
Çalışma Alanları
İhtiyacın olduğu yere ulaşıyoruz
"Gülümsemeler getirmek için tutkuyla çalışıyoruz"
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Biz Kimiz
Umut ekiyoruz..
ve insanları ve geleceği inşa ediyoruz
Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.
Gelişim Aşamaları
Sürekli bir büyüme yolculuğu
Çalışma Alanları
İhtiyacın olduğu yere ulaşıyoruz
"Gülümsemeler getirmek için tutkuyla çalışıyoruz"
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Girişimler & Programlar
Çalışma Alanlarımız
Devam Eden Hayır İşleri
Su kuyuları, cami inşaatı
Öğrenci Sponsorlukları
Eğitim yoluyla geleceği inşa etmek
İnsani Vakalar
Hastaların tedavisi, ameliyatlar
Gelişim Projeleri
Üretken aileleri güçlendirmek
<a href="/tr/initiatives-tr" class="projects-section__card-button projects-section__card-button--development">Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Girişimler & Programlar
Çalışma Alanlarımız
Devam Eden Hayır İşleri
Su kuyuları, cami inşaatı
Öğrenci Sponsorlukları
Eğitim yoluyla geleceği inşa etmek
İnsani Vakalar
Hastaların tedavisi, ameliyatlar
Gelişim Projeleri
Üretken aileleri güçlendirmek
<a href="/tr/initiatives-tr" class="projects-section__card-button projects-section__card-button--development">Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Girişimler & Programlar
Çalışma Alanlarımız
Devam Eden Hayır İşleri
Su kuyuları, cami inşaatı
Öğrenci Sponsorlukları
Eğitim yoluyla geleceği inşa etmek
İnsani Vakalar
Hastaların tedavisi, ameliyatlar
Gelişim Projeleri
Üretken aileleri güçlendirmek
<a href="/tr/initiatives-tr" class="projects-section__card-button projects-section__card-button--development">Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Girişimler & Programlar
Çalışma Alanlarımız
Devam Eden Hayır İşleri
Su kuyuları, cami inşaatı
Öğrenci Sponsorlukları
Eğitim yoluyla geleceği inşa etmek
İnsani Vakalar
Hastaların tedavisi, ameliyatlar
Gelişim Projeleri
Üretken aileleri güçlendirmek
<a href="/tr/initiatives-tr" class="projects-section__card-button projects-section__card-button--development">Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Girişimler & Programlar
Çalışma Alanlarımız
Devam Eden Hayır İşleri
Su kuyuları, cami inşaatı
Öğrenci Sponsorlukları
Eğitim yoluyla geleceği inşa etmek
İnsani Vakalar
Hastaların tedavisi, ameliyatlar
Gelişim Projeleri
Üretken aileleri güçlendirmek
<a href="/tr/initiatives-tr" class="projects-section__card-button projects-section__card-button--development">Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Girişimler & Programlar
Çalışma Alanlarımız
Devam Eden Hayır İşleri
Su kuyuları, cami inşaatı
Öğrenci Sponsorlukları
Eğitim yoluyla geleceği inşa etmek
İnsani Vakalar
Hastaların tedavisi, ameliyatlar
Gelişim Projeleri
Üretken aileleri güçlendirmek
<a href="/tr/initiatives-tr" class="projects-section__card-button projects-section__card-button--development">Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_drupal_block->render_content() (line 106 of themes/gavias_kunco/gva_content_builder/gva_drupal_block.php).
element_gva_drupal_block->render_content(Array, '') (Line: 110)
gavias_content_builder_render_element('gva_drupal_block', Array) (Line: 54)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Haberlerimiz
Bağış hikayesini anlatan haberler
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Haberlerimiz
Bağış hikayesini anlatan haberler
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Haberlerimiz
Bağış hikayesini anlatan haberler
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Haberlerimiz
Bağış hikayesini anlatan haberler
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Haberlerimiz
Bağış hikayesini anlatan haberler
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Haberlerimiz
Bağış hikayesini anlatan haberler
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_drupal_block->render_content() (line 106 of themes/gavias_kunco/gva_content_builder/gva_drupal_block.php).
element_gva_drupal_block->render_content(Array, '') (Line: 110)
gavias_content_builder_render_element('gva_drupal_block', Array) (Line: 54)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
حملاتنا
أثر عطائكم… حياة تتغيّر
مع كل مساهمة، نصنع فرقًا حقيقيًا ونترك أثرًا إنسانيًا يمتد أثره إلى حياة أكثر استقرارًا وأملًا.
أثر عطائكم في حملاتنا
نؤمن أن عطائكم هو القوة الحقيقية خلف كل حملة نطلقها. فمن خلال دعمكم، تتحول المبادرات الإنسانية إلى قصص أمل، ويصبح الأثر واقعًا يلمسه الإنسان في حياته اليومية.
{
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
})
}, { threshold: 0.1 });
reveals.forEach(el => revealObserver.observe(el));
function toggleCart() {
alert('Cart toggle clicked');
}
function toggleMobileMenu() {
alert('Mobile menu clicked');
}
//-->
<a href="/tr/node/271" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/271" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
<a href="/tr/node/270" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/270" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
حملاتنا
أثر عطائكم… حياة تتغيّر
مع كل مساهمة، نصنع فرقًا حقيقيًا ونترك أثرًا إنسانيًا يمتد أثره إلى حياة أكثر استقرارًا وأملًا.
أثر عطائكم في حملاتنا
نؤمن أن عطائكم هو القوة الحقيقية خلف كل حملة نطلقها. فمن خلال دعمكم، تتحول المبادرات الإنسانية إلى قصص أمل، ويصبح الأثر واقعًا يلمسه الإنسان في حياته اليومية.
{
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
})
}, { threshold: 0.1 });
reveals.forEach(el => revealObserver.observe(el));
function toggleCart() {
alert('Cart toggle clicked');
}
function toggleMobileMenu() {
alert('Mobile menu clicked');
}
//-->
<a href="/tr/node/271" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/271" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
<a href="/tr/node/270" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/270" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
حملاتنا
أثر عطائكم… حياة تتغيّر
مع كل مساهمة، نصنع فرقًا حقيقيًا ونترك أثرًا إنسانيًا يمتد أثره إلى حياة أكثر استقرارًا وأملًا.
أثر عطائكم في حملاتنا
نؤمن أن عطائكم هو القوة الحقيقية خلف كل حملة نطلقها. فمن خلال دعمكم، تتحول المبادرات الإنسانية إلى قصص أمل، ويصبح الأثر واقعًا يلمسه الإنسان في حياته اليومية.
{
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
})
}, { threshold: 0.1 });
reveals.forEach(el => revealObserver.observe(el));
function toggleCart() {
alert('Cart toggle clicked');
}
function toggleMobileMenu() {
alert('Mobile menu clicked');
}
//-->
<a href="/tr/node/271" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/271" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
<a href="/tr/node/270" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/270" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
حملاتنا
أثر عطائكم… حياة تتغيّر
مع كل مساهمة، نصنع فرقًا حقيقيًا ونترك أثرًا إنسانيًا يمتد أثره إلى حياة أكثر استقرارًا وأملًا.
أثر عطائكم في حملاتنا
نؤمن أن عطائكم هو القوة الحقيقية خلف كل حملة نطلقها. فمن خلال دعمكم، تتحول المبادرات الإنسانية إلى قصص أمل، ويصبح الأثر واقعًا يلمسه الإنسان في حياته اليومية.
{
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
})
}, { threshold: 0.1 });
reveals.forEach(el => revealObserver.observe(el));
function toggleCart() {
alert('Cart toggle clicked');
}
function toggleMobileMenu() {
alert('Mobile menu clicked');
}
//-->
<a href="/tr/node/271" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/271" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
<a href="/tr/node/270" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/270" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
حملاتنا
أثر عطائكم… حياة تتغيّر
مع كل مساهمة، نصنع فرقًا حقيقيًا ونترك أثرًا إنسانيًا يمتد أثره إلى حياة أكثر استقرارًا وأملًا.
أثر عطائكم في حملاتنا
نؤمن أن عطائكم هو القوة الحقيقية خلف كل حملة نطلقها. فمن خلال دعمكم، تتحول المبادرات الإنسانية إلى قصص أمل، ويصبح الأثر واقعًا يلمسه الإنسان في حياته اليومية.
{
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
})
}, { threshold: 0.1 });
reveals.forEach(el => revealObserver.observe(el));
function toggleCart() {
alert('Cart toggle clicked');
}
function toggleMobileMenu() {
alert('Mobile menu clicked');
}
//-->
<a href="/tr/node/271" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/271" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
<a href="/tr/node/270" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/270" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
حملاتنا
أثر عطائكم… حياة تتغيّر
مع كل مساهمة، نصنع فرقًا حقيقيًا ونترك أثرًا إنسانيًا يمتد أثره إلى حياة أكثر استقرارًا وأملًا.
أثر عطائكم في حملاتنا
نؤمن أن عطائكم هو القوة الحقيقية خلف كل حملة نطلقها. فمن خلال دعمكم، تتحول المبادرات الإنسانية إلى قصص أمل، ويصبح الأثر واقعًا يلمسه الإنسان في حياته اليومية.
{
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
})
}, { threshold: 0.1 });
reveals.forEach(el => revealObserver.observe(el));
function toggleCart() {
alert('Cart toggle clicked');
}
function toggleMobileMenu() {
alert('Mobile menu clicked');
}
//-->
<a href="/tr/node/271" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/271" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
<a href="/tr/node/270" hreflang="tr">Bir öğrenciye destek olun</a>
İnsani Yardım Vakası
Çad'ın ücra köylerinde yaşayanlar içme suyu kıtlığından muzdarip olup, kadınlar ve çocuklar her gün su bulmak için uzun mesafeler kat etmek zorunda kalıyor.
<a href="/tr/node/270" class="sliderfront-section__slide-button sliderfront-section__slide-button--education">
Hikayenin tamamını okuyun
</a>
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Seçkin Projelerimiz
Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:
Yardım Projeleri
Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.
<a href="relief-projects" class="projects-section__card-button projects-section__card-button--relief">Projeleri İncele</a>
Gelişim Projeleri
Toplulukları güçlendirme ve kapasitelerini artırma.
<a href="development-projects" class="projects-section__card-button projects-section__card-button--development">Projeleri İncele</a>
Sezonluk Projeler
Ramazan kampanyaları, Kurban ve kışlık giysiler.
<a href="seasonal-projects" class="projects-section__card-button projects-section__card-button--seasonal">Projeleri İncele</a>
Vakıf Projeleri
Ahirete yatırım—camiler, kuyular ve hayır vakıfları.
<a href="endowment-projects" class="projects-section__card-button projects-section__card-button--waqf">Projeleri İncele</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Seçkin Projelerimiz
Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:
Yardım Projeleri
Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.
<a href="relief-projects" class="projects-section__card-button projects-section__card-button--relief">Projeleri İncele</a>
Gelişim Projeleri
Toplulukları güçlendirme ve kapasitelerini artırma.
<a href="development-projects" class="projects-section__card-button projects-section__card-button--development">Projeleri İncele</a>
Sezonluk Projeler
Ramazan kampanyaları, Kurban ve kışlık giysiler.
<a href="seasonal-projects" class="projects-section__card-button projects-section__card-button--seasonal">Projeleri İncele</a>
Vakıf Projeleri
Ahirete yatırım—camiler, kuyular ve hayır vakıfları.
<a href="endowment-projects" class="projects-section__card-button projects-section__card-button--waqf">Projeleri İncele</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Seçkin Projelerimiz
Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:
Yardım Projeleri
Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.
<a href="relief-projects" class="projects-section__card-button projects-section__card-button--relief">Projeleri İncele</a>
Gelişim Projeleri
Toplulukları güçlendirme ve kapasitelerini artırma.
<a href="development-projects" class="projects-section__card-button projects-section__card-button--development">Projeleri İncele</a>
Sezonluk Projeler
Ramazan kampanyaları, Kurban ve kışlık giysiler.
<a href="seasonal-projects" class="projects-section__card-button projects-section__card-button--seasonal">Projeleri İncele</a>
Vakıf Projeleri
Ahirete yatırım—camiler, kuyular ve hayır vakıfları.
<a href="endowment-projects" class="projects-section__card-button projects-section__card-button--waqf">Projeleri İncele</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Seçkin Projelerimiz
Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:
Yardım Projeleri
Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.
<a href="relief-projects" class="projects-section__card-button projects-section__card-button--relief">Projeleri İncele</a>
Gelişim Projeleri
Toplulukları güçlendirme ve kapasitelerini artırma.
<a href="development-projects" class="projects-section__card-button projects-section__card-button--development">Projeleri İncele</a>
Sezonluk Projeler
Ramazan kampanyaları, Kurban ve kışlık giysiler.
<a href="seasonal-projects" class="projects-section__card-button projects-section__card-button--seasonal">Projeleri İncele</a>
Vakıf Projeleri
Ahirete yatırım—camiler, kuyular ve hayır vakıfları.
<a href="endowment-projects" class="projects-section__card-button projects-section__card-button--waqf">Projeleri İncele</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Seçkin Projelerimiz
Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:
Yardım Projeleri
Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.
<a href="relief-projects" class="projects-section__card-button projects-section__card-button--relief">Projeleri İncele</a>
Gelişim Projeleri
Toplulukları güçlendirme ve kapasitelerini artırma.
<a href="development-projects" class="projects-section__card-button projects-section__card-button--development">Projeleri İncele</a>
Sezonluk Projeler
Ramazan kampanyaları, Kurban ve kışlık giysiler.
<a href="seasonal-projects" class="projects-section__card-button projects-section__card-button--seasonal">Projeleri İncele</a>
Vakıf Projeleri
Ahirete yatırım—camiler, kuyular ve hayır vakıfları.
<a href="endowment-projects" class="projects-section__card-button projects-section__card-button--waqf">Projeleri İncele</a>
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Seçkin Projelerimiz
Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:
Yardım Projeleri
Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.
<a href="relief-projects" class="projects-section__card-button projects-section__card-button--relief">Projeleri İncele</a>
Gelişim Projeleri
Toplulukları güçlendirme ve kapasitelerini artırma.
<a href="development-projects" class="projects-section__card-button projects-section__card-button--development">Projeleri İncele</a>
Sezonluk Projeler
Ramazan kampanyaları, Kurban ve kışlık giysiler.
<a href="seasonal-projects" class="projects-section__card-button projects-section__card-button--seasonal">Projeleri İncele</a>
Vakıf Projeleri
Ahirete yatırım—camiler, kuyular ve hayır vakıfları.
<a href="endowment-projects" class="projects-section__card-button projects-section__card-button--waqf">Projeleri İncele</a>
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Sayılarla Başarılarımız
Güveniniz fark yaratıyor
0
Dünya genelinde faydalananlar
0
Uygulanan projeler
0
Faaliyet gösterdiğimiz ülkeler
0
Gönüllüler
// Enhanced counter animation for facts section
function animateFactsCounters() {
const statNumbers = document.querySelectorAll('.facts-section__stat-number');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const counter = entry.target;
const target = parseInt(counter.getAttribute('data-target'));
const duration = 2000;
const increment = target / (duration / 16);
let current = 0;
const updateCounter = () => {
current += increment;
if (current < target) {
// Format number with K for thousands
let displayNum = Math.ceil(current);
if (displayNum >= 1000) {
counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';
} else {
counter.textContent = displayNum.toLocaleString();
}
requestAnimationFrame(updateCounter);
} else {
// Final formatting
if (target >= 1000) {
counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';
counter.classList.add('formatted');
} else {
counter.textContent = target.toLocaleString();
}
counter.classList.add('animated');
setTimeout(() => counter.classList.remove('animated'), 600);
}
};
updateCounter();
observer.unobserve(counter);
}
});
}, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });
statNumbers.forEach(counter => observer.observe(counter));
}
// Call this function when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
animateFactsCounters();
});
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Sayılarla Başarılarımız
Güveniniz fark yaratıyor
0
Dünya genelinde faydalananlar
0
Uygulanan projeler
0
Faaliyet gösterdiğimiz ülkeler
0
Gönüllüler
// Enhanced counter animation for facts section
function animateFactsCounters() {
const statNumbers = document.querySelectorAll('.facts-section__stat-number');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const counter = entry.target;
const target = parseInt(counter.getAttribute('data-target'));
const duration = 2000;
const increment = target / (duration / 16);
let current = 0;
const updateCounter = () => {
current += increment;
if (current < target) {
// Format number with K for thousands
let displayNum = Math.ceil(current);
if (displayNum >= 1000) {
counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';
} else {
counter.textContent = displayNum.toLocaleString();
}
requestAnimationFrame(updateCounter);
} else {
// Final formatting
if (target >= 1000) {
counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';
counter.classList.add('formatted');
} else {
counter.textContent = target.toLocaleString();
}
counter.classList.add('animated');
setTimeout(() => counter.classList.remove('animated'), 600);
}
};
updateCounter();
observer.unobserve(counter);
}
});
}, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });
statNumbers.forEach(counter => observer.observe(counter));
}
// Call this function when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
animateFactsCounters();
});
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Sayılarla Başarılarımız
Güveniniz fark yaratıyor
0
Dünya genelinde faydalananlar
0
Uygulanan projeler
0
Faaliyet gösterdiğimiz ülkeler
0
Gönüllüler
// Enhanced counter animation for facts section
function animateFactsCounters() {
const statNumbers = document.querySelectorAll('.facts-section__stat-number');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const counter = entry.target;
const target = parseInt(counter.getAttribute('data-target'));
const duration = 2000;
const increment = target / (duration / 16);
let current = 0;
const updateCounter = () => {
current += increment;
if (current < target) {
// Format number with K for thousands
let displayNum = Math.ceil(current);
if (displayNum >= 1000) {
counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';
} else {
counter.textContent = displayNum.toLocaleString();
}
requestAnimationFrame(updateCounter);
} else {
// Final formatting
if (target >= 1000) {
counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';
counter.classList.add('formatted');
} else {
counter.textContent = target.toLocaleString();
}
counter.classList.add('animated');
setTimeout(() => counter.classList.remove('animated'), 600);
}
};
updateCounter();
observer.unobserve(counter);
}
});
}, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });
statNumbers.forEach(counter => observer.observe(counter));
}
// Call this function when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
animateFactsCounters();
});
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Sayılarla Başarılarımız
Güveniniz fark yaratıyor
0
Dünya genelinde faydalananlar
0
Uygulanan projeler
0
Faaliyet gösterdiğimiz ülkeler
0
Gönüllüler
// Enhanced counter animation for facts section
function animateFactsCounters() {
const statNumbers = document.querySelectorAll('.facts-section__stat-number');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const counter = entry.target;
const target = parseInt(counter.getAttribute('data-target'));
const duration = 2000;
const increment = target / (duration / 16);
let current = 0;
const updateCounter = () => {
current += increment;
if (current < target) {
// Format number with K for thousands
let displayNum = Math.ceil(current);
if (displayNum >= 1000) {
counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';
} else {
counter.textContent = displayNum.toLocaleString();
}
requestAnimationFrame(updateCounter);
} else {
// Final formatting
if (target >= 1000) {
counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';
counter.classList.add('formatted');
} else {
counter.textContent = target.toLocaleString();
}
counter.classList.add('animated');
setTimeout(() => counter.classList.remove('animated'), 600);
}
};
updateCounter();
observer.unobserve(counter);
}
});
}, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });
statNumbers.forEach(counter => observer.observe(counter));
}
// Call this function when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
animateFactsCounters();
});
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Sayılarla Başarılarımız
Güveniniz fark yaratıyor
0
Dünya genelinde faydalananlar
0
Uygulanan projeler
0
Faaliyet gösterdiğimiz ülkeler
0
Gönüllüler
// Enhanced counter animation for facts section
function animateFactsCounters() {
const statNumbers = document.querySelectorAll('.facts-section__stat-number');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const counter = entry.target;
const target = parseInt(counter.getAttribute('data-target'));
const duration = 2000;
const increment = target / (duration / 16);
let current = 0;
const updateCounter = () => {
current += increment;
if (current < target) {
// Format number with K for thousands
let displayNum = Math.ceil(current);
if (displayNum >= 1000) {
counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';
} else {
counter.textContent = displayNum.toLocaleString();
}
requestAnimationFrame(updateCounter);
} else {
// Final formatting
if (target >= 1000) {
counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';
counter.classList.add('formatted');
} else {
counter.textContent = target.toLocaleString();
}
counter.classList.add('animated');
setTimeout(() => counter.classList.remove('animated'), 600);
}
};
updateCounter();
observer.unobserve(counter);
}
});
}, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });
statNumbers.forEach(counter => observer.observe(counter));
}
// Call this function when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
animateFactsCounters();
});
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Sayılarla Başarılarımız
Güveniniz fark yaratıyor
0
Dünya genelinde faydalananlar
0
Uygulanan projeler
0
Faaliyet gösterdiğimiz ülkeler
0
Gönüllüler
// Enhanced counter animation for facts section
function animateFactsCounters() {
const statNumbers = document.querySelectorAll('.facts-section__stat-number');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const counter = entry.target;
const target = parseInt(counter.getAttribute('data-target'));
const duration = 2000;
const increment = target / (duration / 16);
let current = 0;
const updateCounter = () => {
current += increment;
if (current < target) {
// Format number with K for thousands
let displayNum = Math.ceil(current);
if (displayNum >= 1000) {
counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';
} else {
counter.textContent = displayNum.toLocaleString();
}
requestAnimationFrame(updateCounter);
} else {
// Final formatting
if (target >= 1000) {
counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';
counter.classList.add('formatted');
} else {
counter.textContent = target.toLocaleString();
}
counter.classList.add('animated');
setTimeout(() => counter.classList.remove('animated'), 600);
}
};
updateCounter();
observer.unobserve(counter);
}
});
}, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });
statNumbers.forEach(counter => observer.observe(counter));
}
// Call this function when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
animateFactsCounters();
});
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Akıllı Zekat Hesaplayıcı
Hassas ve kapsamlı araç
Para ve Birikimler
Nakit (elde veya evde)
$
Banka bakiyeleri
$
Altın ve Gümüş
Fiyatları Yenile
Altın ağırlığı (gram)
Güncel altın fiyatı (gram)
Canlı
$ / gram
Gümüş ağırlığı (gram)
Güncel gümüş fiyatı (gram)
Canlı
$ / gram
Zekat Özeti
Toplam varlıklar:
0.00 $
Net zekata tabi varlıklar:
0.00 $
Nisap değeri (85g altın):
...
Uygunluk kontrolü için veri girin
Ödenecek Zekat (%2.5)
0.00 $
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Danışmanlık ve bağış için WhatsApp ile iletişime geçin
</a>
// Zekat Hesaplayıcı Mantığı
let zakatcalculatorPricesLoaded = false;
// DOM yüklendiğinde hesaplayıcıyı başlat
document.addEventListener('DOMContentLoaded', () => {
zakatcalculatorFetchPrices();
zakatcalculatorCalculate();
// Gerçek zamanlı hesaplama için input dinleyicileri ekle
const inputs = document.querySelectorAll('.zakatcalculator-section__input');
inputs.forEach(input => {
input.addEventListener('input', zakatcalculatorCalculate);
});
// Kullanıcı yazarken sayıları biçimlendir
inputs.forEach(input => {
input.addEventListener('blur', function() {
if (this.value) {
const value = parseFloat(this.value);
if (!isNaN(value)) {
this.value = value.toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
}
});
input.addEventListener('focus', function() {
if (this.value) {
this.value = this.value.replace(/[^\d.]/g, '');
}
});
});
});
// Metal fiyatlarını getir
async function zakatcalculatorFetchPrices() {
const goldInput = document.getElementById('goldPrice');
const silverInput = document.getElementById('silverPrice');
const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');
const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');
if (!refreshButton || !refreshIcon) return;
// Yükleniyor durumunu göster
refreshButton.disabled = true;
refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');
goldInput.classList.add('zakatcalculator-section__input--loading');
silverInput.classList.add('zakatcalculator-section__input--loading');
try {
// Gecikme ile API çağrısını simüle et
await new Promise(resolve => setTimeout(resolve, 1500));
// Mock veri (gerçek uygulamada bir API'den çekilir)
const liveGoldPrice = 76.50;
const liveSilverPrice = 0.95;
// Inputları güncelle
goldInput.value = liveGoldPrice.toFixed(2);
silverInput.value = liveSilverPrice.toFixed(2);
// Yükleniyor durumunu kaldır
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--valid');
silverInput.classList.add('zakatcalculator-section__input--valid');
zakatcalculatorPricesLoaded = true;
// Başarılı geri bildirimi göster
refreshButton.innerHTML = ' Güncellendi';
refreshButton.style.backgroundColor = '#617f67';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} catch (error) {
console.error("Fiyatlar alınamadı", error);
// Yedek değerler
goldInput.value = 75.00;
silverInput.value = 0.90;
// Hata durumunu göster
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--invalid');
silverInput.classList.add('zakatcalculator-section__input--invalid');
refreshButton.innerHTML = ' Güncelleme Başarısız';
refreshButton.style.backgroundColor = '#dc2626';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} finally {
refreshButton.disabled = false;
refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');
// Zekatı yeniden hesapla
zakatcalculatorCalculate();
}
}
// Zekat hesapla
function zakatcalculatorCalculate() {
const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;
const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;
const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;
const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;
const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;
const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;
// Toplamları hesapla
const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);
const nisabThreshold = 85 * goldPrice;
// Görünümü güncelle
document.getElementById('totalAssetsDisplay').textContent =
formatCurrency(totalAssets);
document.getElementById('netAssetsDisplay').textContent =
formatCurrency(totalAssets);
if (goldPrice > 0) {
document.getElementById('nisabValueDisplay').textContent =
formatCurrency(nisabThreshold);
} else {
document.getElementById('nisabValueDisplay').textContent = '...';
}
// Durum ve son zekatı güncelle
const statusBadge = document.getElementById('statusBadge');
const finalDisplay = document.getElementById('finalZakatDisplay');
const payButton = document.querySelector('.zakatcalculator-section__pay-button');
if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {
const zakatAmount = totalAssets * 0.025;
finalDisplay.textContent = formatCurrency(zakatAmount);
// Durum rozetini güncelle
statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';
// Ödeme butonunu etkinleştir
payButton.disabled = false;
payButton.innerHTML = ' Şimdi Zekat Ver';
} else {
finalDisplay.textContent = '0.00 $';
// Durum rozetini güncelle
if (!zakatcalculatorPricesLoaded) {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else if (totalAssets < nisabThreshold) {
statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
}
// Ödeme butonunu devre dışı bırak
payButton.disabled = true;
payButton.innerHTML = ' Şimdi Zekat Ver';
}
}
// Para birimini biçimlendir
function formatCurrency(amount) {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount);
}
// Zekatı sepete ekle
function zakatcalculatorAddToCart() {
const amountText = document.getElementById('finalZakatDisplay').textContent;
const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, ""));
if (amount > 0 && !isNaN(amount)) {
// Mevcut addToCart fonksiyonunu kullan
if (typeof addToCart === 'function') {
addToCart('Hesaplanan Zekat', amount, 'Zekat');
} else {
// addToCart tanımlı değilse yedek
alert(`Hesaplanan Zekat miktarı: ${amountText}`);
}
} else {
alert("Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.");
}
}
// Girdi doğrulama
function validateZakatInput(input) {
const value = parseFloat(input.value);
const min = parseFloat(input.getAttribute('min')) || 0;
if (isNaN(value) || value < min) {
input.classList.add('zakatcalculator-section__input--invalid');
return false;
} else {
input.classList.remove('zakatcalculator-section__input--invalid');
input.classList.add('zakatcalculator-section__input--valid');
return true;
}
}
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Akıllı Zekat Hesaplayıcı
Hassas ve kapsamlı araç
Para ve Birikimler
Nakit (elde veya evde)
$
Banka bakiyeleri
$
Altın ve Gümüş
Fiyatları Yenile
Altın ağırlığı (gram)
Güncel altın fiyatı (gram)
Canlı
$ / gram
Gümüş ağırlığı (gram)
Güncel gümüş fiyatı (gram)
Canlı
$ / gram
Zekat Özeti
Toplam varlıklar:
0.00 $
Net zekata tabi varlıklar:
0.00 $
Nisap değeri (85g altın):
...
Uygunluk kontrolü için veri girin
Ödenecek Zekat (%2.5)
0.00 $
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Danışmanlık ve bağış için WhatsApp ile iletişime geçin
</a>
// Zekat Hesaplayıcı Mantığı
let zakatcalculatorPricesLoaded = false;
// DOM yüklendiğinde hesaplayıcıyı başlat
document.addEventListener('DOMContentLoaded', () => {
zakatcalculatorFetchPrices();
zakatcalculatorCalculate();
// Gerçek zamanlı hesaplama için input dinleyicileri ekle
const inputs = document.querySelectorAll('.zakatcalculator-section__input');
inputs.forEach(input => {
input.addEventListener('input', zakatcalculatorCalculate);
});
// Kullanıcı yazarken sayıları biçimlendir
inputs.forEach(input => {
input.addEventListener('blur', function() {
if (this.value) {
const value = parseFloat(this.value);
if (!isNaN(value)) {
this.value = value.toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
}
});
input.addEventListener('focus', function() {
if (this.value) {
this.value = this.value.replace(/[^\d.]/g, '');
}
});
});
});
// Metal fiyatlarını getir
async function zakatcalculatorFetchPrices() {
const goldInput = document.getElementById('goldPrice');
const silverInput = document.getElementById('silverPrice');
const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');
const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');
if (!refreshButton || !refreshIcon) return;
// Yükleniyor durumunu göster
refreshButton.disabled = true;
refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');
goldInput.classList.add('zakatcalculator-section__input--loading');
silverInput.classList.add('zakatcalculator-section__input--loading');
try {
// Gecikme ile API çağrısını simüle et
await new Promise(resolve => setTimeout(resolve, 1500));
// Mock veri (gerçek uygulamada bir API'den çekilir)
const liveGoldPrice = 76.50;
const liveSilverPrice = 0.95;
// Inputları güncelle
goldInput.value = liveGoldPrice.toFixed(2);
silverInput.value = liveSilverPrice.toFixed(2);
// Yükleniyor durumunu kaldır
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--valid');
silverInput.classList.add('zakatcalculator-section__input--valid');
zakatcalculatorPricesLoaded = true;
// Başarılı geri bildirimi göster
refreshButton.innerHTML = ' Güncellendi';
refreshButton.style.backgroundColor = '#617f67';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} catch (error) {
console.error("Fiyatlar alınamadı", error);
// Yedek değerler
goldInput.value = 75.00;
silverInput.value = 0.90;
// Hata durumunu göster
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--invalid');
silverInput.classList.add('zakatcalculator-section__input--invalid');
refreshButton.innerHTML = ' Güncelleme Başarısız';
refreshButton.style.backgroundColor = '#dc2626';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} finally {
refreshButton.disabled = false;
refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');
// Zekatı yeniden hesapla
zakatcalculatorCalculate();
}
}
// Zekat hesapla
function zakatcalculatorCalculate() {
const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;
const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;
const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;
const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;
const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;
const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;
// Toplamları hesapla
const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);
const nisabThreshold = 85 * goldPrice;
// Görünümü güncelle
document.getElementById('totalAssetsDisplay').textContent =
formatCurrency(totalAssets);
document.getElementById('netAssetsDisplay').textContent =
formatCurrency(totalAssets);
if (goldPrice > 0) {
document.getElementById('nisabValueDisplay').textContent =
formatCurrency(nisabThreshold);
} else {
document.getElementById('nisabValueDisplay').textContent = '...';
}
// Durum ve son zekatı güncelle
const statusBadge = document.getElementById('statusBadge');
const finalDisplay = document.getElementById('finalZakatDisplay');
const payButton = document.querySelector('.zakatcalculator-section__pay-button');
if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {
const zakatAmount = totalAssets * 0.025;
finalDisplay.textContent = formatCurrency(zakatAmount);
// Durum rozetini güncelle
statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';
// Ödeme butonunu etkinleştir
payButton.disabled = false;
payButton.innerHTML = ' Şimdi Zekat Ver';
} else {
finalDisplay.textContent = '0.00 $';
// Durum rozetini güncelle
if (!zakatcalculatorPricesLoaded) {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else if (totalAssets < nisabThreshold) {
statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
}
// Ödeme butonunu devre dışı bırak
payButton.disabled = true;
payButton.innerHTML = ' Şimdi Zekat Ver';
}
}
// Para birimini biçimlendir
function formatCurrency(amount) {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount);
}
// Zekatı sepete ekle
function zakatcalculatorAddToCart() {
const amountText = document.getElementById('finalZakatDisplay').textContent;
const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, ""));
if (amount > 0 && !isNaN(amount)) {
// Mevcut addToCart fonksiyonunu kullan
if (typeof addToCart === 'function') {
addToCart('Hesaplanan Zekat', amount, 'Zekat');
} else {
// addToCart tanımlı değilse yedek
alert(`Hesaplanan Zekat miktarı: ${amountText}`);
}
} else {
alert("Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.");
}
}
// Girdi doğrulama
function validateZakatInput(input) {
const value = parseFloat(input.value);
const min = parseFloat(input.getAttribute('min')) || 0;
if (isNaN(value) || value < min) {
input.classList.add('zakatcalculator-section__input--invalid');
return false;
} else {
input.classList.remove('zakatcalculator-section__input--invalid');
input.classList.add('zakatcalculator-section__input--valid');
return true;
}
}
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Akıllı Zekat Hesaplayıcı
Hassas ve kapsamlı araç
Para ve Birikimler
Nakit (elde veya evde)
$
Banka bakiyeleri
$
Altın ve Gümüş
Fiyatları Yenile
Altın ağırlığı (gram)
Güncel altın fiyatı (gram)
Canlı
$ / gram
Gümüş ağırlığı (gram)
Güncel gümüş fiyatı (gram)
Canlı
$ / gram
Zekat Özeti
Toplam varlıklar:
0.00 $
Net zekata tabi varlıklar:
0.00 $
Nisap değeri (85g altın):
...
Uygunluk kontrolü için veri girin
Ödenecek Zekat (%2.5)
0.00 $
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Danışmanlık ve bağış için WhatsApp ile iletişime geçin
</a>
// Zekat Hesaplayıcı Mantığı
let zakatcalculatorPricesLoaded = false;
// DOM yüklendiğinde hesaplayıcıyı başlat
document.addEventListener('DOMContentLoaded', () => {
zakatcalculatorFetchPrices();
zakatcalculatorCalculate();
// Gerçek zamanlı hesaplama için input dinleyicileri ekle
const inputs = document.querySelectorAll('.zakatcalculator-section__input');
inputs.forEach(input => {
input.addEventListener('input', zakatcalculatorCalculate);
});
// Kullanıcı yazarken sayıları biçimlendir
inputs.forEach(input => {
input.addEventListener('blur', function() {
if (this.value) {
const value = parseFloat(this.value);
if (!isNaN(value)) {
this.value = value.toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
}
});
input.addEventListener('focus', function() {
if (this.value) {
this.value = this.value.replace(/[^\d.]/g, '');
}
});
});
});
// Metal fiyatlarını getir
async function zakatcalculatorFetchPrices() {
const goldInput = document.getElementById('goldPrice');
const silverInput = document.getElementById('silverPrice');
const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');
const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');
if (!refreshButton || !refreshIcon) return;
// Yükleniyor durumunu göster
refreshButton.disabled = true;
refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');
goldInput.classList.add('zakatcalculator-section__input--loading');
silverInput.classList.add('zakatcalculator-section__input--loading');
try {
// Gecikme ile API çağrısını simüle et
await new Promise(resolve => setTimeout(resolve, 1500));
// Mock veri (gerçek uygulamada bir API'den çekilir)
const liveGoldPrice = 76.50;
const liveSilverPrice = 0.95;
// Inputları güncelle
goldInput.value = liveGoldPrice.toFixed(2);
silverInput.value = liveSilverPrice.toFixed(2);
// Yükleniyor durumunu kaldır
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--valid');
silverInput.classList.add('zakatcalculator-section__input--valid');
zakatcalculatorPricesLoaded = true;
// Başarılı geri bildirimi göster
refreshButton.innerHTML = ' Güncellendi';
refreshButton.style.backgroundColor = '#617f67';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} catch (error) {
console.error("Fiyatlar alınamadı", error);
// Yedek değerler
goldInput.value = 75.00;
silverInput.value = 0.90;
// Hata durumunu göster
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--invalid');
silverInput.classList.add('zakatcalculator-section__input--invalid');
refreshButton.innerHTML = ' Güncelleme Başarısız';
refreshButton.style.backgroundColor = '#dc2626';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} finally {
refreshButton.disabled = false;
refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');
// Zekatı yeniden hesapla
zakatcalculatorCalculate();
}
}
// Zekat hesapla
function zakatcalculatorCalculate() {
const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;
const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;
const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;
const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;
const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;
const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;
// Toplamları hesapla
const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);
const nisabThreshold = 85 * goldPrice;
// Görünümü güncelle
document.getElementById('totalAssetsDisplay').textContent =
formatCurrency(totalAssets);
document.getElementById('netAssetsDisplay').textContent =
formatCurrency(totalAssets);
if (goldPrice > 0) {
document.getElementById('nisabValueDisplay').textContent =
formatCurrency(nisabThreshold);
} else {
document.getElementById('nisabValueDisplay').textContent = '...';
}
// Durum ve son zekatı güncelle
const statusBadge = document.getElementById('statusBadge');
const finalDisplay = document.getElementById('finalZakatDisplay');
const payButton = document.querySelector('.zakatcalculator-section__pay-button');
if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {
const zakatAmount = totalAssets * 0.025;
finalDisplay.textContent = formatCurrency(zakatAmount);
// Durum rozetini güncelle
statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';
// Ödeme butonunu etkinleştir
payButton.disabled = false;
payButton.innerHTML = ' Şimdi Zekat Ver';
} else {
finalDisplay.textContent = '0.00 $';
// Durum rozetini güncelle
if (!zakatcalculatorPricesLoaded) {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else if (totalAssets < nisabThreshold) {
statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
}
// Ödeme butonunu devre dışı bırak
payButton.disabled = true;
payButton.innerHTML = ' Şimdi Zekat Ver';
}
}
// Para birimini biçimlendir
function formatCurrency(amount) {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount);
}
// Zekatı sepete ekle
function zakatcalculatorAddToCart() {
const amountText = document.getElementById('finalZakatDisplay').textContent;
const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, ""));
if (amount > 0 && !isNaN(amount)) {
// Mevcut addToCart fonksiyonunu kullan
if (typeof addToCart === 'function') {
addToCart('Hesaplanan Zekat', amount, 'Zekat');
} else {
// addToCart tanımlı değilse yedek
alert(`Hesaplanan Zekat miktarı: ${amountText}`);
}
} else {
alert("Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.");
}
}
// Girdi doğrulama
function validateZakatInput(input) {
const value = parseFloat(input.value);
const min = parseFloat(input.getAttribute('min')) || 0;
if (isNaN(value) || value < min) {
input.classList.add('zakatcalculator-section__input--invalid');
return false;
} else {
input.classList.remove('zakatcalculator-section__input--invalid');
input.classList.add('zakatcalculator-section__input--valid');
return true;
}
}
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Akıllı Zekat Hesaplayıcı
Hassas ve kapsamlı araç
Para ve Birikimler
Nakit (elde veya evde)
$
Banka bakiyeleri
$
Altın ve Gümüş
Fiyatları Yenile
Altın ağırlığı (gram)
Güncel altın fiyatı (gram)
Canlı
$ / gram
Gümüş ağırlığı (gram)
Güncel gümüş fiyatı (gram)
Canlı
$ / gram
Zekat Özeti
Toplam varlıklar:
0.00 $
Net zekata tabi varlıklar:
0.00 $
Nisap değeri (85g altın):
...
Uygunluk kontrolü için veri girin
Ödenecek Zekat (%2.5)
0.00 $
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Danışmanlık ve bağış için WhatsApp ile iletişime geçin
</a>
// Zekat Hesaplayıcı Mantığı
let zakatcalculatorPricesLoaded = false;
// DOM yüklendiğinde hesaplayıcıyı başlat
document.addEventListener('DOMContentLoaded', () => {
zakatcalculatorFetchPrices();
zakatcalculatorCalculate();
// Gerçek zamanlı hesaplama için input dinleyicileri ekle
const inputs = document.querySelectorAll('.zakatcalculator-section__input');
inputs.forEach(input => {
input.addEventListener('input', zakatcalculatorCalculate);
});
// Kullanıcı yazarken sayıları biçimlendir
inputs.forEach(input => {
input.addEventListener('blur', function() {
if (this.value) {
const value = parseFloat(this.value);
if (!isNaN(value)) {
this.value = value.toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
}
});
input.addEventListener('focus', function() {
if (this.value) {
this.value = this.value.replace(/[^\d.]/g, '');
}
});
});
});
// Metal fiyatlarını getir
async function zakatcalculatorFetchPrices() {
const goldInput = document.getElementById('goldPrice');
const silverInput = document.getElementById('silverPrice');
const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');
const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');
if (!refreshButton || !refreshIcon) return;
// Yükleniyor durumunu göster
refreshButton.disabled = true;
refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');
goldInput.classList.add('zakatcalculator-section__input--loading');
silverInput.classList.add('zakatcalculator-section__input--loading');
try {
// Gecikme ile API çağrısını simüle et
await new Promise(resolve => setTimeout(resolve, 1500));
// Mock veri (gerçek uygulamada bir API'den çekilir)
const liveGoldPrice = 76.50;
const liveSilverPrice = 0.95;
// Inputları güncelle
goldInput.value = liveGoldPrice.toFixed(2);
silverInput.value = liveSilverPrice.toFixed(2);
// Yükleniyor durumunu kaldır
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--valid');
silverInput.classList.add('zakatcalculator-section__input--valid');
zakatcalculatorPricesLoaded = true;
// Başarılı geri bildirimi göster
refreshButton.innerHTML = ' Güncellendi';
refreshButton.style.backgroundColor = '#617f67';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} catch (error) {
console.error("Fiyatlar alınamadı", error);
// Yedek değerler
goldInput.value = 75.00;
silverInput.value = 0.90;
// Hata durumunu göster
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--invalid');
silverInput.classList.add('zakatcalculator-section__input--invalid');
refreshButton.innerHTML = ' Güncelleme Başarısız';
refreshButton.style.backgroundColor = '#dc2626';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} finally {
refreshButton.disabled = false;
refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');
// Zekatı yeniden hesapla
zakatcalculatorCalculate();
}
}
// Zekat hesapla
function zakatcalculatorCalculate() {
const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;
const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;
const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;
const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;
const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;
const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;
// Toplamları hesapla
const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);
const nisabThreshold = 85 * goldPrice;
// Görünümü güncelle
document.getElementById('totalAssetsDisplay').textContent =
formatCurrency(totalAssets);
document.getElementById('netAssetsDisplay').textContent =
formatCurrency(totalAssets);
if (goldPrice > 0) {
document.getElementById('nisabValueDisplay').textContent =
formatCurrency(nisabThreshold);
} else {
document.getElementById('nisabValueDisplay').textContent = '...';
}
// Durum ve son zekatı güncelle
const statusBadge = document.getElementById('statusBadge');
const finalDisplay = document.getElementById('finalZakatDisplay');
const payButton = document.querySelector('.zakatcalculator-section__pay-button');
if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {
const zakatAmount = totalAssets * 0.025;
finalDisplay.textContent = formatCurrency(zakatAmount);
// Durum rozetini güncelle
statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';
// Ödeme butonunu etkinleştir
payButton.disabled = false;
payButton.innerHTML = ' Şimdi Zekat Ver';
} else {
finalDisplay.textContent = '0.00 $';
// Durum rozetini güncelle
if (!zakatcalculatorPricesLoaded) {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else if (totalAssets < nisabThreshold) {
statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
}
// Ödeme butonunu devre dışı bırak
payButton.disabled = true;
payButton.innerHTML = ' Şimdi Zekat Ver';
}
}
// Para birimini biçimlendir
function formatCurrency(amount) {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount);
}
// Zekatı sepete ekle
function zakatcalculatorAddToCart() {
const amountText = document.getElementById('finalZakatDisplay').textContent;
const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, ""));
if (amount > 0 && !isNaN(amount)) {
// Mevcut addToCart fonksiyonunu kullan
if (typeof addToCart === 'function') {
addToCart('Hesaplanan Zekat', amount, 'Zekat');
} else {
// addToCart tanımlı değilse yedek
alert(`Hesaplanan Zekat miktarı: ${amountText}`);
}
} else {
alert("Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.");
}
}
// Girdi doğrulama
function validateZakatInput(input) {
const value = parseFloat(input.value);
const min = parseFloat(input.getAttribute('min')) || 0;
if (isNaN(value) || value < min) {
input.classList.add('zakatcalculator-section__input--invalid');
return false;
} else {
input.classList.remove('zakatcalculator-section__input--invalid');
input.classList.add('zakatcalculator-section__input--valid');
return true;
}
}
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Akıllı Zekat Hesaplayıcı
Hassas ve kapsamlı araç
Para ve Birikimler
Nakit (elde veya evde)
$
Banka bakiyeleri
$
Altın ve Gümüş
Fiyatları Yenile
Altın ağırlığı (gram)
Güncel altın fiyatı (gram)
Canlı
$ / gram
Gümüş ağırlığı (gram)
Güncel gümüş fiyatı (gram)
Canlı
$ / gram
Zekat Özeti
Toplam varlıklar:
0.00 $
Net zekata tabi varlıklar:
0.00 $
Nisap değeri (85g altın):
...
Uygunluk kontrolü için veri girin
Ödenecek Zekat (%2.5)
0.00 $
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Danışmanlık ve bağış için WhatsApp ile iletişime geçin
</a>
// Zekat Hesaplayıcı Mantığı
let zakatcalculatorPricesLoaded = false;
// DOM yüklendiğinde hesaplayıcıyı başlat
document.addEventListener('DOMContentLoaded', () => {
zakatcalculatorFetchPrices();
zakatcalculatorCalculate();
// Gerçek zamanlı hesaplama için input dinleyicileri ekle
const inputs = document.querySelectorAll('.zakatcalculator-section__input');
inputs.forEach(input => {
input.addEventListener('input', zakatcalculatorCalculate);
});
// Kullanıcı yazarken sayıları biçimlendir
inputs.forEach(input => {
input.addEventListener('blur', function() {
if (this.value) {
const value = parseFloat(this.value);
if (!isNaN(value)) {
this.value = value.toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
}
});
input.addEventListener('focus', function() {
if (this.value) {
this.value = this.value.replace(/[^\d.]/g, '');
}
});
});
});
// Metal fiyatlarını getir
async function zakatcalculatorFetchPrices() {
const goldInput = document.getElementById('goldPrice');
const silverInput = document.getElementById('silverPrice');
const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');
const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');
if (!refreshButton || !refreshIcon) return;
// Yükleniyor durumunu göster
refreshButton.disabled = true;
refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');
goldInput.classList.add('zakatcalculator-section__input--loading');
silverInput.classList.add('zakatcalculator-section__input--loading');
try {
// Gecikme ile API çağrısını simüle et
await new Promise(resolve => setTimeout(resolve, 1500));
// Mock veri (gerçek uygulamada bir API'den çekilir)
const liveGoldPrice = 76.50;
const liveSilverPrice = 0.95;
// Inputları güncelle
goldInput.value = liveGoldPrice.toFixed(2);
silverInput.value = liveSilverPrice.toFixed(2);
// Yükleniyor durumunu kaldır
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--valid');
silverInput.classList.add('zakatcalculator-section__input--valid');
zakatcalculatorPricesLoaded = true;
// Başarılı geri bildirimi göster
refreshButton.innerHTML = ' Güncellendi';
refreshButton.style.backgroundColor = '#617f67';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} catch (error) {
console.error("Fiyatlar alınamadı", error);
// Yedek değerler
goldInput.value = 75.00;
silverInput.value = 0.90;
// Hata durumunu göster
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--invalid');
silverInput.classList.add('zakatcalculator-section__input--invalid');
refreshButton.innerHTML = ' Güncelleme Başarısız';
refreshButton.style.backgroundColor = '#dc2626';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} finally {
refreshButton.disabled = false;
refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');
// Zekatı yeniden hesapla
zakatcalculatorCalculate();
}
}
// Zekat hesapla
function zakatcalculatorCalculate() {
const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;
const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;
const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;
const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;
const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;
const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;
// Toplamları hesapla
const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);
const nisabThreshold = 85 * goldPrice;
// Görünümü güncelle
document.getElementById('totalAssetsDisplay').textContent =
formatCurrency(totalAssets);
document.getElementById('netAssetsDisplay').textContent =
formatCurrency(totalAssets);
if (goldPrice > 0) {
document.getElementById('nisabValueDisplay').textContent =
formatCurrency(nisabThreshold);
} else {
document.getElementById('nisabValueDisplay').textContent = '...';
}
// Durum ve son zekatı güncelle
const statusBadge = document.getElementById('statusBadge');
const finalDisplay = document.getElementById('finalZakatDisplay');
const payButton = document.querySelector('.zakatcalculator-section__pay-button');
if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {
const zakatAmount = totalAssets * 0.025;
finalDisplay.textContent = formatCurrency(zakatAmount);
// Durum rozetini güncelle
statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';
// Ödeme butonunu etkinleştir
payButton.disabled = false;
payButton.innerHTML = ' Şimdi Zekat Ver';
} else {
finalDisplay.textContent = '0.00 $';
// Durum rozetini güncelle
if (!zakatcalculatorPricesLoaded) {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else if (totalAssets < nisabThreshold) {
statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
}
// Ödeme butonunu devre dışı bırak
payButton.disabled = true;
payButton.innerHTML = ' Şimdi Zekat Ver';
}
}
// Para birimini biçimlendir
function formatCurrency(amount) {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount);
}
// Zekatı sepete ekle
function zakatcalculatorAddToCart() {
const amountText = document.getElementById('finalZakatDisplay').textContent;
const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, ""));
if (amount > 0 && !isNaN(amount)) {
// Mevcut addToCart fonksiyonunu kullan
if (typeof addToCart === 'function') {
addToCart('Hesaplanan Zekat', amount, 'Zekat');
} else {
// addToCart tanımlı değilse yedek
alert(`Hesaplanan Zekat miktarı: ${amountText}`);
}
} else {
alert("Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.");
}
}
// Girdi doğrulama
function validateZakatInput(input) {
const value = parseFloat(input.value);
const min = parseFloat(input.getAttribute('min')) || 0;
if (isNaN(value) || value < min) {
input.classList.add('zakatcalculator-section__input--invalid');
return false;
} else {
input.classList.remove('zakatcalculator-section__input--invalid');
input.classList.add('zakatcalculator-section__input--valid');
return true;
}
}
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Akıllı Zekat Hesaplayıcı
Hassas ve kapsamlı araç
Para ve Birikimler
Nakit (elde veya evde)
$
Banka bakiyeleri
$
Altın ve Gümüş
Fiyatları Yenile
Altın ağırlığı (gram)
Güncel altın fiyatı (gram)
Canlı
$ / gram
Gümüş ağırlığı (gram)
Güncel gümüş fiyatı (gram)
Canlı
$ / gram
Zekat Özeti
Toplam varlıklar:
0.00 $
Net zekata tabi varlıklar:
0.00 $
Nisap değeri (85g altın):
...
Uygunluk kontrolü için veri girin
Ödenecek Zekat (%2.5)
0.00 $
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Danışmanlık ve bağış için WhatsApp ile iletişime geçin
</a>
// Zekat Hesaplayıcı Mantığı
let zakatcalculatorPricesLoaded = false;
// DOM yüklendiğinde hesaplayıcıyı başlat
document.addEventListener('DOMContentLoaded', () => {
zakatcalculatorFetchPrices();
zakatcalculatorCalculate();
// Gerçek zamanlı hesaplama için input dinleyicileri ekle
const inputs = document.querySelectorAll('.zakatcalculator-section__input');
inputs.forEach(input => {
input.addEventListener('input', zakatcalculatorCalculate);
});
// Kullanıcı yazarken sayıları biçimlendir
inputs.forEach(input => {
input.addEventListener('blur', function() {
if (this.value) {
const value = parseFloat(this.value);
if (!isNaN(value)) {
this.value = value.toLocaleString('en-US', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
}
});
input.addEventListener('focus', function() {
if (this.value) {
this.value = this.value.replace(/[^\d.]/g, '');
}
});
});
});
// Metal fiyatlarını getir
async function zakatcalculatorFetchPrices() {
const goldInput = document.getElementById('goldPrice');
const silverInput = document.getElementById('silverPrice');
const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');
const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');
if (!refreshButton || !refreshIcon) return;
// Yükleniyor durumunu göster
refreshButton.disabled = true;
refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');
goldInput.classList.add('zakatcalculator-section__input--loading');
silverInput.classList.add('zakatcalculator-section__input--loading');
try {
// Gecikme ile API çağrısını simüle et
await new Promise(resolve => setTimeout(resolve, 1500));
// Mock veri (gerçek uygulamada bir API'den çekilir)
const liveGoldPrice = 76.50;
const liveSilverPrice = 0.95;
// Inputları güncelle
goldInput.value = liveGoldPrice.toFixed(2);
silverInput.value = liveSilverPrice.toFixed(2);
// Yükleniyor durumunu kaldır
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--valid');
silverInput.classList.add('zakatcalculator-section__input--valid');
zakatcalculatorPricesLoaded = true;
// Başarılı geri bildirimi göster
refreshButton.innerHTML = ' Güncellendi';
refreshButton.style.backgroundColor = '#617f67';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} catch (error) {
console.error("Fiyatlar alınamadı", error);
// Yedek değerler
goldInput.value = 75.00;
silverInput.value = 0.90;
// Hata durumunu göster
goldInput.classList.remove('zakatcalculator-section__input--loading');
silverInput.classList.remove('zakatcalculator-section__input--loading');
goldInput.classList.add('zakatcalculator-section__input--invalid');
silverInput.classList.add('zakatcalculator-section__input--invalid');
refreshButton.innerHTML = ' Güncelleme Başarısız';
refreshButton.style.backgroundColor = '#dc2626';
refreshButton.style.color = 'white';
setTimeout(() => {
refreshButton.innerHTML = ' Fiyatları Yenile';
refreshButton.style.backgroundColor = '';
refreshButton.style.color = '';
}, 2000);
} finally {
refreshButton.disabled = false;
refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');
// Zekatı yeniden hesapla
zakatcalculatorCalculate();
}
}
// Zekat hesapla
function zakatcalculatorCalculate() {
const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;
const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;
const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;
const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;
const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;
const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;
// Toplamları hesapla
const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);
const nisabThreshold = 85 * goldPrice;
// Görünümü güncelle
document.getElementById('totalAssetsDisplay').textContent =
formatCurrency(totalAssets);
document.getElementById('netAssetsDisplay').textContent =
formatCurrency(totalAssets);
if (goldPrice > 0) {
document.getElementById('nisabValueDisplay').textContent =
formatCurrency(nisabThreshold);
} else {
document.getElementById('nisabValueDisplay').textContent = '...';
}
// Durum ve son zekatı güncelle
const statusBadge = document.getElementById('statusBadge');
const finalDisplay = document.getElementById('finalZakatDisplay');
const payButton = document.querySelector('.zakatcalculator-section__pay-button');
if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {
const zakatAmount = totalAssets * 0.025;
finalDisplay.textContent = formatCurrency(zakatAmount);
// Durum rozetini güncelle
statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';
// Ödeme butonunu etkinleştir
payButton.disabled = false;
payButton.innerHTML = ' Şimdi Zekat Ver';
} else {
finalDisplay.textContent = '0.00 $';
// Durum rozetini güncelle
if (!zakatcalculatorPricesLoaded) {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else if (totalAssets < nisabThreshold) {
statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
} else {
statusBadge.textContent = 'Uygunluk kontrolü için veri girin';
statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';
}
// Ödeme butonunu devre dışı bırak
payButton.disabled = true;
payButton.innerHTML = ' Şimdi Zekat Ver';
}
}
// Para birimini biçimlendir
function formatCurrency(amount) {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(amount);
}
// Zekatı sepete ekle
function zakatcalculatorAddToCart() {
const amountText = document.getElementById('finalZakatDisplay').textContent;
const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, ""));
if (amount > 0 && !isNaN(amount)) {
// Mevcut addToCart fonksiyonunu kullan
if (typeof addToCart === 'function') {
addToCart('Hesaplanan Zekat', amount, 'Zekat');
} else {
// addToCart tanımlı değilse yedek
alert(`Hesaplanan Zekat miktarı: ${amountText}`);
}
} else {
alert("Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.");
}
}
// Girdi doğrulama
function validateZakatInput(input) {
const value = parseFloat(input.value);
const min = parseFloat(input.getAttribute('min')) || 0;
if (isNaN(value) || value < min) {
input.classList.add('zakatcalculator-section__input--invalid');
return false;
} else {
input.classList.remove('zakatcalculator-section__input--invalid');
input.classList.add('zakatcalculator-section__input--valid');
return true;
}
}
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_drupal_block->render_content() (line 106 of themes/gavias_kunco/gva_content_builder/gva_drupal_block.php).
element_gva_drupal_block->render_content(Array, '') (Line: 110)
gavias_content_builder_render_element('gva_drupal_block', Array) (Line: 54)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Stratejik Ortaklıklar
Umut yaratmada ortaklarımız
<a href="/tr/node/269" hreflang="tr">Clone</a>
<a href="/tr/node/268" hreflang="tr">Clone </a>
<a href="/tr/node/267" hreflang="tr">Clone</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Stratejik Ortaklıklar
Umut yaratmada ortaklarımız
<a href="/tr/node/269" hreflang="tr">Clone</a>
<a href="/tr/node/268" hreflang="tr">Clone </a>
<a href="/tr/node/267" hreflang="tr">Clone</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Stratejik Ortaklıklar
Umut yaratmada ortaklarımız
<a href="/tr/node/269" hreflang="tr">Clone</a>
<a href="/tr/node/268" hreflang="tr">Clone </a>
<a href="/tr/node/267" hreflang="tr">Clone</a>
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Stratejik Ortaklıklar
Umut yaratmada ortaklarımız
<a href="/tr/node/269" hreflang="tr">Clone</a>
<a href="/tr/node/268" hreflang="tr">Clone </a>
<a href="/tr/node/267" hreflang="tr">Clone</a>
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
Stratejik Ortaklıklar
Umut yaratmada ortaklarımız
<a href="/tr/node/269" hreflang="tr">Clone</a>
<a href="/tr/node/268" hreflang="tr">Clone </a>
<a href="/tr/node/267" hreflang="tr">Clone</a>
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
Stratejik Ortaklıklar
Umut yaratmada ortaklarımız
<a href="/tr/node/269" hreflang="tr">Clone</a>
<a href="/tr/node/268" hreflang="tr">Clone </a>
<a href="/tr/node/267" hreflang="tr">Clone</a>
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"front"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n \r\n Acil Çağrı\r\n \r\n Onlar için bir yardım eli olun\r\n kriz zamanlarında\r\n \r\n \r\n \"Wejdan Charity\" olarak, bağışlarınızı çatışma ve yoksulluktan etkilenen bölgelerdeki ihtiyaç sahiplerine ulaştırmak için tam şeffaflıkla çalışıyoruz.\r\n \r\n \r\n <a>\r\n Hayır Bağışları \r\n </a>\r\n <a>\r\n Projelerimiz \r\n </a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container","class":"before-help-region"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"title":"Take action for animals now","link":"#","button_title":"Donation Now","button_align":"button-right-v2","style_text":"text-light","style_button":"btn-theme","donorbox":"off","target":"off","el_class":"margin","animate":"fade-up","animate_delay":"0"},"editing":false,"element_name":"gva_call_to_action"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","bg_color":"#f9fafb"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"about"},"col_lg":12,"elements":[{"settings":{"content":" \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Biz Kimiz\r\n \r\n \r\n Umut ekiyoruz.. \r\n ve insanları ve geleceği inşa ediyoruz\r\n \r\n \r\n Wejdan Charity, bağışçılar ile ihtiyaç sahipleri arasında bir köprü olma vizyonuyla kurulmuş önde gelen bir insani yardım kuruluşudur.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Aşamaları\r\n Sürekli bir büyüme yolculuğu\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Çalışma Alanları\r\n İhtiyacın olduğu yere ulaşıyoruz\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"Gülümsemeler getirmek için tutkuyla çalışıyoruz\"\r\n \r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner","margin_top":"30","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n \r\n \r\n Girişimler & Programlar\r\n Çalışma Alanlarımız\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Devam Eden Hayır İşleri\r\n Su kuyuları, cami inşaatı\r\n \r\n \r\n \r\n \r\n \r\n \r\n Öğrenci Sponsorlukları\r\n Eğitim yoluyla geleceği inşa etmek\r\n \r\n \r\n \r\n \r\n \r\n \r\n İnsani Vakalar\r\n Hastaların tedavisi, ameliyatlar\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Üretken aileleri güçlendirmek\r\n \r\n \r\n <a>Programlarımız ve girişimlerimiz hakkında daha fazla bilgi edinin</a>\r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container","class":"newsfront"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n Haberlerimiz\r\n \r\n \r\n \r\n Bağış hikayesini anlatan haberler\r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"news: news Block -tr","block_drupal":"views_block__news_block_4","hidden_title":"on","align_title":"title-align-left","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_padding","layout":"container-fw","element":"gva_row","class":"sliderfrontpage"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover"},"col_lg":12,"elements":[{"settings":{"title_admin":"news: campigns-tr","block_drupal":"views_block__news_block_6","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n Seçkin Projelerimiz\r\n \r\n \r\n \r\n Wejdan Charity olarak, felaketlerden, krizlerden ve savaşlardan etkilenen ihtiyaç sahibi topluluklara destek ve yardım sağlamayı amaçlıyoruz; yaşam kalitesini iyileştirmek ve sürdürülebilir kalkınmayı teşvik etmek için çalışıyoruz. Projelerimiz birçok alanı kapsamaktadır:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Yardım Projeleri\r\n Felaket ve savaşlara acil müdahale, gıda ve ilaç sağlama.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gelişim Projeleri\r\n Toplulukları güçlendirme ve kapasitelerini artırma.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sezonluk Projeler\r\n Ramazan kampanyaları, Kurban ve kışlık giysiler.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Vakıf Projeleri\r\n Ahirete yatırım—camiler, kuyular ve hayır vakıfları.\r\n <a>Projeleri İncele</a>\r\n \r\n \r\n \r\n \r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"partner"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n\r\n \r\n \r\n Sayılarla Başarılarımız\r\n Güveniniz fark yaratıyor\r\n \r\n \r\n\r\n \r\n \r\n 0\r\n Dünya genelinde faydalananlar\r\n \r\n \r\n \r\n 0\r\n Uygulanan projeler\r\n \r\n \r\n \r\n 0\r\n Faaliyet gösterdiğimiz ülkeler\r\n \r\n \r\n \r\n 0\r\n Gönüllüler\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Enhanced counter animation for facts section\r\nfunction animateFactsCounters() {\r\n const statNumbers = document.querySelectorAll('.facts-section__stat-number');\r\n \r\n const observer = new IntersectionObserver((entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n const counter = entry.target;\r\n const target = parseInt(counter.getAttribute('data-target'));\r\n const duration = 2000;\r\n const increment = target / (duration / 16);\r\n \r\n let current = 0;\r\n const updateCounter = () => {\r\n current += increment;\r\n if (current < target) {\r\n // Format number with K for thousands\r\n let displayNum = Math.ceil(current);\r\n if (displayNum >= 1000) {\r\n counter.textContent = (displayNum / 1000).toFixed(1).replace('.0', '') + 'K';\r\n } else {\r\n counter.textContent = displayNum.toLocaleString();\r\n }\r\n requestAnimationFrame(updateCounter);\r\n } else {\r\n // Final formatting\r\n if (target >= 1000) {\r\n counter.textContent = (target / 1000).toFixed(1).replace('.0', '') + 'K';\r\n counter.classList.add('formatted');\r\n } else {\r\n counter.textContent = target.toLocaleString();\r\n }\r\n counter.classList.add('animated');\r\n setTimeout(() => counter.classList.remove('animated'), 600);\r\n }\r\n };\r\n updateCounter();\r\n observer.unobserve(counter);\r\n }\r\n });\r\n }, { threshold: 0.5, rootMargin: '0px 0px -50px 0px' });\r\n \r\n statNumbers.forEach(counter => observer.observe(counter));\r\n}\r\n\r\n// Call this function when DOM is loaded\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n animateFactsCounters();\r\n});\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","margin_top":"0","margin_bottom":"30"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"animate_delay":"0","content":"\r\n\r\n \r\n \r\n \r\n \r\nAkıllı Zekat Hesaplayıcı\r\n Hassas ve kapsamlı araç\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Para ve Birikimler\r\n \r\n \r\n \r\n Nakit (elde veya evde)\r\n \r\n \r\n $\r\n \r\n \r\n \r\n Banka bakiyeleri\r\n \r\n \r\n $\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Altın ve Gümüş\r\n \r\n \r\n Fiyatları Yenile\r\n \r\n \r\n \r\n \r\n \r\n Altın ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel altın fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n\r\n \r\n \r\n Gümüş ağırlığı (gram)\r\n \r\n \r\n \r\n \r\n Güncel gümüş fiyatı (gram)\r\n \r\n Canlı\r\n \r\n \r\n \r\n \r\n $ / gram\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Zekat Özeti\r\n \r\n \r\n Toplam varlıklar:\r\n 0.00 $\r\n \r\n \r\n Net zekata tabi varlıklar:\r\n 0.00 $\r\n \r\n \r\n Nisap değeri (85g altın):\r\n ...\r\n \r\n \r\n Uygunluk kontrolü için veri girin\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ödenecek Zekat (%2.5)\r\n 0.00 $\r\n \r\n \r\n <a>\r\n \r\n Danışmanlık ve bağış için WhatsApp ile iletişime geçin\r\n </a>\r\n \r\n \r\n \r\n \r\n\r\n\r\n// Zekat Hesaplayıcı Mantığı\r\nlet zakatcalculatorPricesLoaded = false;\r\n\r\n// DOM yüklendiğinde hesaplayıcıyı başlat\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n zakatcalculatorFetchPrices();\r\n zakatcalculatorCalculate();\r\n \r\n // Gerçek zamanlı hesaplama için input dinleyicileri ekle\r\n const inputs = document.querySelectorAll('.zakatcalculator-section__input');\r\n inputs.forEach(input => {\r\n input.addEventListener('input', zakatcalculatorCalculate);\r\n });\r\n \r\n // Kullanıcı yazarken sayıları biçimlendir\r\n inputs.forEach(input => {\r\n input.addEventListener('blur', function() {\r\n if (this.value) {\r\n const value = parseFloat(this.value);\r\n if (!isNaN(value)) {\r\n this.value = value.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n });\r\n }\r\n }\r\n });\r\n \r\n input.addEventListener('focus', function() {\r\n if (this.value) {\r\n this.value = this.value.replace(/[^\\d.]/g, '');\r\n }\r\n });\r\n });\r\n});\r\n\r\n// Metal fiyatlarını getir\r\nasync function zakatcalculatorFetchPrices() {\r\n const goldInput = document.getElementById('goldPrice');\r\n const silverInput = document.getElementById('silverPrice');\r\n const refreshButton = document.querySelector('.zakatcalculator-section__refresh-button');\r\n const refreshIcon = document.querySelector('.zakatcalculator-section__refresh-icon');\r\n \r\n if (!refreshButton || !refreshIcon) return;\r\n \r\n // Yükleniyor durumunu göster\r\n refreshButton.disabled = true;\r\n refreshIcon.classList.add('zakatcalculator-section__refresh-icon--spinning');\r\n goldInput.classList.add('zakatcalculator-section__input--loading');\r\n silverInput.classList.add('zakatcalculator-section__input--loading');\r\n \r\n try {\r\n // Gecikme ile API çağrısını simüle et\r\n await new Promise(resolve => setTimeout(resolve, 1500));\r\n \r\n // Mock veri (gerçek uygulamada bir API'den çekilir)\r\n const liveGoldPrice = 76.50;\r\n const liveSilverPrice = 0.95;\r\n \r\n // Inputları güncelle\r\n goldInput.value = liveGoldPrice.toFixed(2);\r\n silverInput.value = liveSilverPrice.toFixed(2);\r\n \r\n // Yükleniyor durumunu kaldır\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--valid');\r\n silverInput.classList.add('zakatcalculator-section__input--valid');\r\n \r\n zakatcalculatorPricesLoaded = true;\r\n \r\n // Başarılı geri bildirimi göster\r\n refreshButton.innerHTML = ' Güncellendi';\r\n refreshButton.style.backgroundColor = '#617f67';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } catch (error) {\r\n console.error(\"Fiyatlar alınamadı\", error);\r\n \r\n // Yedek değerler\r\n goldInput.value = 75.00;\r\n silverInput.value = 0.90;\r\n \r\n // Hata durumunu göster\r\n goldInput.classList.remove('zakatcalculator-section__input--loading');\r\n silverInput.classList.remove('zakatcalculator-section__input--loading');\r\n goldInput.classList.add('zakatcalculator-section__input--invalid');\r\n silverInput.classList.add('zakatcalculator-section__input--invalid');\r\n \r\n refreshButton.innerHTML = ' Güncelleme Başarısız';\r\n refreshButton.style.backgroundColor = '#dc2626';\r\n refreshButton.style.color = 'white';\r\n \r\n setTimeout(() => {\r\n refreshButton.innerHTML = ' Fiyatları Yenile';\r\n refreshButton.style.backgroundColor = '';\r\n refreshButton.style.color = '';\r\n }, 2000);\r\n \r\n } finally {\r\n refreshButton.disabled = false;\r\n refreshIcon.classList.remove('zakatcalculator-section__refresh-icon--spinning');\r\n \r\n // Zekatı yeniden hesapla\r\n zakatcalculatorCalculate();\r\n }\r\n}\r\n\r\n// Zekat hesapla\r\nfunction zakatcalculatorCalculate() {\r\n const cashHand = parseFloat(document.getElementById('cashHand').value) || 0;\r\n const cashBank = parseFloat(document.getElementById('cashBank').value) || 0;\r\n const goldWeight = parseFloat(document.getElementById('goldWeight').value) || 0;\r\n const goldPrice = parseFloat(document.getElementById('goldPrice').value) || 0;\r\n const silverWeight = parseFloat(document.getElementById('silverWeight').value) || 0;\r\n const silverPrice = parseFloat(document.getElementById('silverPrice').value) || 0;\r\n \r\n // Toplamları hesapla\r\n const totalAssets = cashHand + cashBank + (goldWeight * goldPrice) + (silverWeight * silverPrice);\r\n const nisabThreshold = 85 * goldPrice;\r\n \r\n // Görünümü güncelle\r\n document.getElementById('totalAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n document.getElementById('netAssetsDisplay').textContent = \r\n formatCurrency(totalAssets);\r\n \r\n if (goldPrice > 0) {\r\n document.getElementById('nisabValueDisplay').textContent = \r\n formatCurrency(nisabThreshold);\r\n } else {\r\n document.getElementById('nisabValueDisplay').textContent = '...';\r\n }\r\n \r\n // Durum ve son zekatı güncelle\r\n const statusBadge = document.getElementById('statusBadge');\r\n const finalDisplay = document.getElementById('finalZakatDisplay');\r\n const payButton = document.querySelector('.zakatcalculator-section__pay-button');\r\n \r\n if (totalAssets >= nisabThreshold && goldPrice > 0 && zakatcalculatorPricesLoaded) {\r\n const zakatAmount = totalAssets * 0.025;\r\n finalDisplay.textContent = formatCurrency(zakatAmount);\r\n \r\n // Durum rozetini güncelle\r\n statusBadge.textContent = '✓ Zekat gereklidir (Nisaba ulaşıldı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--eligible';\r\n \r\n // Ödeme butonunu etkinleştir\r\n payButton.disabled = false;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n \r\n } else {\r\n finalDisplay.textContent = '0.00 $';\r\n \r\n // Durum rozetini güncelle\r\n if (!zakatcalculatorPricesLoaded) {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else if (totalAssets < nisabThreshold) {\r\n statusBadge.textContent = 'Zekat gerekli değildir (Nisaba ulaşılmadı)';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n } else {\r\n statusBadge.textContent = 'Uygunluk kontrolü için veri girin';\r\n statusBadge.className = 'zakatcalculator-section__status zakatcalculator-section__status--not-eligible';\r\n }\r\n \r\n // Ödeme butonunu devre dışı bırak\r\n payButton.disabled = true;\r\n payButton.innerHTML = ' Şimdi Zekat Ver';\r\n }\r\n}\r\n\r\n// Para birimini biçimlendir\r\nfunction formatCurrency(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n }).format(amount);\r\n}\r\n\r\n// Zekatı sepete ekle\r\nfunction zakatcalculatorAddToCart() {\r\n const amountText = document.getElementById('finalZakatDisplay').textContent;\r\n const amount = parseFloat(amountText.replace(/[^0-9.-]+/g, \"\"));\r\n \r\n if (amount > 0 && !isNaN(amount)) {\r\n // Mevcut addToCart fonksiyonunu kullan\r\n if (typeof addToCart === 'function') {\r\n addToCart('Hesaplanan Zekat', amount, 'Zekat');\r\n } else {\r\n // addToCart tanımlı değilse yedek\r\n alert(`Hesaplanan Zekat miktarı: ${amountText}`);\r\n }\r\n } else {\r\n alert(\"Geçersiz zekat miktarı. Lütfen girdilerinizi kontrol edin.\");\r\n }\r\n}\r\n\r\n// Girdi doğrulama\r\nfunction validateZakatInput(input) {\r\n const value = parseFloat(input.value);\r\n const min = parseFloat(input.getAttribute('min')) || 0;\r\n \r\n if (isNaN(value) || value < min) {\r\n input.classList.add('zakatcalculator-section__input--invalid');\r\n return false;\r\n } else {\r\n input.classList.remove('zakatcalculator-section__input--invalid');\r\n input.classList.add('zakatcalculator-section__input--valid');\r\n return true;\r\n }\r\n}\r\n"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"},{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","layout":"container-fw","class":"zakatcalc"},"columns":[{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","el_class":"partner"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\nStratejik Ortaklıklar\r\n\r\nUmut yaratmada ortaklarımız\r\n\r\n\r\n\r\n\r\n\r\n","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"},{"settings":{"title_admin":"Partners: Partners Block - tr","block_drupal":"views_block__partners_block_3","hidden_title":"on","align_title":"title-align-right","remove_margin":"on","style_text":"text-dark","animate_delay":"0"},"editing":false,"element_name":"gva_drupal_block"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'tr') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'tr') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)