پرش به محتوا

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

از دانشنامه کتاب مقدس
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۲۵: خط ۲۵:
             color: #2c3e50;
             color: #2c3e50;
             margin-bottom: 30px;
             margin-bottom: 30px;
        }
        .search-section {
            margin-bottom: 30px;
            padding: 20px;
            background: #f8f9fa;
            border-radius: 8px;
            border: 1px solid #dee2e6;
         }
         }
         .form-group {
         .form-group {
خط ۴۹: خط ۴۲:
             font-size: 16px;
             font-size: 16px;
             box-sizing: border-box;
             box-sizing: border-box;
        }
        button {
            background-color: #007bff;
            color: white;
            padding: 10px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            margin-top: 10px;
        }
        button:hover {
            background-color: #0056b3;
         }
         }
         .iframe-container {
         .iframe-container {
خط ۷۳: خط ۵۳:
             height: 600px;
             height: 600px;
             border: none;
             border: none;
        }
        .help-text {
            font-size: 14px;
            color: #6c757d;
            margin-top: 5px;
         }
         }
         .admin-section {
         .admin-section {
خط ۸۵: خط ۶۰:
             border-radius: 6px;
             border-radius: 6px;
             margin-top: 15px;
             margin-top: 15px;
            display: none;
        }
        .user-section {
            background: #fff3cd;
            border: 1px solid #ffeaa7;
            padding: 15px;
            border-radius: 6px;
            margin-top: 15px;
            display: none;
         }
         }
         .admin-title {
         .admin-title {
خط ۹۰: خط ۷۴:
             font-weight: bold;
             font-weight: bold;
             margin-bottom: 10px;
             margin-bottom: 10px;
        }
        .user-title {
            color: #856404;
            font-weight: bold;
            margin-bottom: 10px;
        }
        .loading {
            text-align: center;
            color: #007bff;
            padding: 10px;
         }
         }
     </style>
     </style>
خط ۹۷: خط ۹۱:
         <h1>کتابخانه پدیا بایبل</h1>
         <h1>کتابخانه پدیا بایبل</h1>
          
          
         <div class="search-section">
         <div class="form-group">
            <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="bookSelect">انتخاب کتاب:</label>
                 <label for="bookSearch">نام کتاب جدید:</label>
                 <select id="bookSelect">
                 <input type="text" id="bookSearch" placeholder="نام کتاب جدید را وارد کرده و Enter بزنید...">
                    <option value="">-- لطفاً یک کتاب انتخاب کنید --</option>
                </select>
             </div>
             </div>
           
        </div>
            <div class="admin-section">
 
                <div class="admin-title">بخش مدیریت (برای افزودن کتاب جدید)</div>
        <div id="userSection" class="user-section">
                <div class="form-group">
            <div class="user-title">👤 بخش کاربران</div>
                    <label for="bookSearch">نام کتاب جدید:</label>
            <div class="form-group">
                    <input type="text" id="bookSearch" placeholder="نام کتاب جدید را وارد کنید...">
                <label for="userSearch">جستجوی کتاب (فقط نمایش):</label>
                    <div class="help-text">برای افزودن کتاب جدید به لیست، نام آن را وارد کرده و Enter بزنید</div>
                <input type="text" id="userSearch" placeholder="نام کتاب را برای نمایش وارد کنید...">
                </div>
             </div>
             </div>
         </div>
         </div>
خط ۱۲۱: خط ۱۲۴:


     <script>
     <script>
         document.addEventListener('DOMContentLoaded', function() {
         class BookManager {
            const bookSelect = document.getElementById('bookSelect');
            constructor() {
            const bookSearch = document.getElementById('bookSearch');
                this.bookSelect = document.getElementById('bookSelect');
            const contentFrame = document.getElementById('contentFrame');
                this.bookSearch = document.getElementById('bookSearch');
                this.userSearch = document.getElementById('userSearch');
                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();
            }
              
              
             const STORAGE_KEY = 'pediabible_books_list';
             async init() {
                await this.checkAdminStatus();
                this.loadDynamicBooks();
                this.setupEventListeners();
                this.showInitialBook();
            }
              
              
             // بارگذاری لیست کتاب‌ها از localStorage
             // تشخیص مدیر از طریق تست دسترسی به ویکی
             function loadBooksList() {
             async checkAdminStatus() {
                 const savedBooks = localStorage.getItem(STORAGE_KEY);
                 this.isCheckingAdmin = true;
                 if (savedBooks) {
                  
                     const books = JSON.parse(savedBooks);
                try {
                     books.forEach(book => {
                    // تست ایجاد یک صفحه موقت برای بررسی دسترسی
                         addBookToSelect(book);
                     const testPageName = `Temp_Test_${Date.now()}`;
                     const testUrl = `https://www.pediabible.com/index.php/${encodeURIComponent(testPageName)}`;
                   
                    const response = await fetch(testUrl, {
                         method: 'GET',
                        credentials: 'include' // ارجاع کوکی‌های session
                     });
                     });
                      
                      
                     // اگر کتابی در لیست وجود دارد، اولین کتاب را نمایش بده
                     // اگر صفحه باز شد و خطای دسترسی نداد، احتمالاً مدیر است
                     if (books.length > 0) {
                     if (response.ok) {
                         bookSelect.value = books[0];
                         const html = await response.text();
                         showBook(books[0]);
                          
                        // بررسی وجود فرم لاگین یا پیام دسترسی ممنوع
                        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();
             }
             }
              
              
             // ذخیره لیست کتاب‌ها در localStorage
             updateUI() {
            function saveBooksList() {
                if (this.isAdmin) {
                const books = [];
                    this.adminSection.style.display = 'block';
                 for (let i = 1; i < bookSelect.options.length; i++) {
                    this.userSection.style.display = 'none';
                     books.push(bookSelect.options[i].value);
                    console.log('👑 حالت مدیر فعال شد');
                 } else {
                    this.adminSection.style.display = 'none';
                    this.userSection.style.display = 'block';
                     console.log('👤 حالت کاربر عادی فعال شد');
                 }
                 }
                localStorage.setItem(STORAGE_KEY, JSON.stringify(books));
             }
             }
              
              
             // اضافه کردن کتاب به لیست انتخاب
             loadDynamicBooks() {
            function addBookToSelect(bookName) {
                 const savedBooks = localStorage.getItem(this.DYNAMIC_BOOKS_KEY);
                 // بررسی عدم تکراری بودن
                 if (savedBooks) {
                 for (let i = 0; i < bookSelect.options.length; i++) {
                    try {
                     if (bookSelect.options[i].value === bookName) {
                        const books = JSON.parse(savedBooks);
                         return false;
                        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');
                 const option = document.createElement('option');
                 option.value = bookName;
                 option.value = bookName;
                 option.textContent = bookName;
                 option.textContent = this.formatBookName(bookName);
                 bookSelect.appendChild(option);
                 this.bookSelect.appendChild(option);
                 return true;
            }
           
            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;
             }
             }
              
              
             // نمایش کتاب در iframe
             showBook(bookName) {
            function showBook(bookName) {
                 if (!bookName) return;
                 if (!bookName) return;
               
                 const encodedBookName = encodeURIComponent(bookName);
                 const encodedBookName = encodeURIComponent(bookName);
                 const bookUrl = `https://www.pediabible.com/index.php/${encodedBookName}`;
                 this.contentFrame.src = `https://www.pediabible.com/index.php/${encodedBookName}`;
                contentFrame.src = bookUrl;
             }
             }
              
              
             // ایجاد کتاب جدید
             // ایجاد کتاب جدید (فقط برای مدیر)
             function createNewBook(bookName) {
             async createNewBook(bookName) {
                 if (!bookName.trim()) {
                 if (!bookName.trim()) {
                     alert('لطفاً نام کتاب را وارد کنید');
                     alert('لطفاً نام کتاب را وارد کنید');
خط ۱۸۶: خط ۲۵۱:
                 }
                 }
                  
                  
                 // اضافه کردن به لیست
                 if (!this.isAdmin) {
                 if (addBookToSelect(bookName)) {
                    alert('شما دسترسی لازم برای ایجاد کتاب جدید را ندارید');
                     saveBooksList();
                    return;
                }
               
                const formattedBookName = bookName.trim().replace(/ /g, '_');
               
                // بررسی نهایی دسترسی قبل از ایجاد
                 if (this.isCheckingAdmin) {
                    alert('لطفاً چند ثانیه صبر کنید...');
                    return;
                }
               
                try {
                    // تست نهایی دسترسی
                    const testUrl = `https://www.pediabible.com/index.php/${encodeURIComponent(formattedBookName)}`;
                     const response = await fetch(testUrl, { credentials: 'include' });
                      
                      
                     // نمایش کتاب جدید
                     if (!response.ok) {
                    bookSelect.value = bookName;
                        throw new Error('دسترسی ممنوع');
                    showBook(bookName);
                    }
                      
                      
                     // پاک کردن فیلد جستجو
                     // اضافه کردن به لیست
                     bookSearch.value = '';
                     const isNew = this.saveNewBook(formattedBookName);
                    if (isNew) {
                        this.addBookToSelect(formattedBookName);
                    }
                      
                      
                     alert(`کتاب "${bookName}" به لیست اضافه شد`);
                    // نمایش کتاب
                 } else {
                    this.bookSelect.value = formattedBookName;
                     alert(`کتاب "${bookName}" قبلاً در لیست وجود دارد`);
                    this.showBook(formattedBookName);
                    this.bookSearch.value = '';
                   
                     alert(`کتاب "${this.formatBookName(formattedBookName)}" با موفقیت ایجاد شد`);
                   
                 } catch (error) {
                    console.error('خطا در ایجاد کتاب:', error);
                     alert('❌ خطا در ایجاد کتاب. ممکن است دسترسی لازم را نداشته باشید.');
                 }
                 }
             }
             }
              
              
             // رویدادها
             // جستجو برای کاربران عادی
            searchBook(bookName) {
                if (!bookName.trim()) return;
               
                const formattedBookName = bookName.trim().replace(/ /g, '_');
                this.showBook(formattedBookName);
                this.userSearch.value = '';
            }
              
              
             // وقتی کاربر از لیست کتابی انتخاب می‌کند
             setupEventListeners() {
            bookSelect.addEventListener('change', function() {
                // انتخاب از لیست
                 if (this.value) {
                this.bookSelect.addEventListener('change', () => {
                     showBook(this.value);
                    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);
                    }
                 });
             }
              
              
             // وقتی مدیر در فیلد جستجو Enter می‌زند
             showInitialBook() {
            bookSearch.addEventListener('keypress', function(e) {
                 if (this.bookSelect.options.length > 1 && !this.bookSelect.value) {
                 if (e.key === 'Enter') {
                     this.bookSelect.selectedIndex = 1;
                     createNewBook(this.value.trim());
                    this.showBook(this.bookSelect.value);
                 }
                 }
             });
             }
           
        }
            // بارگذاری اولیه لیست کتاب‌ها
       
             loadBooksList();
        // راه‌اندازی سیستم
        document.addEventListener('DOMContentLoaded', () => {
             new BookManager();
         });
         });
     </script>
     </script>
</body>
</body>
</html>
</html>

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

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

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

🔧 بخش مدیریت - ایجاد کتاب جدید
👤 بخش کاربران