پرش به محتوا

تست: تفاوت میان نسخه‌ها

از دانشنامه کتاب مقدس
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۲۰: خط ۲۰:
             border-radius: 8px;
             border-radius: 8px;
             box-shadow: 0 0 10px rgba(0,0,0,0.1);
             box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        .header {
            background-color: #3e6f73;
            color: white;
            padding: 20px;
            border-radius: 8px;
            margin-bottom: 20px;
            text-align: center;
         }
         }
         h1 {
         h1 {
             text-align: center;
             margin: 0;
             color: #2c3e50;
             font-size: 24px;
             margin-bottom: 30px;
        }
        .filter-section {
             margin-bottom: 20px;
            padding: 0;
         }
         }
         .form-group {
         .form-group {
خط ۳۵: خط ۴۶:
             color: #495057;
             color: #495057;
         }
         }
         select, input[type="text"] {
         select {
             width: 100%;
             width: 100%;
             padding: 10px;
             padding: 10px;
خط ۴۲: خط ۵۳:
             font-size: 16px;
             font-size: 16px;
             box-sizing: border-box;
             box-sizing: border-box;
            background: white;
         }
         }
         .iframe-container {
         .content-frame {
             margin-top: 20px;
             margin-top: 20px;
             border: 1px solid #dee2e6;
             border: 1px solid #dee2e6;
             border-radius: 8px;
             border-radius: 8px;
             overflow: hidden;
             overflow: hidden;
            background: white;
         }
         }
         iframe {
         .clean-frame {
             width: 100%;
             width: 100%;
             height: 600px;
             height: 500px;
             border: none;
             border: none;
         }
         }
         .admin-section {
         .wiki-link {
             background: #e8f5e8;
             text-align: center;
            border: 1px solid #28a745;
             padding: 15px;
             padding: 15px;
             border-radius: 6px;
             background-color: #f8f9fa;
             margin-top: 15px;
             border-top: 1px solid #dee2e6;
            display: none;
         }
         }
         .user-section {
         .wiki-link a {
             background: #fff3cd;
             color: #3e6f73;
            border: 1px solid #ffeaa7;
             text-decoration: none;
             padding: 15px;
            border-radius: 6px;
            margin-top: 15px;
            display: none;
        }
        .admin-title {
            color: #155724;
             font-weight: bold;
             font-weight: bold;
             margin-bottom: 10px;
             padding: 8px 16px;
            border: 1px solid #3e6f73;
            border-radius: 4px;
            transition: all 0.3s;
         }
         }
         .user-title {
         .wiki-link a:hover {
             color: #856404;
             background-color: #3e6f73;
             font-weight: bold;
             color: white;
            margin-bottom: 10px;
         }
         }
         .loading {
         .empty-message {
             text-align: center;
             text-align: center;
             color: #007bff;
            padding: 40px;
             padding: 10px;
             color: #6c757d;
             font-style: italic;
         }
         }
     </style>
     </style>
خط ۸۹: خط ۹۶:
<body>
<body>
     <div class="container">
     <div class="container">
         <h1>کتابخانه پدیا بایبل</h1>
         <div class="header">
            <h1>کتابخانه پدیا بایبل</h1>
        </div>
          
          
         <div class="form-group">
         <div class="filter-section">
            <label for="bookSelect">انتخاب کتاب:</label>
            <select id="bookSelect">
                <option value="">-- لطفاً یک کتاب انتخاب کنید --</option>
                <option value="کتاب_مقدس">کتاب مقدس</option>
                <option value="انجیل_متی">انجیل متی</option>
                <option value="انجیل_مرقس">انجیل مرقس</option>
                <option value="مزامیر">مزامیر</option>
            </select>
        </div>
 
        <div id="adminSection" class="admin-section">
            <div class="admin-title">🔧 بخش مدیریت - ایجاد کتاب جدید</div>
             <div class="form-group">
             <div class="form-group">
                 <label for="bookSearch">نام کتاب جدید:</label>
                 <label for="categorySelect">دسته‌بندی:</label>
                 <input type="text" id="bookSearch" placeholder="نام کتاب جدید را وارد کرده و Enter بزنید...">
                 <select id="categorySelect">
                    <option value="all">همه</option>
                    <option value="کتاب">کتاب</option>
                    <option value="مقاله">مقاله</option>
                </select>
             </div>
             </div>
        </div>
              
 
        <div id="userSection" class="user-section">
             <div class="user-title">👤 بخش کاربران</div>
             <div class="form-group">
             <div class="form-group">
                 <label for="userSearch">جستجوی کتاب (فقط نمایش):</label>
                 <label for="bookSelect">انتخاب کتاب/مقاله:</label>
                 <input type="text" id="userSearch" placeholder="نام کتاب را برای نمایش وارد کنید...">
                 <select id="bookSelect">
                    <option value="">-- لطفاً یک مورد انتخاب کنید --</option>
                    <option value="کتاب_مقدس" data-category="کتاب">کتاب مقدس</option>
                    <option value="انجیل_متی" data-category="کتاب">انجیل متی</option>
                    <option value="انجیل_مرقس" data-category="کتاب">انجیل مرقس</option>
                    <option value="مزامیر" data-category="کتاب">مزامیر</option>
                    <option value="تفسیر_کتاب_مقدس" data-category="مقاله">تفسیر کتاب مقدس</option>
                    <option value="تاریخ_مسیحیت" data-category="مقاله">تاریخ مسیحیت</option>
                    <option value="الهیات_مسیحی" data-category="مقاله">الهیات مسیحی</option>
                </select>
             </div>
             </div>
         </div>
         </div>
          
          
         <div class="iframe-container">
         <div class="content-frame">
             <iframe id="contentFrame" src="about:blank"></iframe>
             <iframe id="contentFrame" class="clean-frame" src="about:blank"></iframe>
            <div class="wiki-link">
                <a id="wikiLink" href="#" target="_blank">📖 مطالعه کامل صفحه در ویکی</a>
            </div>
         </div>
         </div>
     </div>
     </div>


     <script>
     <script>
         class BookManager {
         document.addEventListener('DOMContentLoaded', function() {
            constructor() {
            const categorySelect = document.getElementById('categorySelect');
                this.bookSelect = document.getElementById('bookSelect');
            const bookSelect = document.getElementById('bookSelect');
                this.bookSearch = document.getElementById('bookSearch');
            const contentFrame = document.getElementById('contentFrame');
                this.userSearch = document.getElementById('userSearch');
            const wikiLink = document.getElementById('wikiLink');
                this.contentFrame = document.getElementById('contentFrame');
                this.adminSection = document.getElementById('adminSection');
                this.userSection = document.getElementById('userSection');
               
                this.DYNAMIC_BOOKS_KEY = 'pb_dynamic_books_v2';
                this.isAdmin = false;
                this.isCheckingAdmin = false;
               
                this.init();
            }
              
              
             async init() {
             const originalBooks = Array.from(bookSelect.options);
                await this.checkAdminStatus();
                this.loadDynamicBooks();
                this.setupEventListeners();
                this.showInitialBook();
            }
              
              
             // تشخیص مدیر از طریق تست دسترسی به ویکی
             // فیلتر کردن لیست بر اساس دسته‌بندی
             async checkAdminStatus() {
             function filterBooks() {
                 this.isCheckingAdmin = true;
                 const category = categorySelect.value;
                  
                  
                 try {
                 // پاک کردن لیست فعلی (به جز گزینه اول)
                    // تست ایجاد یک صفحه موقت برای بررسی دسترسی
                while (bookSelect.options.length > 1) {
                     const testPageName = `Temp_Test_${Date.now()}`;
                     bookSelect.remove(1);
                    const testUrl = `https://www.pediabible.com/index.php/${encodeURIComponent(testPageName)}`;
                }
               
                // اضافه کردن کتاب‌های فیلتر شده
                originalBooks.forEach((option, index) => {
                    if (index === 0) return; // گزینه اول را نادیده بگیر
                      
                      
                     const response = await fetch(testUrl, {
                     const bookCategory = option.getAttribute('data-category');
                        method: 'GET',
                     if (category === 'all' || bookCategory === category) {
                        credentials: 'include' // ارجاع کوکی‌های session
                        bookSelect.appendChild(option.cloneNode(true));
                    });
                   
                    // اگر صفحه باز شد و خطای دسترسی نداد، احتمالاً مدیر است
                     if (response.ok) {
                        const html = await response.text();
                       
                        // بررسی وجود فرم لاگین یا پیام دسترسی ممنوع
                        this.isAdmin = !html.includes('log in') &&
                                      !html.includes('لاگین') &&
                                      !html.includes('permission') &&
                                      !html.includes('دسترسی');
                     }
                     }
                   
                 });
                 } catch (error) {
                    console.log('خطا در بررسی دسترسی:', error);
                    this.isAdmin = false;
                }
                  
                  
                 this.isCheckingAdmin = false;
                 // اگر کتابی موجود است، اولین کتاب را نمایش بده
                this.updateUI();
                 if (bookSelect.options.length > 1) {
            }
                     bookSelect.selectedIndex = 1;
           
                     showBook(bookSelect.value, bookSelect.options[1].text);
            updateUI() {
                 if (this.isAdmin) {
                     this.adminSection.style.display = 'block';
                     this.userSection.style.display = 'none';
                    console.log('👑 حالت مدیر فعال شد');
                 } else {
                 } else {
                     this.adminSection.style.display = 'none';
                     showEmptyState();
                    this.userSection.style.display = 'block';
                    console.log('👤 حالت کاربر عادی فعال شد');
                }
            }
           
            loadDynamicBooks() {
                const savedBooks = localStorage.getItem(this.DYNAMIC_BOOKS_KEY);
                if (savedBooks) {
                    try {
                        const books = JSON.parse(savedBooks);
                        books.forEach(book => {
                            if (!this.bookExistsInList(book)) {
                                this.addBookToSelect(book);
                            }
                        });
                    } catch (e) {
                        console.error('خطا در بارگذاری لیست کتاب‌ها:', e);
                    }
                }
            }
           
            bookExistsInList(bookName) {
                return Array.from(this.bookSelect.options).some(option =>
                    option.value === bookName
                );
            }
           
            addBookToSelect(bookName) {
                const option = document.createElement('option');
                option.value = bookName;
                option.textContent = this.formatBookName(bookName);
                this.bookSelect.appendChild(option);
            }
           
            formatBookName(bookName) {
                return bookName.replace(/_/g, ' ');
            }
           
            saveNewBook(bookName) {
                const savedBooks = localStorage.getItem(this.DYNAMIC_BOOKS_KEY);
                let books = savedBooks ? JSON.parse(savedBooks) : [];
               
                if (!books.includes(bookName)) {
                    books.push(bookName);
                    localStorage.setItem(this.DYNAMIC_BOOKS_KEY, JSON.stringify(books));
                    return true;
                 }
                 }
                return false;
             }
             }
              
              
             showBook(bookName) {
             // نمایش کتاب در iframe با نسخه تمیز
                if (!bookName) return;
             function showBook(bookValue, bookText) {
                const encodedBookName = encodeURIComponent(bookName);
                 if (!bookValue) return;
                this.contentFrame.src = `https://www.pediabible.com/index.php/${encodedBookName}`;
            }
           
            // ایجاد کتاب جدید (فقط برای مدیر)
             async createNewBook(bookName) {
                 if (!bookName.trim()) {
                    alert('لطفاً نام کتاب را وارد کنید');
                    return;
                }
                  
                  
                 if (!this.isAdmin) {
                 const encodedBookName = encodeURIComponent(bookValue);
                    alert('شما دسترسی لازم برای ایجاد کتاب جدید را ندارید');
                // استفاده از printable=yes برای نسخه تمیز
                    return;
                const cleanContentUrl = `https://www.pediabible.com/index.php/${encodedBookName}?printable=yes`;
                 }
                 const wikiPageUrl = `https://www.pediabible.com/index.php/${encodedBookName}`;
                  
                  
                 const formattedBookName = bookName.trim().replace(/ /g, '_');
                 // نمایش محتوای تمیز
                contentFrame.src = cleanContentUrl;
                  
                  
                 // بررسی نهایی دسترسی قبل از ایجاد
                 // به‌روزرسانی لینک ویکی
                 if (this.isCheckingAdmin) {
                 wikiLink.href = wikiPageUrl;
                    alert('لطفاً چند ثانیه صبر کنید...');
                 wikiLink.textContent = `📖 مطالعه کامل "${bookText}" در ویکی`;
                    return;
                 wikiLink.style.display = 'block';
                 }
               
                try {
                    // تست نهایی دسترسی
                    const testUrl = `https://www.pediabible.com/index.php/${encodeURIComponent(formattedBookName)}`;
                    const response = await fetch(testUrl, { credentials: 'include' });
                   
                    if (!response.ok) {
                        throw new Error('دسترسی ممنوع');
                    }
                   
                    // اضافه کردن به لیست
                    const isNew = this.saveNewBook(formattedBookName);
                    if (isNew) {
                        this.addBookToSelect(formattedBookName);
                    }
                   
                    // نمایش کتاب
                    this.bookSelect.value = formattedBookName;
                    this.showBook(formattedBookName);
                    this.bookSearch.value = '';
                   
                    alert(`✅ کتاب "${this.formatBookName(formattedBookName)}" با موفقیت ایجاد شد`);
                   
                 } catch (error) {
                    console.error('خطا در ایجاد کتاب:', error);
                    alert('❌ خطا در ایجاد کتاب. ممکن است دسترسی لازم را نداشته باشید.');
                }
             }
             }
              
              
             // جستجو برای کاربران عادی
             // نمایش حالت خالی
             searchBook(bookName) {
             function showEmptyState() {
                 if (!bookName.trim()) return;
                 contentFrame.srcdoc = `
               
                    <!DOCTYPE html>
                const formattedBookName = bookName.trim().replace(/ /g, '_');
                    <html dir="rtl">
                 this.showBook(formattedBookName);
                    <head>
                 this.userSearch.value = '';
                        <meta charset="UTF-8">
                        <style>
                            body {
                                font-family: Tahoma, Arial;
                                padding: 40px;
                                text-align: center;
                                color: #6c757d;
                                background: white;
                            }
                        </style>
                    </head>
                    <body>
                        <div class="empty-message">
                            لطفاً یک کتاب یا مقاله از لیست انتخاب کنید
                        </div>
                    </body>
                    </html>
                 `;
                 wikiLink.style.display = 'none';
             }
             }
              
              
             setupEventListeners() {
             // رویدادها
                // انتخاب از لیست
            categorySelect.addEventListener('change', filterBooks);
                this.bookSelect.addEventListener('change', () => {
                    this.showBook(this.bookSelect.value);
                });
               
                // جستجوی مدیر
                this.bookSearch.addEventListener('keypress', (e) => {
                    if (e.key === 'Enter') {
                        this.createNewBook(this.bookSearch.value);
                    }
                });
               
                // جستجوی کاربر عادی
                this.userSearch.addEventListener('keypress', (e) => {
                    if (e.key === 'Enter') {
                        this.searchBook(this.userSearch.value);
                    }
                });
            }
              
              
             showInitialBook() {
             bookSelect.addEventListener('change', function() {
                 if (this.bookSelect.options.length > 1 && !this.bookSelect.value) {
                 if (this.selectedIndex > 0) {
                     this.bookSelect.selectedIndex = 1;
                     const selectedOption = this.options[this.selectedIndex];
                     this.showBook(this.bookSelect.value);
                     showBook(selectedOption.value, selectedOption.text);
                } else {
                    showEmptyState();
                 }
                 }
             }
             });
        }
           
       
            // بارگذاری اولیه
        // راه‌اندازی سیستم
             filterBooks();
        document.addEventListener('DOMContentLoaded', () => {
             new BookManager();
         });
         });
     </script>
     </script>
</body>
</body>
</html>
</html>

نسخهٔ ‏۱۲ اکتبر ۲۰۲۵، ساعت ۱۸:۱۹

<!DOCTYPE html> کتابخانه - پدیا بایبل

کتابخانه پدیا بایبل