کتاب مقدس آنلاین: تفاوت میان نسخهها
ظاهر
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
(۸۸ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
خط ۱: | خط ۱: | ||
<html lang="fa" dir="rtl"> | <html lang="fa" dir="rtl"> | ||
<head> | <head> | ||
خط ۵: | خط ۴: | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>کتاب مقدس - مطالعه آنلاین</title> | <title>کتاب مقدس - مطالعه آنلاین</title> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |||
<style> | <style> | ||
:root { | :root { | ||
--primary-color: #2c3e50; | --primary-color: #2c3e50; | ||
--secondary-color: # | --secondary-color: #8B4513; | ||
--accent-color: # | --accent-color: #A52A2A; | ||
--light-color: # | --light-color: #f8f5f2; | ||
--dark-color: # | --dark-color: #3E2723; | ||
--font-family: ' | --border-color: #D2B48C; | ||
--font-family: 'Times New Roman', serif; | |||
} | } | ||
خط ۲۳: | خط ۲۴: | ||
body { | body { | ||
font-family: var(--font-family); | font-family: var(--font-family); | ||
background-color: # | background-color: #f5f1eb; | ||
color: var(--dark-color); | color: var(--dark-color); | ||
line-height: 1.6; | line-height: 1.6; | ||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" opacity="0.05"><path fill="%238B4513" d="M20,20 L80,20 L80,80 L20,80 Z" stroke="%238B4513" stroke-width="2"/></svg>'); | |||
padding: 0; | |||
margin: 0; | |||
} | |||
/* مخفی کردن هدرهای اضافی ویکی */ | |||
body > header:first-child, | |||
.wiki-header, | |||
.mw-header, | |||
#mw-header, | |||
#header, | |||
.header { | |||
display: none !important; | |||
} | } | ||
خط ۳۱: | خط ۴۵: | ||
max-width: 1200px; | max-width: 1200px; | ||
margin: 0 auto; | margin: 0 auto; | ||
padding: 15px; | padding: 5px 15px; | ||
} | } | ||
header { | .app-header { | ||
text-align: center; | text-align: center; | ||
margin-bottom: 20px; | margin-bottom: 20px; | ||
padding: 15px | padding: 15px 20px; | ||
border-bottom: | border-bottom: 2px solid var(--border-color); | ||
background: linear-gradient(to bottom, #f9f6f2, #f0e6d6); | |||
border-radius: 8px; | |||
box-shadow: 0 2px 8px rgba(0,0,0,0.1); | |||
position: relative; | |||
} | } | ||
h1 { | .breadcrumb { | ||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
gap: 8px; | |||
margin-bottom: 12px; | |||
font-size: 1.1rem; | |||
color: var(--dark-color); | |||
direction: rtl; | |||
} | |||
.breadcrumb-home { | |||
color: var(--accent-color); | |||
text-decoration: none; | |||
transition: color 0.3s; | |||
font-weight: 500; | |||
} | |||
.breadcrumb-home:hover { | |||
color: var(--primary-color); | |||
text-decoration: underline; | |||
} | |||
.breadcrumb-separator { | |||
color: var(--border-color); | |||
font-weight: 300; | |||
} | |||
.breadcrumb-current { | |||
color: var(--primary-color); | |||
font-weight: bold; | |||
} | |||
.app-header h1 { | |||
color: var(--primary-color); | color: var(--primary-color); | ||
margin-bottom: 8px; | margin-bottom: 8px; | ||
font-size: 1. | font-size: 1.8rem; | ||
text-shadow: 1px 1px 2px rgba(0,0,0,0.1); | |||
font-weight: 700; | |||
text-align: center; | |||
} | } | ||
.description { | .description { | ||
color: # | color:#808080; | ||
font-size: | font-size:1rem; | ||
font-style: italic; | |||
margin-top: 5px; | |||
text-align: center; | |||
} | } | ||
. | .selector-container { | ||
display: | display: grid; | ||
grid-template-columns: 1fr 1fr; | |||
gap: 15px; | gap: 15px; | ||
margin-bottom: | margin-bottom: 20px; | ||
background: white; | |||
padding: 15px; | |||
border-radius: 8px; | |||
box-shadow: 0 4px 8px rgba(0,0,0,0.08); | |||
border: 1px solid var(--border-color); | |||
direction: rtl; | |||
text-align: right; | |||
} | } | ||
.selector-box { | .selector-box { | ||
background: white; | background: white; | ||
border-radius: | border-radius: 6px; | ||
padding: 12px; | |||
padding: | border: 1px solid var(--border-color); | ||
} | } | ||
.selector-title { | .selector-title { | ||
font-size: | font-size: 1rem; | ||
margin-bottom: | margin-bottom: 8px; | ||
color: var(--primary-color); | color: var(--primary-color); | ||
border-bottom: | border-bottom: 1px solid var(--border-color); | ||
padding-bottom: | padding-bottom: 5px; | ||
text-align: center; | |||
} | } | ||
خط ۸۴: | خط ۱۴۲: | ||
width: 100%; | width: 100%; | ||
padding: 10px 12px; | padding: 10px 12px; | ||
border: 1px solid | border: 1px solid var(--border-color); | ||
border-radius: | border-radius: 4px; | ||
background-color: white; | background-color: white; | ||
font-size: 0.95rem; | font-size: 0.95rem; | ||
color: var(--dark-color); | color: var(--dark-color); | ||
cursor: pointer; | cursor: pointer; | ||
transition: | transition: all 0.3s; | ||
font-family: var(--font-family); | |||
text-align: right; | |||
direction: rtl; | |||
} | } | ||
select:focus { | select:focus { | ||
outline: none; | outline: none; | ||
border-color: var(-- | border-color: var(--accent-color); | ||
box-shadow: 0 0 0 2px rgba(165, 42, 42, 0.2); | |||
} | } | ||
خط ۱۰۱: | خط ۱۶۳: | ||
background: white; | background: white; | ||
border-radius: 8px; | border-radius: 8px; | ||
box-shadow: 0 | box-shadow: 0 4px 12px rgba(0,0,0,0.1); | ||
padding: | padding: 25px; | ||
min-height: | min-height: 500px; | ||
border: 1px solid var(--border-color); | |||
margin-bottom: 20px; | |||
direction: rtl; | |||
text-align: right; | |||
} | } | ||
.chapter-title { | .chapter-title { | ||
text-align: center; | text-align: center; | ||
margin-bottom: | margin-bottom: 20px; | ||
color: var(--primary-color); | color: var(--primary-color); | ||
font-size: 1. | font-size: 1.5rem; | ||
padding-bottom: 10px; | |||
border-bottom: 2px solid var(--border-color); | |||
} | |||
.content-display { | |||
width: 100%; | |||
height: 650px; | |||
border: 1px solid var(--border-color); | |||
border-radius: 6px; | |||
background: white; | |||
} | } | ||
خط ۱۱۶: | خط ۱۹۲: | ||
display: flex; | display: flex; | ||
justify-content: space-between; | justify-content: space-between; | ||
align-items: center; | |||
margin-top: 25px; | margin-top: 25px; | ||
flex-wrap: wrap; | flex-wrap: wrap; | ||
gap: 10px; | gap: 10px; | ||
direction: rtl; | |||
} | } | ||
.nav-btn { | .nav-btn { | ||
padding: | padding: 12px 20px; | ||
background-color: var(--secondary-color); | background-color: var(--secondary-color); | ||
color: white; | color: white; | ||
border: none; | border: none; | ||
border-radius: | border-radius: 6px; | ||
cursor: pointer; | cursor: pointer; | ||
transition: | transition: all 0.3s; | ||
font-size: | font-size: 1rem; | ||
display: flex; | display: flex; | ||
align-items: center; | align-items: center; | ||
gap: 8px; | |||
font-family: var(--font-family); | |||
box-shadow: 0 2px 4px rgba(0,0,0,0.2); | |||
} | } | ||
.nav-btn:hover { | .nav-btn:hover { | ||
background-color: var(-- | background-color: var(--accent-color); | ||
transform: translateY(-2px); | |||
box-shadow: 0 4px 8px rgba(0,0,0,0.2); | |||
} | } | ||
.nav-btn:disabled { | .nav-btn:disabled { | ||
background-color: # | background-color: #b0a090; | ||
cursor: not-allowed; | cursor: not-allowed; | ||
transform: none; | |||
box-shadow: none; | |||
} | } | ||
خط ۱۵۲: | خط ۲۳۲: | ||
align-items: center; | align-items: center; | ||
justify-content: center; | justify-content: center; | ||
gap: | gap: 8px; | ||
padding: | padding: 12px 20px; | ||
background-color: | background-color: #87CEEB; | ||
color: | color: #000000; | ||
text-decoration: none; | text-decoration: none; | ||
border-radius: | border-radius: 6px; | ||
transition: | transition: all 0.3s; | ||
font-size: | font-size: 1rem; | ||
font-family: var(--font-family); | |||
box-shadow: 0 2px 4px rgba(0,0,0,0.2); | |||
} | } | ||
.wiki-link:hover { | .wiki-link:hover { | ||
background-color: # | background-color: #8B0000; | ||
transform: translateY(-2px); | |||
box-shadow: 0 4px 8px rgba(0,0,0,0.2); | |||
} | } | ||
خط ۱۷۹: | خط ۲۵۳: | ||
text-align: center; | text-align: center; | ||
color: #7f8c8d; | color: #7f8c8d; | ||
padding: | padding: 40px 20px; | ||
border: | border: 2px dashed var(--border-color); | ||
border-radius: 8px; | border-radius: 8px; | ||
background: | margin-top: 20px; | ||
font-size: 1.1rem; | |||
background-color: var(--light-color); | |||
} | } | ||
.access-denied { | .access-denied { | ||
text-align: center; | text-align: center; | ||
padding: | padding: 40px; | ||
background: #fee; | background: #fee; | ||
border-radius: 8px; | border-radius: 8px; | ||
border: 2px solid #f5c6cb; | border: 2px solid #f5c6cb; | ||
color: #721c24; | color: #721c24; | ||
margin-top: 20px; | |||
} | } | ||
.access-denied h3 { | .access-denied h3 { | ||
color: #721c24; | color: #721c24; | ||
margin-bottom: | margin-bottom: 15px; | ||
font-size: 1. | font-size: 1.5rem; | ||
} | } | ||
. | .info-message { | ||
text-align: center; | text-align: center; | ||
padding: 10px; | |||
background: #e7f3ff; | |||
background: # | |||
border-radius: 5px; | border-radius: 5px; | ||
margin-top: 10px; | |||
font-size: 0.9rem; | font-size: 0.9rem; | ||
color: #0066cc; | |||
} | } | ||
خط ۲۵۳: | خط ۲۹۰: | ||
@media (max-width: 768px) { | @media (max-width: 768px) { | ||
.container { | .container { | ||
padding: 10px; | padding: 8px 10px; | ||
} | } | ||
header { | .app-header { | ||
margin-bottom: 15px; | margin-bottom: 15px; | ||
padding: 10px | padding: 12px 15px; | ||
} | |||
.breadcrumb { | |||
font-size: 0.85rem; | |||
margin-bottom: 10px; | |||
} | } | ||
h1 { | .app-header h1 { | ||
font-size: 1. | font-size: 1.5rem; | ||
margin-bottom: | margin-bottom: 6px; | ||
} | } | ||
خط ۲۷۰: | خط ۳۱۲: | ||
} | } | ||
. | .selector-container { | ||
grid-template-columns: 1fr; | |||
gap: 10px; | gap: 10px; | ||
margin-bottom: 20px; | margin-bottom: 20px; | ||
padding: 15px; | |||
padding: | |||
} | } | ||
.bible-content { | .bible-content { | ||
padding: 15px; | padding: 15px; | ||
min-height: 450px; | |||
} | } | ||
.chapter-title { | .chapter-title { | ||
font-size: 1. | font-size: 1.3rem; | ||
margin-bottom: | margin-bottom: 15px; | ||
} | |||
.content-display { | |||
height: 500px; | |||
} | } | ||
.navigation { | .navigation { | ||
flex-direction: | flex-direction: column; | ||
gap: | gap: 10px; | ||
} | } | ||
.nav-btn, .wiki-link { | .nav-btn, .wiki-link { | ||
width: 100%; | |||
justify-content: center; | justify-content: center; | ||
} | } | ||
} | } | ||
@media (max-width: 480px) { | @media (max-width: 480px) { | ||
. | .content-display { | ||
height: | height: 450px; | ||
} | } | ||
. | .nav-btn, .wiki-link { | ||
padding: 10px 15px; | |||
font-size: 0.9rem; | |||
} | } | ||
. | .instructions { | ||
padding: 30px 15px; | |||
font-size: 1rem; | |||
} | } | ||
. | .app-header { | ||
padding: 10px 12px; | |||
} | } | ||
. | .app-header h1 { | ||
font-size: 1.3rem; | |||
} | } | ||
} | |||
/* استایل برای حالت انتخاب نشده */ | |||
.placeholder { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
color: #7f8c8d; | |||
text-align: center; | |||
} | |||
.placeholder i { | |||
font-size: 3rem; | |||
margin-bottom: 15px; | |||
color: var(--border-color); | |||
} | |||
/* استایل برای راستچین کامل */ | |||
option { | |||
direction: rtl; | |||
text-align: right; | |||
} | } | ||
</style> | </style> | ||
خط ۳۶۶: | خط ۳۹۴: | ||
<body> | <body> | ||
<div class="container"> | <div class="container"> | ||
<header> | <div class="app-header"> | ||
<h1>کتاب مقدس</h1> | <nav class="breadcrumb"> | ||
<p class="description">مطالعه | <a href="https://www.pediabible.com" class="breadcrumb-home">خانه</a> | ||
</ | <span class="breadcrumb-separator">/</span> | ||
<span class="breadcrumb-current">کتاب مقدس</span> | |||
</nav> | |||
<h1>کتاب مقدس آنلاین</h1> | |||
<p class="description">مطالعه ترجمههای مختلف بصورت کاربردی با واژه نامه تخصصی<br> | |||
ترجمهٔ هزارهٔ نو و مژده هماکنون قابل مطالعهاند و عهد جدید کامل شده است. واژهنامهها بهصورت روزانه و با دقت در حال اتصال و بهروزرسانی هستند تا خدمتی ماندگار برای نسل حال و آیندگان در خداوند بهجا بگذاریم.</p> | |||
</div> | |||
<div id="content-wrapper"> | <div id="content-wrapper"> | ||
خط ۳۸۱: | خط ۴۱۵: | ||
'pediabible.com', | 'pediabible.com', | ||
'www.pediabible.com', | 'www.pediabible.com', | ||
'localhost', | 'localhost', | ||
'127.0.0.1' | '127.0.0.1' | ||
]; | ]; | ||
خط ۳۸۸: | خط ۴۲۲: | ||
function isDomainAllowed() { | function isDomainAllowed() { | ||
const currentDomain = window.location.hostname; | const currentDomain = window.location.hostname; | ||
console.log('🔍 بررسی دامنه:', currentDomain); | |||
// اگر روی فایل محلی هستیم، اجازه بده | |||
if (!currentDomain || currentDomain === '' || currentDomain === 'null') { | |||
console.log('✅ فایل محلی - مجاز'); | |||
return true; | |||
} | |||
console.log( | const isAllowed = ALLOWED_DOMAINS.some(domain => { | ||
const match = currentDomain === domain || currentDomain.endsWith('.' + domain); | |||
if (match) { | |||
console.log(`✅ دامنه ${currentDomain} مجاز است`); | |||
} | |||
return match; | |||
}); | }); | ||
if (!isAllowed) { | |||
console.log(`❌ دامنه ${currentDomain} غیرمجاز است`); | |||
} | |||
return isAllowed; | return isAllowed; | ||
خط ۴۰۷: | خط ۴۵۰: | ||
wrapper.innerHTML = ` | wrapper.innerHTML = ` | ||
<div class="access-denied"> | <div class="access-denied"> | ||
<h3> | <h3><i class="fas fa-ban"></i> دسترسی محدود شده</h3> | ||
<p>این صفحه فقط بر روی دامنه <strong>pediabible.com</strong> قابل دسترسی است.</p> | <p>این صفحه فقط بر روی دامنه <strong>pediabible.com</strong> قابل دسترسی است.</p> | ||
<p>دامنه فعلی: <code>${window.location.hostname}</code></p> | <p>دامنه فعلی: <code>${window.location.hostname}</code></p> | ||
خط ۴۱۷: | خط ۴۶۰: | ||
// تابع اصلی بارگذاری برنامه | // تابع اصلی بارگذاری برنامه | ||
function loadApplication() { | function loadApplication() { | ||
console.log('🚀 شروع بارگذاری با بررسی امنیتی...'); | |||
if (!isDomainAllowed()) { | if (!isDomainAllowed()) { | ||
console.log('❌ دسترسی غیرمجاز - نمایش پیام خطا'); | |||
showAccessDenied(); | showAccessDenied(); | ||
return; | return; | ||
} | } | ||
console.log('✅ دامنه مجاز - بارگذاری برنامه اصلی'); | |||
// اگر دامنه مجاز باشد، برنامه اصلی بارگذاری میشود | // اگر دامنه مجاز باشد، برنامه اصلی بارگذاری میشود | ||
initializeBibleApp(); | initializeBibleApp(); | ||
} | } | ||
// دادههای کامل کتابهای مقدس | |||
const bibleBooks = { | |||
old: [ | |||
{ name: "پیدایش", chapters: 50, displayName: "پیدایش" }, | |||
{ name: "خروج", chapters: 40, displayName: "خروج" }, | |||
{ name: "لاویان", chapters: 27, displayName: "لاویان" }, | |||
{ name: "اعداد", chapters: 36, displayName: "اعداد" }, | |||
{ name: "تثنیه", chapters: 34, displayName: "تثنیه" }, | |||
{ name: "یوشع", chapters: 24, displayName: "یوشع" }, | |||
{ name: "داوران", chapters: 21, displayName: "داوران" }, | |||
{ name: "روت", chapters: 4, displayName: "روت" }, | |||
{ name: "اول سموئیل", chapters: 31, displayName: "اول سموئیل" }, | |||
{ name: "دوم سموئیل", chapters: 24, displayName: "دوم سموئیل" }, | |||
{ name: "اول پادشاهان", chapters: 22, displayName: "اول پادشاهان" }, | |||
{ name: "دوم پادشاهان", chapters: 25, displayName: "دوم پادشاهان" }, | |||
{ name: "اول تواریخ", chapters: 29, displayName: "اول تواریخ" }, | |||
{ name: "دوم تواریخ", chapters: 36, displayName: "دوم تواریخ" }, | |||
{ name: "عزرا", chapters: 10, displayName: "عزرا" }, | |||
{ name: "نحمیا", chapters: 13, displayName: "نحمیا" }, | |||
{ name: "استر", chapters: 10, displayName: "استر" }, | |||
{ name: "ایوب", chapters: 42, displayName: "ایوب" }, | |||
{ name: "مزامیر", chapters: 150, displayName: "مزامیر" }, | |||
{ name: "امثال سلیمان", chapters: 31, displayName: "امثال سلیمان" }, | |||
{ name: "جامعه", chapters: 12, displayName: "جامعه" }, | |||
{ name: "غزل غزلهای سلیمان", chapters: 8, displayName: "غزل غزلهای سلیمان" }, | |||
{ name: "اشعیا", chapters: 66, displayName: "اشعیا" }, | |||
{ name: "ارمیا", chapters: 52, displayName: "ارمیا" }, | |||
{ name: "مراثی ارمیا", chapters: 5, displayName: "مراثی ارمیا" }, | |||
{ name: "حزقیال", chapters: 48, displayName: "حزقیال" }, | |||
{ name: "دانیال", chapters: 12, displayName: "دانیال" }, | |||
{ name: "هوشع", chapters: 14, displayName: "هوشع" }, | |||
{ name: "یوئیل", chapters: 3, displayName: "یوئیل" }, | |||
{ name: "عاموس", chapters: 9, displayName: "عاموس" }, | |||
{ name: "عوبدیا", chapters: 1, displayName: "عوبدیا" }, | |||
{ name: "یونس", chapters: 4, displayName: "یونس" }, | |||
{ name: "میکاه", chapters: 7, displayName: "میکاه" }, | |||
{ name: "ناحوم", chapters: 3, displayName: "ناحوم" }, | |||
{ name: "حبقوق", chapters: 3, displayName: "حبقوق" }, | |||
{ name: "صفنیا", chapters: 3, displayName: "صفنیا" }, | |||
{ name: "حجی", chapters: 2, displayName: "حجی" }, | |||
{ name: "زکریا", chapters: 14, displayName: "زکریا" }, | |||
{ name: "ملاکی", chapters: 4, displayName: "ملاکی" } | |||
], | |||
new: [ | |||
{ name: "متی", chapters: 28, displayName: "انجیل به قلم متی" }, | |||
{ name: "مرقس", chapters: 16, displayName: "انجیل به قلم مرقس" }, | |||
{ name: "لوقا", chapters: 24, displayName: "انجیل به قلم لوقا" }, | |||
{ name: "یوحنا", chapters: 21, displayName: "انجیل به قلم یوحنا" }, | |||
{ name: "اعمال ", chapters: 28, displayName: "اعمال " }, | |||
{ name: "رومیان", chapters: 16, displayName: "رساله به رومیان" }, | |||
{ name: "اول قرنتیان", chapters: 16, displayName: "رساله اول به قرنتیان" }, | |||
{ name: "دوم قرنتیان", chapters: 13, displayName: "رساله دوم به قرنتیان" }, | |||
{ name: "غلاطیان", chapters: 6, displayName: "رساله به غلاطیان" }, | |||
{ name: "افسسیان", chapters: 6, displayName: "رساله به افسسیان" }, | |||
{ name: "فیلیپیان", chapters: 4, displayName: "رساله به فیلیپیان" }, | |||
{ name: "کولسیان", chapters: 4, displayName: "رساله به کولسیان" }, | |||
{ name: "اول تسالونیکیان", chapters: 5, displayName: "رساله اول به تسالونیکیان" }, | |||
{ name: "دوم تسالونیکیان", chapters: 3, displayName: "رساله دوم به تسالونیکیان" }, | |||
{ name: "اول تیموتائوس", chapters: 6, displayName: "رساله اول به تیموتائوس" }, | |||
{ name: "دوم تیموتائوس", chapters: 4, displayName: "رساله دوم به تیموتائوس" }, | |||
{ name: "تیتوس", chapters: 3, displayName: "رساله به تیتوس" }, | |||
{ name: "فیلیمون", chapters: 1, displayName: "رساله به فیلیمون" }, | |||
{ name: "عبرانیان", chapters: 13, displayName: "رساله به عبرانیان" }, | |||
{ name: "یعقوب", chapters: 5, displayName: "رساله یعقوب" }, | |||
{ name: "اول پطرس", chapters: 5, displayName: "رساله اول پطرس" }, | |||
{ name: "دوم پطرس", chapters: 3, displayName: "رساله دوم پطرس" }, | |||
{ name: "اول یوحنا", chapters: 5, displayName: "رساله اول یوحنا" }, | |||
{ name: "دوم یوحنا", chapters: 1, displayName: "رساله دوم یوحنا" }, | |||
{ name: "سوم یوحنا", chapters: 1, displayName: "رساله سوم یوحنا" }, | |||
{ name: "یهودا", chapters: 1, displayName: "رساله یهودا" }, | |||
{ name: "کتاب مکاشفه", chapters: 22, displayName: "کتاب مکاشفه " } | |||
] | |||
}; | |||
// 🔧 برنامه اصلی کتاب مقدس | // 🔧 برنامه اصلی کتاب مقدس | ||
خط ۴۳۲: | خط ۵۵۳: | ||
// ایجاد ساختار HTML برنامه | // ایجاد ساختار HTML برنامه | ||
wrapper.innerHTML = ` | wrapper.innerHTML = ` | ||
<div class=" | <div class="selector-container"> | ||
<div class="selector-box"> | |||
<h3 class="selector-title">ترجمه</h3> | |||
<select id="translation-select"> | |||
<option value="">انتخاب ترجمه</option> | |||
<option value="old">ترجمه قدیم</option> | |||
<option value="hejre_nou">هزاره نو</option> | |||
<option value="mozde">مژده</option> | |||
<option value="daneshname">دانشنامه</option> | |||
</select> | |||
</div> | |||
<div class="selector-box"> | <div class="selector-box"> | ||
<h3 class="selector-title">عهد</h3> | <h3 class="selector-title">عهد</h3> | ||
<select id="testament-select"> | <select id="testament-select" disabled> | ||
<option value=""> | <option value="">انتخاب عهد</option> | ||
<option value="old">عهد قدیم</option> | <option value="old">عهد قدیم</option> | ||
<option value="new">عهد جدید</option> | <option value="new">عهد جدید</option> | ||
خط ۴۴۵: | خط ۵۷۷: | ||
<h3 class="selector-title">کتاب</h3> | <h3 class="selector-title">کتاب</h3> | ||
<select id="book-select" disabled> | <select id="book-select" disabled> | ||
<option value=""> | <option value="">انتخاب کتاب</option> | ||
</select> | </select> | ||
</div> | </div> | ||
خط ۴۵۲: | خط ۵۸۴: | ||
<h3 class="selector-title">فصل</h3> | <h3 class="selector-title">فصل</h3> | ||
<select id="chapter-select" disabled> | <select id="chapter-select" disabled> | ||
<option value=""> | <option value="">انتخاب فصل</option> | ||
</select> | </select> | ||
</div> | </div> | ||
خط ۴۵۸: | خط ۵۹۰: | ||
<div class="bible-content"> | <div class="bible-content"> | ||
<h2 class="chapter-title" id="chapter-title">لطفاً | <h2 class="chapter-title" id="chapter-title">لطفاً ترجمه، کتاب و فصل مورد نظر را انتخاب کنید</h2> | ||
<div id="verses-container"> | <div id="verses-container"> | ||
<div class="instructions"> | <div class="instructions"> | ||
<p>برای مطالعه کتاب مقدس، لطفاً ابتدا عهد، | <div class="placeholder"> | ||
<i class="fas fa-book-open"></i> | |||
<p>برای مطالعه کتاب مقدس، لطفاً ابتدا ترجمه، سپس عهد، کتاب و فصل مورد نظر خود را انتخاب کنید.</p> | |||
</div> | |||
</div> | </div> | ||
</div> | |||
<div class="info-message"> | |||
<i class="fas fa-info-circle"></i> | |||
واژه ها در همین پنجره نمایش داده میشوند. برای تجربه بهتر مطالعه واژه در تب جدید: راست کلیک → Open in new tab | |||
</div> | </div> | ||
<div class="navigation"> | <div class="navigation"> | ||
<button class="nav-btn" id="prev-chapter" disabled> | <button class="nav-btn" id="prev-chapter" disabled> | ||
<a href="#" class="wiki-link" id="wiki-page-link" target="_blank" style="display: none;"> | <i class="fas fa-arrow-right"></i> | ||
<button class="nav-btn" id="next-chapter" disabled>فصل بعدی | فصل قبلی | ||
</button> | |||
<a href="#" class="wiki-link" id="wiki-page-link" target="_blank" style="display: none;"> | |||
<i class="fas fa-external-link-alt"></i> | |||
صفحه کامل | |||
</a> | |||
<button class="nav-btn" id="next-chapter" disabled> | |||
فصل بعدی | |||
<i class="fas fa-arrow-left"></i> | |||
</button> | |||
</div> | </div> | ||
</div> | </div> | ||
`; | `; | ||
// دادههای | // دادههای ترجمههای مختلف | ||
const | const translations = { | ||
old: | 'old': { | ||
name: 'ترجمه قدیم', | |||
baseUrl: 'https://www.pediabible.com/index.php?title=', | |||
getPageTitle: function(bookDisplayName, chapter) { | |||
return `${bookDisplayName} فصل ${chapter}`; | |||
} | |||
}, | |||
'hejre_nou': { | |||
name: 'هزاره نو', | |||
baseUrl: 'https://www.pediabible.com/index.php?title=', | |||
getPageTitle: function(bookDisplayName, chapter) { | |||
return `${bookDisplayName} هزاره نو فصل ${chapter}`; | |||
} | |||
}, | |||
'mozde': { | |||
name: 'مژده', | |||
baseUrl: 'https://www.pediabible.com/index.php?title=', | |||
getPageTitle: function(bookDisplayName, chapter) { | |||
return `${bookDisplayName} مژده فصل ${chapter}`; | |||
} | |||
}, | |||
'daneshname': { | |||
name: 'دانشنامه', | |||
baseUrl: 'https://www.pediabible.com/index.php?title=', | |||
getPageTitle: function(bookDisplayName, chapter) { | |||
return `${bookDisplayName} دانشنامه فصل ${chapter}`; | |||
} | |||
} | |||
}; | }; | ||
// عناصر DOM | // عناصر DOM | ||
const translationSelect = document.getElementById('translation-select'); | |||
const testamentSelect = document.getElementById('testament-select'); | const testamentSelect = document.getElementById('testament-select'); | ||
const bookSelect = document.getElementById('book-select'); | const bookSelect = document.getElementById('book-select'); | ||
خط ۵۱۵: | خط ۶۶۹: | ||
// متغیرهای وضعیت فعلی | // متغیرهای وضعیت فعلی | ||
let currentTranslation = ''; | |||
let currentTestament = ''; | let currentTestament = ''; | ||
let currentBook = ''; | let currentBook = ''; | ||
let currentChapter = 1; | let currentChapter = 1; | ||
// رویداد تغییر ترجمه | |||
translationSelect.addEventListener('change', function() { | |||
currentTranslation = this.value; | |||
if (currentTranslation) { | |||
testamentSelect.disabled = false; | |||
testamentSelect.value = ''; | |||
bookSelect.disabled = true; | |||
bookSelect.innerHTML = '<option value="">انتخاب کتاب</option>'; | |||
chapterSelect.disabled = true; | |||
chapterSelect.innerHTML = '<option value="">انتخاب فصل</option>'; | |||
resetContent(); | |||
} else { | |||
resetAll(); | |||
} | |||
}); | |||
// رویداد تغییر عهد | // رویداد تغییر عهد | ||
خط ۵۲۶: | خط ۶۹۷: | ||
if (currentTestament) { | if (currentTestament) { | ||
bookSelect.disabled = false; | bookSelect.disabled = false; | ||
bookSelect.innerHTML = '<option value=""> | bookSelect.innerHTML = '<option value="">انتخاب کتاب</option>'; | ||
bibleBooks[currentTestament].forEach((book, index) => { | |||
const option = document.createElement('option'); | const option = document.createElement('option'); | ||
option.value = index; | option.value = index; | ||
خط ۵۳۶: | خط ۷۰۷: | ||
chapterSelect.disabled = true; | chapterSelect.disabled = true; | ||
chapterSelect.innerHTML = '<option value=""> | chapterSelect.innerHTML = '<option value="">انتخاب فصل</option>'; | ||
resetContent(); | resetContent(); | ||
} else { | } else { | ||
bookSelect.disabled = true; | |||
bookSelect.innerHTML = '<option value="">انتخاب کتاب</option>'; | |||
chapterSelect.disabled = true; | |||
chapterSelect.innerHTML = '<option value="">انتخاب فصل</option>'; | |||
resetContent(); | |||
} | } | ||
}); | }); | ||
خط ۵۴۹: | خط ۷۲۴: | ||
if (currentBook !== '') { | if (currentBook !== '') { | ||
chapterSelect.disabled = false; | chapterSelect.disabled = false; | ||
chapterSelect.innerHTML = '<option value=""> | chapterSelect.innerHTML = '<option value="">انتخاب فصل</option>'; | ||
const bookIndex = parseInt(currentBook); | const bookIndex = parseInt(currentBook); | ||
const chaptersCount = | const chaptersCount = bibleBooks[currentTestament][bookIndex].chapters; | ||
for (let i = 1; i <= chaptersCount; i++) { | for (let i = 1; i <= chaptersCount; i++) { | ||
خط ۵۶۶: | خط ۷۴۱: | ||
} else { | } else { | ||
chapterSelect.disabled = true; | chapterSelect.disabled = true; | ||
chapterSelect.innerHTML = '<option value=""> | chapterSelect.innerHTML = '<option value="">انتخاب فصل</option>'; | ||
resetContent(); | resetContent(); | ||
} | } | ||
خط ۵۸۲: | خط ۷۵۷: | ||
}); | }); | ||
// نمایش فصل با iframe | // نمایش فصل با iframe - فقط محتوای اصلی | ||
function displayChapterWithIframe() { | function displayChapterWithIframe() { | ||
const bookIndex = parseInt(currentBook); | const bookIndex = parseInt(currentBook); | ||
const bookData = | const bookData = bibleBooks[currentTestament][bookIndex]; | ||
const bookName = bookData.name; | const bookName = bookData.name; | ||
const bookDisplayName = bookData.displayName; | const bookDisplayName = bookData.displayName; | ||
const translationName = translations[currentTranslation].name; | |||
chapterTitle.textContent = `${bookName} - فصل ${currentChapter}`; | chapterTitle.textContent = `${translationName} - ${bookName} - فصل ${currentChapter}`; | ||
const pageTitle = | const pageTitle = translations[currentTranslation].getPageTitle(bookDisplayName, currentChapter); | ||
const | const contentUrl = `${translations[currentTranslation].baseUrl}${encodeURIComponent(pageTitle)}&action=render`; | ||
versesContainer.innerHTML = ` | versesContainer.innerHTML = ` | ||
< | <iframe | ||
id="content-iframe" | |||
src="${contentUrl}" | |||
class="content-display" | |||
frameborder="0" | |||
loading="lazy" | |||
sandbox="allow-scripts allow-same-origin allow-forms allow-popups" | |||
allowfullscreen> | |||
</iframe> | |||
</ | |||
`; | `; | ||
// اضافه کردن | // اضافه کردن sandbox به iframe برای امنیت بیشتر | ||
const iframe = document.getElementById('content-iframe'); | |||
wikiPageLink.href = | wikiPageLink.href = `${translations[currentTranslation].baseUrl}${encodeURIComponent(pageTitle)}`; | ||
wikiPageLink.style.display = ' | wikiPageLink.style.display = 'flex'; | ||
updateNavigationButtons(); | updateNavigationButtons(); | ||
} | } | ||
function updateNavigationButtons() { | function updateNavigationButtons() { | ||
const bookIndex = parseInt(currentBook); | const bookIndex = parseInt(currentBook); | ||
const chaptersCount = | const chaptersCount = bibleBooks[currentTestament][bookIndex].chapters; | ||
prevChapterBtn.disabled = currentChapter <= 1; | prevChapterBtn.disabled = currentChapter <= 1; | ||
خط ۶۷۰: | خط ۸۰۸: | ||
nextChapterBtn.addEventListener('click', function() { | nextChapterBtn.addEventListener('click', function() { | ||
const bookIndex = parseInt(currentBook); | const bookIndex = parseInt(currentBook); | ||
const chaptersCount = | const chaptersCount = bibleBooks[currentTestament][bookIndex].chapters; | ||
if (currentChapter < chaptersCount) { | if (currentChapter < chaptersCount) { | ||
خط ۶۸۰: | خط ۸۱۸: | ||
function resetContent() { | function resetContent() { | ||
chapterTitle.textContent = 'لطفاً | chapterTitle.textContent = 'لطفاً ترجمه، کتاب و فصل مورد نظر را انتخاب کنید'; | ||
versesContainer.innerHTML = | versesContainer.innerHTML = ` | ||
<div class="instructions"> | |||
<div class="placeholder"> | |||
<i class="fas fa-book-open"></i> | |||
<p>برای مطالعه کتاب مقدس، لطفاً ابتدا ترجمه، سپس عهد، کتاب و فصل مورد نظر خود را انتخاب کنید.</p> | |||
</div> | |||
</div> | |||
`; | |||
prevChapterBtn.disabled = true; | prevChapterBtn.disabled = true; | ||
nextChapterBtn.disabled = true; | nextChapterBtn.disabled = true; | ||
خط ۶۸۸: | خط ۸۳۳: | ||
function resetAll() { | function resetAll() { | ||
testamentSelect.disabled = true; | |||
testamentSelect.innerHTML = '<option value="">انتخاب عهد</option>'; | |||
bookSelect.disabled = true; | bookSelect.disabled = true; | ||
bookSelect.innerHTML = '<option value=""> | bookSelect.innerHTML = '<option value="">انتخاب کتاب</option>'; | ||
chapterSelect.disabled = true; | chapterSelect.disabled = true; | ||
chapterSelect.innerHTML = '<option value=""> | chapterSelect.innerHTML = '<option value="">انتخاب فصل</option>'; | ||
resetContent(); | resetContent(); | ||
} | } | ||
خط ۷۰۵: | خط ۸۵۲: | ||
// 🔒 جلوگیری از دسترسی به توابع از کنسول | // 🔒 جلوگیری از دسترسی به توابع از کنسول | ||
Object.defineProperty(window, ' | Object.defineProperty(window, 'translations', { | ||
value: null, | value: null, | ||
writable: false, | writable: false, |
نسخهٔ کنونی تا ۱۱ اکتبر ۲۰۲۵، ساعت ۲۲:۰۹
کتاب مقدس آنلاین
مطالعه ترجمههای مختلف بصورت کاربردی با واژه نامه تخصصی
ترجمهٔ هزارهٔ نو و مژده هماکنون قابل مطالعهاند و عهد جدید کامل شده است. واژهنامهها بهصورت روزانه و با دقت در حال اتصال و بهروزرسانی هستند تا خدمتی ماندگار برای نسل حال و آیندگان در خداوند بهجا بگذاریم.