{report.titleFa}
+{report.descriptionFa}
+برای فعالسازی، با مدیر آموزش سازمان یا پشتیبانی سامانه تماس بگیرید.
+شما به این بخش دسترسی ندارید.
+شما به این بخش از تقویم آموزشی دسترسی ندارید.
+صفحه با مشکل موقت روبهرو شد. دوباره تلاش کنید.
+ +۴۰۳
++ حساب شما اجازه مشاهده این بخش را ندارد. اگر فکر میکنید اشتباهی رخ داده، با مدیر آموزش سازمان تماس بگیرید. +
+مسیر مورد نظر در سامانه وجود ندارد.
+تنظیمات زیرساخت سامانه فقط برای مدیر کل سامانه قابل مشاهده و مدیریت است.
+{index % 2 ? "نیازمند پیگیری در همین هفته" : "وضعیت قابل کنترل است"}
| {header} | )}||||
|---|---|---|---|---|
| {row.titleFa} | +{row.ownerFa} | +{row.statusFa} | +{row.valueFa} | +{row.trendFa} | +
در این بازه زمانی دادهای برای نمایش وجود ندارد.
+ {onReset ?{report.descriptionFa}
+{roleLabels[role]} · {formatJalaliDate(anchorDate)}
+{events.length ? `${toPersianDigits(events.length)} رویداد` : "رویدادی برای این روز وجود ندارد"}
+{event.title}
+ {!compact &&{type.labelFa} · {statusLabels[event.status]}
} + {detailed &&{formatJalaliDateTime(event.startAt)} · {event.instructorFa ?? "مدرس ثبت نشده"} · {toPersianDigits(event.participantsCount)} نفر
} +{type.labelFa}
{formatJalaliDateTime(event.startAt)} تا {formatJalaliDateTime(event.endAt)}
{event.description || "توضیحی برای این رویداد ثبت نشده است."}
+{action.description}
} +{label}
{toPersianDigits(value)}
{role === "super_admin" ? "مدیریت دورهها و میکروآموزشهای عمومی سامانه و سازمانها" : "مدیریت دورهها و میکروآموزشهای سازمان شما"}
+{course.categoryFa} • {levelFa[course.level]} • {statusFa[course.status]}
+{course.pricingType === "paid" ? formatToman(course.priceToman ?? 0) : "رایگان"} • {course.ownerType === "platform" ? "عمومی سامانه" : "اختصاصی سازمان"}
+ {publicLocked ?برای کپی این دوره عمومی، پرداخت سازمان لازم است.
: null} +{micro.descriptionFa}
+حداقل ۵ مرحله برای ارسال یا انتشار لازم است.
: null} +برای انتشار یا ارسال تأیید، حداقل ۵ مرحله لازم است.
: null} + {!puzzleReady ?برای فعالسازی پازل یادگیری، آپلود تصویر پازل الزامی است.
: null} +مرحله {toPersianDigits(index + 1)} • {toPersianDigits(step.estimatedSeconds ?? 30)} ثانیه
{errors[0] ?? "کامل و معتبر"}
{preview}
قالب آماده با ۵ مرحله اولیه و قابل ویرایش پس از انتخاب.
| {item} | )}
|---|
| {cell} | )}
شما به این بخش دسترسی ندارید.
برای این میکروآموزش میتوانید آزمون موجود انتخاب کنید یا آزمون جدید بسازید.
{error}
)} +آماده استفاده است.
+ )} +{label}
{label}
{label}
{items.map((item, index) =>گزینهها و پاسخ درست
{options.map((option, index) =>در حال ذخیره دوره...
: null} +اطلاعات ضروری کامل نیست و انتشار انجام نمیشود.
: null} +{label}
onPatchNode({ titleFa: event.target.value })} className="mt-2 w-full min-w-64 rounded-2xl bg-white/15 px-4 py-2 font-black outline-none" />☰ {contentTypeFa[content.type]} • {content.isRequired ? "اجباری" : "اختیاری"} • {toFaNumber(content.estimatedMinutes ?? 0)} دقیقه
onPatch({ titleFa: event.target.value })} className="mt-2 w-full rounded-xl bg-white/15 px-3 py-2 text-sm font-bold outline-none" /> onPatch({ descriptionFa: event.target.value })} placeholder="توضیح محتوا" className="mt-2 w-full rounded-xl bg-white/15 px-3 py-2 text-xs outline-none" />{item}
)}موردی ثبت نشده است.
}برای انتشار دوره میتوانید آزمون موجود را وصل کنید یا آزمون جدید بسازید.
ساختار، محتوا، آزمونها، گواهی و تنظیمات کپی میشوند و ثبتنامها، گزارشها و پرداختها منتقل نمیشوند.
+ + setTitleFa(event.target.value)} className="mt-2 w-full rounded-2xl border border-white/15 bg-white/15 px-3 py-2 outline-none" /> +آیا از حذف {titleFa ? `«${titleFa}»` : "این مورد"} مطمئن هستید؟
+آیا از انتشار این دوره مطمئن هستید؟
ثبتنام، تکمیل، نمره، ریزش، گواهی و بازخوردها به صورت آماده اتصال به سرویس گزارش نمایش داده میشوند.
+نمودار روند تکمیل دورهها
+شاخصهای مالی و آموزشی
+{course.categoryFa} • {course.ownerType === "platform" ? "عمومی سامانه" : "اختصاصی سازمان"}
+{label}
{value}
{course.categoryFa} • {levelFa[course.level]} • {statusFa[course.status]}
{course.pricingType === "paid" ? formatToman(course.priceToman ?? 0) : "رایگان"}
{course.ownerType === "platform" ? "عمومی سامانه" : "اختصاصی سازمان"}{role === "org_admin" ? " • کاتالوگ سازمان من" : ""}
فایل را اینجا رها کنید یا انتخاب فایل را بزنید
+فرمتهای مجاز: ویدیو، صوت، متن، پیدیاف، تصویر، اسکورم، اچتیامال۵
+ + {progress > 0 ?{item.titleFa}
+{item.fileName} • {item.sizeLabelFa}
+{role === "super_admin" ? "دستهبندیهای عمومی و چندسطحی سامانه را مدیریت کنید." : "دستهبندیهای اختصاصی سازمان خود را مدیریت کنید."}
+{course.shortDescriptionFa}
+{course.fullDescriptionFa}
+{Array.from({ length: review.rating }).map((_, i) =>
{review.textFa}
{review.createdAtFa}{label}
{value}
{course.titleFa}
+| {h} | )}|||||||||
|---|---|---|---|---|---|---|---|---|---|
| {kindFa[course.kind]} | +{category(course.categoryId)} | +{levelFa[course.level]} | +{minutesFa(course.durationMinutes)} | +{toPersianDigits(course.ratingAverage)} | +{priceFa(course)} | +{course.hasCertificate ? "دارد" : "ندارد"} | +{statusFa(course)} | +
بخشهای داشبورد را مثل فایلها مرور کنید و وارد هر بخش شوید.
+{item.labelFa}
+{item.valueFa}
+{section.summaryFa}
+| {label} | +{value} | +
|---|
این بخش آماده اتصال به داده واقعی و سرویس Laravel است.
+گزینهها
{options.map((option) =>{exam.description || "توضیحات آزمون در این بخش برای یادگیرنده نمایش داده میشود."}
{exam.connectedEntityTitle}
{exam.description}
سؤال {toPersianDigits(index + 1)} از {toPersianDigits(questions.length)}
{question.scenarioText}
: null}{question.type === "single_choice" || question.type === "scenario" ?| {h} | )}||||
|---|---|---|---|---|
| {toPersianDigits(row.rowNumber)} | {row.raw["نوع سؤال"]} | {row.raw["متن سؤال"]} | {toPersianDigits(row.raw["امتیاز"])} | {row.errors[0] ?? "معتبر"} |
{attempt.userNameFa}
{descriptive.questionText}
{String(answer.value)}
راهنمای تصحیح: {descriptive.gradingGuide}
{questionTypeFa(question.type)} • {toPersianDigits(question.score)} امتیاز • {difficultyFa(question.difficulty)}
{statusFa(exam.status)} • {exam.connectedEntityTitle ?? "بدون اتصال"}
{exam.shortDescription}
{exam.connectedEntityTitle}
دسترسی به این محتوا به دلیل نزدیک بودن زمان آزمون موقتاً غیرفعال شده است.
: null}{toPersianDigits(pending)} نفر از اعضای تیم هنوز در آزمونهای فعال شرکت نکردهاند.
{item.messageFa}
)}{detail}
{label}
{toPersianDigits(value)}
{label}
{label}
{value.map((item, index) => onChange(value.map((row, rowIndex) => rowIndex === index ? event.target.value : row))} className="w-full rounded-2xl bg-white/15 p-3 text-sm font-normal outline-none" />)}{label}
{value}
{error}
)}{text}
هر بخش را مثل یک آیتم در فایل اکسپلورر باز کنید. تبهای بازشده قابل بستن هستند و با کلیک دوباره، همان تب فعال میشود.
+{role === "manager" ? "مسیرهای خودتان را باز کنید یا وضعیت تیم را از آیتم جداگانه ببینید." : "برای ادامه یادگیری، یکی از مسیرهای زیر را مثل یک فایل باز کنید."}
+از دورهها و میکروآموزشهای موجود انتخاب کنید؛ اینجا محتوای جدید ساخته نمیشود.
از دورهها، میکروآموزشها و آزمونهای موجود انتخاب کنید و ترتیب مسیر را بچینید.
فقط اطلاعات ضروری را وارد کنید. تنظیمات پیشرفته در مراحل بعدی هستند.
+{item.description}
{item.instruction}
{summary}
+پس از تکمیل همه مراحل اجباری صادر میشود.
دپارتمان، بخش، واحد، تیم، نقش، گروه ذخیرهشده و کارمندان خاص را میتوانید با هم ترکیب کنید.
هنوز کارمندی انتخاب نشده است.
} +{summaryParts.length ? `این مسیر برای ${summaryParts.join("، ")} انتخاب شده است؛ حدود ${toPersianDigits(totalPeople)} نفر در دامنه مخاطب قرار میگیرند.` : "هنوز مخاطبی انتخاب نشده است. برای انتشار، حداقل یک دپارتمان، واحد، تیم، نقش، گروه یا کارمند انتخاب کنید."} مسیر به صورت {audience.required ? "اجباری" : "پیشنهادی"} منتشر میشود. {path.items.length ? "مراحل مسیر آماده هستند." : "برای انتشار باید حداقل یک مرحله اضافه شود."}
{text}
مسیرها مثل فایلهای آموزشی باز میشوند و ساختار مراحل داخل تب نمایش داده میشود.
{path.shortDescription || path.goal || "ساختار مسیر، مخاطبان و مراحل مرتبط در همین نما قابل بررسی است."}
دپارتمان، بخش، واحد و کارمند خاص در مرحله انتشار با کارتهای انتخابی مدیریت میشوند.
{meta}
{item.description || item.instruction || "مرحله مسیر یادگیری"}
{path.goal || "برای ادامه مسیر، مرحله بعدی خود را انتخاب کنید."}
پیشرفت مسیر
{toPersianDigits(percent)}٪برای باز شدن این مرحله، ابتدا مرحله قبلی را تکمیل کنید.
{item.description || item.instruction || "برای ادامه مسیر، این مرحله را کامل کنید."}
{isExam ? "پیش از شروع آزمون، دستورالعمل را مرور کنید. نتیجه آزمون در تکمیل مسیر اثر دارد." : isMicro ? "محتوای کوتاه این مرحله در همین مسیر نمایش داده میشود تا تجربه یادگیری پیوسته بماند." : isResource ? "این منبع برای تکمیل درک مرحله در همین فضای مسیر در دسترس است." : "درس فعلی و ادامه محتوای دوره در همین فضای مسیر دنبال میشود و نیازی به ورود به بخش مدیریتی نیست."}
+{item.teamFa} • {item.departmentFa}
{template.goal}
این قالب فقط پیشنهاد ساختار است و دوره یا میکروآموزش جدید نمیسازد.
{text}
{action ?{label}
{value}{text}
پسزمینه
{title}
راهنمای شروع سریع
+به میز کار یادگیری سازمانی خوش آمدید
+ +شما به این بخش دسترسی ندارید.
{label}
{value}
| {c} | )}
|---|
| {toPersianDigits(v)} | )}
{toPersianDigits(lesson.blocksCount)} بلوک • {lesson.assignedToFa}
{course.typeFa} • {course.levelFa} • {course.statusFa}
{course.price ? formatToman(Number(course.price)) : "رایگان"}
{toPersianDigits(String(v))}
)}{item.instructorFa} • {item.timeFa}
ظرفیت: {item.capacityFa}
وضعیت: {item.statusFa}
{item.dateFa} • {item.statusFa}
{path.audienceFa} • مهلت: {path.dueFa}
{step.typeFa} • {step.dueFa}
وضعیت: {block.statusFa} {block.required ? "• الزامی" : "• اختیاری"}
{block.contentFa ?? "محتوای این بلوک را تنظیم کنید."}
; +} + +function BlockTypeSettings({ block, onPatch }: { block: any; onPatch: (patch: any) => void }) { + const media = ["تصویر", "ویدیو", "صوت", "PDF", "فایل قابل دانلود"]; + const question = block.typeFa.includes("سوال") || ["درست / نادرست", "جای خالی", "تطبیق", "ترتیبگذاری", "کشیدن و رها کردن"].includes(block.typeFa); + if (media.includes(block.typeFa)) { + returnتنظیمات رسانه
onPatch({ fileNameFa: event.target.files?.[0]?.name ?? "" })} className="w-full rounded-2xl bg-white/15 p-3" />تنظیمات سوال
تنظیمات محتوا
{course.typeFa} • {course.levelFa} • {course.statusFa}
رویداد آموزشی
مدیر کل سامانه
صادر شده در ۱۴۰۵
{label}
{value}
| {h} | )}
|---|
| {cell} | )}
آماده اتصال به API و قابل تکمیل با داده واقعی Laravel.
این بخش با داده نمونه آماده شده و برای اتصال به سرویس Laravel طراحی شده است.
برای بررسی دسترسی نقشها، یکی از حسابهای نمونه را انتخاب کنید.
{disabledMessage}
آیا میخواهید از حساب کاربری خارج شوید؟
+پیشرفت مسیر یادگیری: ۷۲٪
{label}
{toPersianDigits(value)}
{label}
{toPersianDigits(value)}
{toPersianDigits(body)}
{children}در حال آمادهسازی میز کار شما...
+ورود به محیط {user.roleFa}
+گزارش رشد کاربران
گزارش درآمد
تغییر پسزمینه
اندازه آیکونها
{widget.metricFa}
+{widget.detailFa}
+{widget.detailFa}
+{micro.estimatedTimeFa} • مرحله {toPersianDigits(viewIndex + 1)} از {toPersianDigits(micro.steps.length)}
+{stepBody}
+ {isInteractiveStep(step.blockType) ? ( +پاسخ ثبت شد.
: null} +{unlockMessage}
: null} + {micro.status === "completed" ?{step.questionFa ?? payload.questionFa}
{options.map((option: string) =>{String(payload.questionFa ?? step.bodyFa)}
{["درست", "نادرست"].map((option) =>{String(payload.textFa ?? microStepBody(step))}
onAnswer(event.target.value)} className="mt-3 w-full rounded-2xl bg-white/20 p-3 outline-none" placeholder="پاسخ را بنویسید" />تصویر: {String(payload.imageFa ?? "تصویر آموزشی")}
{lines(payload.hotspotsFa).map((point) =>{String(payload.questionFa ?? "امتیاز شما چیست؟")}
{String(payload.scenarioFa ?? microStepBody(step))}
{lines(payload.optionsFa).map((option) =>{String(payload.questionFa ?? "بازخورد شما چیست؟")}
{micro.titleFa}
+ {micro.puzzle?.enabled && micro.puzzle.image?.objectUrl ? ( +{micro.puzzle.completionMessage || "تبریک! پازل یادگیری شما کامل شد."}
+{label}
{value}
{toPersianDigits(stepsCount)} تکه بر اساس تعداد مرحلهها
+یک تصویر انتخاب کنید تا مرحلهها بهصورت خودکار تکههای آن را باز کنند.
+{micro.descriptionFa}
+پیشرفت: {toPersianDigits(micro.progressPercent)}٪
+{app.labelFa}
+این بخش با داده mock کار میکند و برای اتصال به API لاراول آماده است.
+{card}
{(index * 17 + 24).toLocaleString("fa-IR")}
{kind === "course" ? "دوره" : "میکروآموزش"}
+{item.descriptionFa}
+پیشرفت: {toPersianDigits(item.progressPercent)}٪
+مهلت تکمیل: {course.deadlineFa}
+{selected?.descriptionFa ?? course.descriptionFa}
+{content.descriptionFa} • {contentTypeFa(content.type)} • {content.isRequired ? "اجباری" : "اختیاری"} • {toPersianDigits(content.estimatedMinutes ?? 0)} دقیقه
{String(content.payload.textFa ?? "متن آموزشی")}
; + if (content.type === "video") returnگواهی پایان دوره
کد گواهی: {course.certificateCode}
+تاریخ صدور: {course.completedAtFa}
+پیشرفت: {toPersianDigits(course.progressPercent)}٪
+{isAdmin ? "کلاسها، ضبطها، حضور و بسترهای اتصال را مثل فایلهای آموزشی در تبهای جدا مدیریت کنید." : role === "manager" ? "کلاسهای خودتان و تیم را ببینید، وارد جلسه شوید و در صورت مجوز برای تیم کلاس بسازید." : "کلاسهای اختصاصیافته، ضبطها و برنامه تقویمی شما اینجا نمایش داده میشود."}
+