تست: تفاوت میان نسخهها
ظاهر
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۸۵: | خط ۸۵: | ||
margin-top: 5px; | margin-top: 5px; | ||
} | } | ||
.admin- | .admin-section { | ||
background-color: #f8f9fa; | background-color: #f8f9fa; | ||
border: | border: 2px solid #28a745; | ||
padding: 15px; | padding: 15px; | ||
border-radius: | border-radius: 8px; | ||
margin-top: | margin-top: 20px; | ||
} | } | ||
.admin-label { | .admin-label { | ||
color: # | 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- | <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 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 | <!-- کنترلهای تست (در محیط واقعی حذف شود) --> | ||
<button id=" | <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'; | ||
} | |||
// نمایش یا مخفی کردن بخش مدیریتی | |||
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() { | ||
// بررسی دامنه | // بررسی دامنه | ||
خط ۱۷۳: | خط ۲۲۹: | ||
} | } | ||
// | // تنظیم وضعیت بخش مدیریتی | ||
toggleAdminSection(); | |||
checkAdminStatus(); | |||
// نمایش وضعیت در کنسول برای دیباگ | |||
console.log('Admin status:', isAdminUser()); | |||
console.log('Admin section visible:', adminSection.style.display); | |||
} | } | ||
// هنگام تغییر در | // هنگام تغییر در select | ||
bookSelect.addEventListener('change', function() { | bookSelect.addEventListener('change', function() { | ||
if (this.value | if (this.value && isAdminUser()) { | ||
bookSearch.value = this.options[this.selectedIndex].text; | |||
} | } | ||
}); | }); | ||
خط ۱۹۵: | خط ۲۵۱: | ||
if (bookName) { | if (bookName) { | ||
const encodedBookName = encodeURIComponent(bookName); | const encodedBookName = encodeURIComponent(bookName); | ||
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 | const pageUrl = `https://www.pediabible.com/index.php/${encodedBookName}`; | ||
const editUrl = pageUrl + '?action=edit'; | |||
// | // بررسی وجود صفحه | ||
fetch( | fetch(pageUrl) | ||
.then(response => { | .then(response => { | ||
if (response.status === 404) { | if (response.status === 404) { | ||
// صفحه وجود ندارد - ایجاد صفحه جدید | // صفحه وجود ندارد - ایجاد صفحه جدید | ||
window.open( | window.open(editUrl, '_blank'); | ||
alert(`صفحه جدید برای "${bookName}" در حال ایجاد است`); | alert(`صفحه جدید برای "${bookName}" در حال ایجاد است`); | ||
// نمایش صفحه خالی در iframe | |||
setTimeout(() => { | |||
contentFrame.src = getPageContent(pageUrl); | |||
}, 1000); | |||
} else { | } else { | ||
// صفحه وجود دارد | // صفحه وجود دارد | ||
const viewContent = confirm(`صفحه "${bookName}" از قبل وجود دارد. آیا میخواهید محتوای آن را مشاهده کنید؟`); | |||
contentFrame.src = | if (viewContent) { | ||
contentFrame.src = getPageContent(pageUrl); | |||
} | |||
} | } | ||
}) | }) | ||
خط ۲۳۴: | خط ۳۰۲: | ||
console.error('Error:', error); | console.error('Error:', error); | ||
// در صورت خطا، مستقیماً به صفحه ویرایش هدایت شود | // در صورت خطا، مستقیماً به صفحه ویرایش هدایت شود | ||
window.open( | window.open(editUrl, '_blank'); | ||
alert(`صفحه جدید برای "${bookName}" در حال ایجاد است`); | |||
}); | }); | ||
}); | }); | ||
خط ۲۴۱: | خط ۳۱۰: | ||
initializePage(); | initializePage(); | ||
// برای | // رویداد برای به روزرسانی وضعیت وقتی کاربر localStorage را تغییر میدهد | ||
window.addEventListener('storage', function() { | |||
toggleAdminSection(); | |||
checkAdminStatus(); | |||
}); | |||
} | |||
}); | }); | ||
</script> | </script> | ||
</body> | </body> | ||
</html> | </html> |
نسخهٔ ۱۲ اکتبر ۲۰۲۵، ساعت ۱۷:۳۴
<!DOCTYPE html>
کتابخانه پدیا بایبل
فقط مدیران میتوانند کتاب جدید ایجاد کنند
کنترلهای تست: