Repository navigation
Expand file tree
/
Copy pathadmin.html
More file actions
30 lines (30 loc) · 11.8 KB
/
Copy pathadmin.html
File metadata and controls
30 lines (30 loc) · 11.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html lang="fa" dir="rtl">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><meta name="theme-color" content="#f8f5ee"><meta name="referrer" content="strict-origin-when-cross-origin"><meta name="robots" content="noindex,nofollow">
<title>مدیریت محتوا · German Library</title><link rel="icon" href="assets/favicon.svg" type="image/svg+xml"><link rel="manifest" href="site.webmanifest"><script src="assets/theme-init.js"></script><link rel="stylesheet" href="assets/styles.css">
</head>
<body>
<noscript><p class="notice">برای نمایش منابع و استفاده از کتابخانه، JavaScript مرورگر را فعال کن.</p></noscript>
<a class="skip-link" href="#main">رفتن به محتوا</a>
<header class="topbar"><div class="shell topbar-inner"><a class="brand" href="index.html"><span class="brand-mark">GL</span><span class="brand-copy"><span class="brand-title">German Library</span><span class="brand-subtitle">Mobile-first Admin</span></span></a><nav class="desktop-nav" aria-label="ناوبری دسکتاپ"><a href="index.html">مشاهده سایت</a><a class="active" href="admin.html">مدیریت</a></nav><div class="header-actions"><a class="icon-btn" href="index.html" aria-label="مشاهده سایت"><svg viewBox="0 0 24 24"><path d="M3 12l9-9 9 9"></path><path d="M5 10v10h14V10"></path></svg></a></div></div></header>
<main class="shell admin-page" id="main">
<section class="neo-card admin-hero"><div class="eyebrow"><span class="eyebrow-dot"></span> Content Administration</div><h1>استودیوی مدیریت محتوا</h1><p class="hero-desc">کتابها و فایلهایشان را یکجا مدیریت کن؛ منابع مستقل هم بخش جدا دارند. ابزارهای ضروری، همیشه در دسترس موبایل.</p><div class="admin-status"><span class="status-badge" id="modeBadge">Demo</span><span class="status-badge" id="syncBadge">Local</span><button class="small-btn hidden" id="signOutBtn" type="button">خروج</button></div></section>
<div id="accessSlot"></div>
<div class="admin-page-grid" id="adminApp" hidden>
<aside class="admin-tabs-wrap"><nav class="admin-tabs" aria-label="بخشهای مدیریت"><button class="admin-tab-btn active" data-tab="overview">نمای کلی</button><button class="admin-tab-btn" data-tab="courses">کتابها و فایلها</button><button class="admin-tab-btn" data-tab="resources">تمرینهای سطح</button><button class="admin-tab-btn" data-tab="media">رسانه و مطالعه</button><button class="admin-tab-btn" data-tab="levels">سطوح</button><button class="admin-tab-btn" data-tab="data">ابزارها</button></nav></aside>
<section class="admin-panel">
<div class="admin-tab" id="overviewPanel"><div class="section-head"><div><h2 class="section-title">سلامت محتوا</h2><p class="section-subtitle">مشکلاتی که قبل از Publish باید حل شوند.</p></div></div><div class="admin-stats" id="stats"></div><div class="admin-quick-actions" aria-label="اقدامات سریع"><button type="button" data-quick="course"><span>+ کتاب</span>ساخت بستهٔ کتاب</button><button type="button" data-quick="resource"><span>+ منبع</span>افزودن منبع مستقل</button><button type="button" data-quick="check"><span>✓ بررسی</span>سلامت انتشار</button><button type="button" data-quick="tools"><span>↗ ابزارها</span>Backup و Sync</button><button type="button" data-quick="levels"><span>✎ سطوح</span>ویرایش A1–C2</button><button type="button" data-quick="media"><span>▷ رسانه</span>فیلم و پادکست</button><a class="quick-action-link" href="article-studio.html"><span>✎ مقاله</span>استودیوی مقالات</a></div><h3 class="admin-section-heading">وضعیت و هشدارهای انتشار</h3><div class="health-list" id="health"></div></div>
<div class="admin-tab hidden" id="resourcesPanel"><div class="admin-toolbar"><button class="primary-btn" id="addResource">+ منبع مستقل</button></div><p class="admin-tool-note">منابع مستقل هر سطح را اینجا ثبت کن. کتابها و فایلهای وابسته در بخش کتابها هستند؛ فیلم، سریال، پادکست و مقاله در رسانه.</p><div class="neo-card admin-filterbar admin-filterbar-v7"><div class="field"><label for="adminSearch">جستوجو</label><input class="input" id="adminSearch" inputmode="search" placeholder="Title / Provider"></div><div class="field"><label for="adminLevel">Level</label><select class="select" id="adminLevel"><option value="">همه</option><option>A1</option><option>A2</option><option>B1</option><option>B2</option><option>C1</option><option>C2</option></select></div><div class="field"><label for="adminStatus">Status</label><select class="select" id="adminStatus"><option value="">همه</option><option value="published">Published</option><option value="draft">Draft</option><option value="archived">Archived</option></select></div></div><div class="admin-bulkbar"><label class="admin-select-row"><input type="checkbox" id="selectVisibleResources"><span>انتخاب موارد نمایشدادهشده</span></label><strong id="selectedCount" aria-live="polite">۰ انتخاب</strong><button class="small-btn" id="bulkDraft" type="button" disabled>انتقال به Draft</button><button class="small-btn danger" id="bulkArchive" type="button" disabled>آرشیو انتخابی</button></div><div class="admin-list" id="resourceList"></div></div>
<div class="admin-tab hidden" id="coursesPanel"><div class="admin-toolbar"><button class="primary-btn" id="addCourse">+ ساخت کتاب</button></div><div class="neo-card admin-filterbar course-filterbar"><div class="field"><label for="courseCollectionFilter">Collection</label><select class="select" id="courseCollectionFilter"><option value="">همه</option><option value="level">CEFR</option><option value="special">کتاب چندسطحی قدیمی</option><option value="library">کتاب آزاد</option></select></div><div class="field"><label for="courseLevelFilter">Level</label><select class="select" id="courseLevelFilter"><option value="">همه</option><option>A1</option><option>A2</option><option>B1</option><option>B2</option><option>C1</option><option>C2</option></select></div></div><p class="admin-tool-note">برای افزودن Kursbuch، Arbeitsbuch، Audio، Video و Transcript، بستهٔ کتاب را باز کن.</p><div class="admin-list" id="courseList"></div></div>
<div class="admin-tab hidden" id="mediaPanel"><div class="admin-toolbar"><button class="primary-btn" id="addMedia" type="button">+ فیلم، سریال، پادکست یا مقاله</button></div><p class="admin-tool-note">رسانههای مستقل، با سطح و مهارت اختیاری؛ هر مورد میتواند «ویژه» شود. رسانهٔ وابسته به کتاب در بستهٔ همان کتاب میماند.</p><div class="admin-list" id="mediaAdminList"></div></div>
<div class="admin-tab hidden" id="levelsPanel"><h2 class="section-title">مدیریت سطوح</h2><p class="admin-tool-note">عنوان، توضیح و کتاب اصلی هر سطح را ویرایش کن. برای افزودن کتاب مرتبط از بخش کتابها استفاده کن.</p><div class="admin-list" id="levelsAdminList"></div></div>
<div class="admin-tab hidden" id="dataPanel"><div class="neo-card admin-card"><h3>کنترل کیفیت انتشار</h3><p>نمای محلی از مشکلات Catalog؛ جایگزین تست دسترسی واقعی لینکها یا Storage نیست.</p><button class="soft-btn" id="runReadiness" type="button">بررسی مجدد</button><ul id="readinessResults" class="admin-checklist" aria-live="polite"></ul></div><div class="neo-card admin-card"><h3>دسترسی و امنیت</h3><p id="roleSummary">نقش فعلی در حال بررسی است.</p><p class="admin-tool-note">مجوز ذخیرهسازی منابع، مقالات و عملیات مدیریتی در Supabase جداگانه کنترل میشود.</p></div><section class="neo-card admin-card hidden" id="roleManagement"><h3>مدیریت نقش نویسنده</h3><p>درخواستها را از این فهرست بررسی کن. اعطای نقش فقط با RPC سروریِ Admin و همراه Audit انجام میشود.</p><div class="field"><label for="roleUserId">شناسهٔ کاربر</label><input class="input ltr" id="roleUserId" autocomplete="off" placeholder="00000000-0000-0000-0000-000000000000"></div><div class="admin-actions"><button class="primary-btn" id="assignAuthor" type="button">اعطای نقش Author</button><button class="small-btn danger" id="revokeAuthor" type="button">لغو Author</button></div><p id="roleActionStatus" role="status" class="field-help"></p><div id="roleUsersList" class="role-users-list" aria-live="polite"></div><h4>درخواستهای نویسندگی</h4><div id="authorRequestsList" class="role-users-list" aria-live="polite">در حال بارگیری…</div></section><h3 class="admin-section-heading">Backup و همگامسازی</h3><div class="backup-grid"><article class="neo-card admin-card"><h3>Export</h3><p>نسخه JSON از Level، Book و Resourceها.</p><div class="admin-actions"><button class="soft-btn" id="exportBtn">دانلود JSON</button></div></article><article class="neo-card admin-card"><h3>Import</h3><p>Import پیشنمایش محلی است؛ برای ثبت در Cloud دکمه Sync now را بزن. ردیفهای حذفشده از JSON از Cloud حذف نمیشوند؛ برای حذف از نمایش از Archive استفاده کن.</p><div class="admin-actions"><label for="importInput">انتخاب JSON</label><input class="input" id="importInput" type="file" accept="application/json,.json"></div></article><article class="neo-card admin-card"><h3>Cloud Sync</h3><p id="cloudText">در Demo Mode فقط LocalStorage استفاده میشود.</p><div class="admin-actions"><button class="primary-btn" id="syncBtn">Sync now</button></div></article><article class="neo-card admin-card"><h3>Demo reset</h3><p>فقط در Demo Mode دادهی محلی را به Sample اولیه برمیگرداند.</p><div class="admin-actions"><button class="small-btn danger" id="resetBtn">Reset local demo</button></div></article></div></div>
</section>
</div>
<footer class="footer">German Library Admin · Mobile first.<span class="footer-signature">Kian</span></footer>
</main>
<nav class="mobile-bottom-nav admin-mobile-nav" aria-label="ناوبری پنل مدیریت"><button type="button" class="active" data-tab="overview"><span aria-hidden="true">⌂</span>خانه</button><button type="button" data-tab="courses"><span aria-hidden="true">▤</span>کتابها</button><button type="button" data-tab="resources"><span aria-hidden="true">▦</span>تمرینها</button><button type="button" data-tab="media"><span aria-hidden="true">▷</span>رسانه</button><button type="button" data-tab="data"><span aria-hidden="true">⚙</span>ابزارها</button></nav><div class="admin-editor-backdrop hidden" id="editorBackdrop" role="dialog" aria-modal="true" aria-labelledby="editorTitle"><section class="admin-editor"><div class="editor-head"><h2 id="editorTitle">Editor</h2><button class="editor-close" id="editorClose" aria-label="بستن">×</button></div><div id="editorSlot"></div></section></div>
<script src="assets/runtime-config.js"></script><script src="https://cdn.jsdelivr.net/npm/@supabase/[email protected]"></script><script src="data/content.js"></script><script src="assets/app.js"></script><script src="assets/backend.js"></script><script src="assets/site-ui.js"></script>
<script src="assets/page-admin.js"></script>
</body></html>