پرش به محتوا

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

از دانشنامه کتاب مقدس
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۸۵: خط ۸۵:
             margin-top: 5px;
             margin-top: 5px;
         }
         }
         .admin-only {
         .admin-section {
            display: none;
             background-color: #f8f9fa;
             background-color: #f8f9fa;
             border: 1px dashed #dc3545;
             border: 2px solid #28a745;
             padding: 15px;
             padding: 15px;
             border-radius: 4px;
             border-radius: 8px;
             margin-top: 10px;
             margin-top: 20px;
         }
         }
         .admin-label {
         .admin-label {
             color: #dc3545;
             color: #28a745;
             font-weight: bold;
             font-weight: bold;
        }
        .create-new {
            background-color: #28a745;
        }
        .create-new:hover {
            background-color: #218838;
        }
        .test-controls {
            margin-top: 10px;
            padding: 10px;
            background: #fff3cd;
            border: 1px solid #ffeaa7;
            border-radius: 4px;
         }
         }
     </style>
     </style>
خط ۱۱۳: خط ۱۲۵:
                     <option value="انجیل">انجیل</option>
                     <option value="انجیل">انجیل</option>
                     <option value="تورات">تورات</option>
                     <option value="تورات">تورات</option>
                    <!-- می‌توانید کتاب‌های بیشتری به این لیست اضافه کنید -->
                 </select>
                 </select>
             </div>
             </div>
              
              
             <!-- بخش مدیریتی - فقط برای مدیران قابل نمایش -->
            <div class="button-group">
             <div id="adminSection" class="admin-only">
                <button id="showBook">نمایش کتاب</button>
            </div>
 
             <!-- بخش مدیریتی - همیشه نمایش داده می‌شود اما منطق در بکند کنترل می‌شود -->
             <div id="adminSection" class="admin-section">
                 <div class="form-group">
                 <div class="form-group">
                     <label for="bookSearch" class="admin-label">ثبت کتاب جدید (مخصوص مدیران):</label>
                     <label for="bookSearch" class="admin-label">ثبت کتاب جدید (مخصوص مدیران):</label>
                     <input type="text" id="bookSearch" placeholder="نام کتاب جدید را وارد کنید...">
                     <input type="text" id="bookSearch" placeholder="نام کتاب جدید را وارد کنید...">
                     <div class="help-text">این بخش فقط برای مدیران سیستم قابل مشاهده است</div>
                     <div class="help-text">فقط مدیران می‌توانند کتاب جدید ایجاد کنند</div>
                 </div>
                 </div>
                  
                  
                 <div class="button-group">
                 <div class="button-group">
                     <button id="createNew">ایجاد صفحه جدید</button>
                     <button id="createNew" class="create-new">ایجاد صفحه جدید</button>
                 </div>
                 </div>
             </div>
             </div>
              
 
             <div class="button-group">
             <!-- کنترل‌های تست (در محیط واقعی حذف شود) -->
                 <button id="showBook">نمایش کتاب</button>
             <div class="test-controls">
                <strong>کنترل‌های تست:</strong>
                <button onclick="enableAdminMode()">فعال کردن حالت مدیر</button>
                 <button onclick="disableAdminMode()">غیرفعال کردن حالت مدیر</button>
                <span id="adminStatus" style="margin-right: 15px; color: #dc3545;"></span>
             </div>
             </div>
         </div>
         </div>
خط ۱۴۱: خط ۱۶۰:


     <script>
     <script>
        // توابع برای کنترل حالت مدیر (برای تست)
        function enableAdminMode() {
            localStorage.setItem('isAdmin', 'true');
            checkAdminStatus();
            alert('حالت مدیر فعال شد');
        }
        function disableAdminMode() {
            localStorage.setItem('isAdmin', 'false');
            checkAdminStatus();
            alert('حالت مدیر غیرفعال شد');
        }
        function checkAdminStatus() {
            const adminStatus = document.getElementById('adminStatus');
            if (isAdminUser()) {
                adminStatus.textContent = '✅ حالت مدیر فعال';
                adminStatus.style.color = '#28a745';
            } else {
                adminStatus.textContent = '❌ حالت مدیر غیرفعال';
                adminStatus.style.color = '#dc3545';
            }
        }
         document.addEventListener('DOMContentLoaded', function() {
         document.addEventListener('DOMContentLoaded', function() {
             const bookSelect = document.getElementById('bookSelect');
             const bookSelect = document.getElementById('bookSelect');
خط ۱۴۸: خط ۱۹۱:
             const contentFrame = document.getElementById('contentFrame');
             const contentFrame = document.getElementById('contentFrame');
             const adminSection = document.getElementById('adminSection');
             const adminSection = document.getElementById('adminSection');
           
 
             // بررسی آیا در دامنه pediabible هستیم
             // بررسی آیا در دامنه pediabible هستیم
             function isInPediabibleDomain() {
             function isInPediabibleDomain() {
خط ۱۵۶: خط ۱۹۹:
             }
             }
              
              
             // بررسی آیا کاربر مدیر است (این بخش باید با منطق احراز هویت مدیاویکی شما یکپارچه شود)
             // بررسی آیا کاربر مدیر است
             function isAdminUser() {
             function isAdminUser() {
                 // این یک نمونه ساده است - باید با سیستم احراز هویت مدیاویکی شما جایگزین شود
                 // در محیط واقعی این بخش باید با مدیاویکی یکپارچه شود
                 return localStorage.getItem('isAdmin') === 'true' ||
                 return localStorage.getItem('isAdmin') === 'true';
                      document.cookie.includes('isAdmin=true') ||
            }
                      window.location.search.includes('admin=true'); // برای تست
           
            // نمایش یا مخفی کردن بخش مدیریتی
            function toggleAdminSection() {
                if (isAdminUser()) {
                    adminSection.style.display = 'block';
                } else {
                    adminSection.style.display = 'none';
                }
            }
           
            // دریافت محتوای خالص صفحه (بدون هدر و فوتر)
            function getPageContent(pageUrl) {
                // استفاده از پارامتر printable برای دریافت محتوای خالص
                return pageUrl + '?printable=yes';
             }
             }
              
              
             // تنظیمات اولیه
             // تنظیمات اولیه صفحه
             function initializePage() {
             function initializePage() {
                 // بررسی دامنه
                 // بررسی دامنه
خط ۱۷۳: خط ۲۲۹:
                 }
                 }
                  
                  
                 // نمایش بخش مدیریتی فقط برای مدیران
                 // تنظیم وضعیت بخش مدیریتی
                 if (isAdminUser()) {
                toggleAdminSection();
                    adminSection.style.display = 'block';
                checkAdminStatus();
                }
               
                // نمایش وضعیت در کنسول برای دیباگ
                 console.log('Admin status:', isAdminUser());
                console.log('Admin section visible:', adminSection.style.display);
             }
             }
              
              
             // هنگام تغییر در select، مقدار جستجو را به روز می‌کند
             // هنگام تغییر در select
             bookSelect.addEventListener('change', function() {
             bookSelect.addEventListener('change', function() {
                 if (this.value) {
                 if (this.value && isAdminUser()) {
                    // فقط اگر کاربر مدیر است، مقدار را در جستجو قرار دهد
                    bookSearch.value = this.options[this.selectedIndex].text;
                    if (isAdminUser()) {
                        bookSearch.value = this.options[this.selectedIndex].text;
                    }
                 }
                 }
             });
             });
خط ۱۹۵: خط ۲۵۱:
                 if (bookName) {
                 if (bookName) {
                     const encodedBookName = encodeURIComponent(bookName);
                     const encodedBookName = encodeURIComponent(bookName);
                     contentFrame.src = `https://www.pediabible.com/index.php/${encodedBookName}`;
                     const pageUrl = `https://www.pediabible.com/index.php/${encodedBookName}`;
                    const contentUrl = getPageContent(pageUrl);
                   
                    contentFrame.src = contentUrl;
                 } else {
                 } else {
                     alert('لطفاً یک کتاب از لیست انتخاب کنید');
                     alert('لطفاً یک کتاب از لیست انتخاب کنید');
خط ۲۱۶: خط ۲۷۵:
                  
                  
                 const encodedBookName = encodeURIComponent(bookName);
                 const encodedBookName = encodeURIComponent(bookName);
                 const newPageUrl = `https://www.pediabible.com/index.php/${encodedBookName}`;
                 const pageUrl = `https://www.pediabible.com/index.php/${encodedBookName}`;
                const editUrl = pageUrl + '?action=edit';
                  
                  
                 // ایجاد درخواست برای بررسی وجود صفحه
                 // بررسی وجود صفحه
                 fetch(newPageUrl)
                 fetch(pageUrl)
                     .then(response => {
                     .then(response => {
                         if (response.status === 404) {
                         if (response.status === 404) {
                             // صفحه وجود ندارد - ایجاد صفحه جدید
                             // صفحه وجود ندارد - ایجاد صفحه جدید
                             window.open(newPageUrl + '?action=edit', '_blank');
                             window.open(editUrl, '_blank');
                             alert(`صفحه جدید برای "${bookName}" در حال ایجاد است`);
                             alert(`صفحه جدید برای "${bookName}" در حال ایجاد است`);
                           
                            // نمایش صفحه خالی در iframe
                            setTimeout(() => {
                                contentFrame.src = getPageContent(pageUrl);
                            }, 1000);
                           
                         } else {
                         } else {
                             // صفحه وجود دارد
                             // صفحه وجود دارد
                             alert(`صفحه "${bookName}" از قبل وجود دارد`);
                             const viewContent = confirm(`صفحه "${bookName}" از قبل وجود دارد. آیا می‌خواهید محتوای آن را مشاهده کنید؟`);
                             contentFrame.src = newPageUrl;
                             if (viewContent) {
                                contentFrame.src = getPageContent(pageUrl);
                            }
                         }
                         }
                     })
                     })
خط ۲۳۴: خط ۳۰۲:
                         console.error('Error:', error);
                         console.error('Error:', error);
                         // در صورت خطا، مستقیماً به صفحه ویرایش هدایت شود
                         // در صورت خطا، مستقیماً به صفحه ویرایش هدایت شود
                         window.open(newPageUrl + '?action=edit', '_blank');
                         window.open(editUrl, '_blank');
                        alert(`صفحه جدید برای "${bookName}" در حال ایجاد است`);
                     });
                     });
             });
             });
خط ۲۴۱: خط ۳۱۰:
             initializePage();
             initializePage();
              
              
             // برای تست: اضافه کردن قابلیت مدیر شدن (در محیط واقعی حذف شود)
             // رویداد برای به روزرسانی وضعیت وقتی کاربر localStorage را تغییر می‌دهد
             if (window.location.search.includes('setadmin=true')) {
             window.addEventListener('storage', function() {
                 localStorage.setItem('isAdmin', 'true');
                 toggleAdminSection();
                 adminSection.style.display = 'block';
                 checkAdminStatus();
                alert('حالت مدیر فعال شد');
             });
             }
           
            if (window.location.search.includes('removeadmin=true')) {
                localStorage.setItem('isAdmin', 'false');
                adminSection.style.display = 'none';
                alert('حالت مدیر غیرفعال شد');
            }
         });
         });
     </script>
     </script>
</body>
</body>
</html>
</html>

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

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

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

فقط مدیران می‌توانند کتاب جدید ایجاد کنند
کنترل‌های تست: