Files
enlight-lms/lms/public/frontend/assets/CreateCourse-PkCZOpbW.js
2024-03-04 22:12:21 +05:30

762 lines
18 KiB
JavaScript

var A = Object.defineProperty;
var P = Object.getOwnPropertySymbols;
var Y = Object.prototype.hasOwnProperty,
Z = Object.prototype.propertyIsEnumerable;
var M = (c, u, r) =>
u in c
? A(c, u, {
enumerable: !0,
configurable: !0,
writable: !0,
value: r,
})
: (c[u] = r),
k = (c, u) => {
for (var r in u || (u = {})) Y.call(u, r) && M(c, r, u[r]);
if (P) for (var r of P(u)) Z.call(u, r) && M(c, r, u[r]);
return c;
};
import {
d as ee,
r as x,
j as w,
ad as le,
k as R,
s as se,
y as h,
H as a,
J as n,
K as i,
F as N,
G as C,
M as z,
L as d,
Q as oe,
R as ae,
ay as te,
W as ie,
x as b,
a6 as re,
a7 as T,
az as _,
aq as ne,
a4 as B,
ax as ue,
} from "./frappe-ui-n1bXVQkV.js";
import { e as de, c as ce, d as me } from "./index-xt-hKVBz.js";
import { _ as _e, X as I } from "./Link-xVzNCgtj.js";
import { _ as pe } from "./CourseOutline-mDbSZeRP.js";
import { F as ve } from "./file-text-dAqD9clk.js";
import "./plus-w56hNznP.js";
const be = { class: "h-screen text-base" },
fe = { class: "grid grid-cols-[70%,30%] h-full" },
ge = {
class: "sticky top-0 z-10 flex items-center justify-between border-b bg-white px-3 py-2.5 sm:px-5",
},
ye = { class: "flex items-center" },
Ce = { class: "mt-5 mb-10" },
Ve = { class: "container mb-5" },
he = { class: "text-lg font-semibold mb-4" },
ke = { class: "mb-4" },
xe = { class: "mb-1.5 text-sm text-gray-700" },
we = { class: "mb-4" },
Ne = { key: 1, class: "mb-4" },
Te = { class: "text-xs text-gray-600 mb-1" },
Ue = { class: "flex items-center" },
$e = { class: "border rounded-md p-2 mr-2" },
Se = { class: "flex flex-col" },
je = { class: "text-sm text-gray-500 mt-1" },
Fe = { class: "mb-1.5 text-sm text-gray-700" },
Ee = { class: "flex items-center" },
De = { class: "flex items-center bg-gray-100 p-2 rounded-md mr-2" },
Le = { class: "container border-t" },
Pe = { class: "text-lg font-semibold mt-5 mb-4" },
Me = { class: "flex items-center justify-between mb-5" },
Re = { class: "container border-t" },
ze = { class: "text-lg font-semibold mt-5 mb-4" },
Be = { class: "mb-4" },
Ie = { class: "border-l px-5 pt-5" },
We = {
__name: "CreateCourse",
props: { courseName: { type: String } },
setup(c) {
const u = ee("$user"),
r = x(""),
p = x(""),
m = x(null),
f = c,
K = w(() => {
var e;
let l = [{ label: "Courses", route: { name: "Courses" } }];
return (
t.doc &&
l.push({
label: (e = t.doc) == null ? void 0 : e.title,
route: {
name: "CourseDetail",
params: { courseName: f.courseName },
},
}),
l.push({
label:
f.courseName == "new"
? "New Course"
: "Edit Course",
route: {
name: "CreateCourse",
params: { courseName: f.courseName },
},
}),
l
);
}),
t = le({
doctype: "LMS Course",
name: f.courseName,
auto: !1,
onSuccess(l) {
(r.value = l.tags),
O.reload({ image: l.image }),
Object.assign(o, l),
(o.published = !!l.published),
(o.upcoming = !!l.upcoming),
(o.disable_self_learning =
!!l.disable_self_learning),
(o.paid_course = !!l.paid_course);
},
}),
O = R({
url: "lms.lms.api.get_file_info",
makeParams(l) {
return { file_url: l.image };
},
auto: !1,
onSuccess(l) {
m.value = l;
},
});
se(() => {
var l, e;
(!((l = u.data) != null && l.is_moderator) ||
!((e = u.data) != null && e.is_instructor)) &&
(window.location.href = "/login"),
f.courseName !== "new" && t.reload();
});
const o = w(() => {
var l, e, v, s, g, y, V, S, j, F, E, D, L;
return {
title: ((l = t.doc) == null ? void 0 : l.title) || "",
short_introduction:
((e = t.doc) == null
? void 0
: e.short_introduction) || "",
description:
((v = t.doc) == null ? void 0 : v.description) ||
"",
video_link:
((s = t.doc) == null ? void 0 : s.video_link) || "",
course_image:
((g = t.doc) == null ? void 0 : g.image) || null,
tags: ((y = t.doc) == null ? void 0 : y.tags) || "",
published: !!((V = t.doc) != null && V.published),
upcoming: !!((S = t.doc) != null && S.upcoming),
disable_self_learning: !!(
(j = t.doc) != null && j.disable_self_learning
),
course_image: m.value,
paid_course: !!((F = t.doc) != null && F.paid_course),
course_price:
((E = t.doc) == null ? void 0 : E.course_price) ||
"",
currency:
((D = t.doc) == null ? void 0 : D.currency) || "",
image: ((L = t.doc) == null ? void 0 : L.image) || null,
};
}),
q = w(() => {
var l, e;
return (l = t.doc) != null && l.tags
? t.doc.tags.split(", ")
: (e = r.value) == null
? void 0
: e.split(", ");
}),
G = R({
url: "frappe.client.insert",
makeParams(l) {
return {
doc: k(
{
doctype: "LMS Course",
image: m.value.file_url,
},
l
),
};
},
}),
H = () => {
var l;
t.doc
? t.setValue.submit(
k(
{
image:
((l = m.value) == null
? void 0
: l.file_url) || null,
},
o.value
),
{
validate() {
return U();
},
onError(e) {
$(e);
},
}
)
: G.submit(o.value, {
validate() {
return U();
},
onError(e) {
$(e);
},
});
},
U = () => {
const l = [
"title",
"short_introduction",
"description",
"video_link",
"course_image",
];
for (const e of l)
if (!o.value[e])
return `${de(e.split("_").join(" "))} is mandatory`;
if (
o.value.paid_course &&
(!o.value.course_price || !o.value.currency)
)
return "Course price and currency are mandatory for paid courses";
},
J = (l) => {
let e = l.name.split(".").pop().toLowerCase();
if (!["jpg", "jpeg", "png"].includes(e))
return "Only image file is allowed.";
},
Q = () => {
p.value &&
((r.value = r.value
? `${r.value}, ${p.value}`
: p.value),
(p.value = ""));
},
W = (l) => {
var e;
(r.value =
(e = r.value) == null
? void 0
: e
.split(", ")
.filter((v) => v !== l)
.join(", ")),
(p.value = "");
},
$ = (l) => {
var e;
ce({
title: "Error",
text: ((e = l.messages) == null ? void 0 : e[0]) || l,
icon: "x",
iconClasses: "bg-red-600 text-white rounded-md p-px",
position: "top-center",
timeout: 10,
});
},
X = () => {
(m.value = null), (o.value.course_image = null);
};
return (l, e) => {
const v = ie("router-link");
return (
b(),
h("div", be, [
a("div", fe, [
a("div", null, [
a("header", ge, [
n(
i(re),
{ class: "h-7", items: K.value },
null,
8,
["items"]
),
a("div", ye, [
i(t).doc
? (b(),
N(
v,
{
key: 0,
to: {
name: "CourseDetail",
params: {
courseName:
i(t).doc
.name,
},
},
},
{
default: C(() => [
n(i(T), null, {
default: C(
() => [
a(
"span",
null,
d(
l.__(
"View Course"
)
),
1
),
]
),
_: 1,
}),
]),
_: 1,
},
8,
["to"]
))
: z("", !0),
n(
i(T),
{
variant: "solid",
onClick:
e[0] || (e[0] = (s) => H()),
class: "ml-2",
},
{
default: C(() => [
a(
"span",
null,
d(l.__("Save")),
1
),
]),
_: 1,
}
),
]),
]),
a("div", Ce, [
a("div", Ve, [
a(
"div",
he,
d(l.__("Course Details")),
1
),
n(
i(_),
{
modelValue: o.value.title,
"onUpdate:modelValue":
e[1] ||
(e[1] = (s) =>
(o.value.title = s)),
label: l.__("Title"),
class: "mb-4",
},
null,
8,
["modelValue", "label"]
),
n(
i(_),
{
modelValue:
o.value.short_introduction,
"onUpdate:modelValue":
e[2] ||
(e[2] = (s) =>
(o.value.short_introduction =
s)),
label: l.__(
"Short Introduction"
),
class: "mb-4",
},
null,
8,
["modelValue", "label"]
),
a("div", ke, [
a(
"div",
xe,
d(l.__("Course Description")),
1
),
n(
i(ne),
{
content:
o.value.description,
onChange:
e[3] ||
(e[3] = (s) =>
(o.value.description =
s)),
editable: !0,
fixedMenu: !0,
editorClass:
"prose-sm max-w-none border-b border-x bg-gray-100 rounded-b-md py-1 px-2 min-h-[7rem]",
},
null,
8,
["content"]
),
]),
m.value
? (b(),
h("div", Ne, [
a(
"div",
Te,
d(l.__("Course Image")),
1
),
a("div", Ue, [
a("div", $e, [
n(i(ve), {
class: "h-5 w-5 stroke-1.5 text-gray-700",
}),
]),
a("div", Se, [
a(
"span",
null,
d(
m.value
.file_name
),
1
),
a(
"span",
je,
d(
i(me)(
m.value
.file_size
)
),
1
),
]),
n(i(I), {
onClick:
e[5] ||
(e[5] = (s) =>
X()),
class: "bg-gray-200 rounded-md cursor-pointer stroke-1.5 w-5 h-5 p-1 ml-4",
}),
]),
]))
: (b(),
N(
i(ue),
{
key: 0,
fileTypes: ["image/*"],
validateFile: J,
onSuccess:
e[4] ||
(e[4] = (s) => {
m.value = s;
}),
},
{
default: C(
({
file: s,
progress: g,
uploading: y,
openFileSelector:
V,
}) => [
a("div", we, [
n(
i(T),
{
onClick:
V,
loading:
y,
},
{
default:
C(
() => [
B(
d(
y
? `Uploading ${g}%`
: "Upload an image"
),
1
),
]
),
_: 2,
},
1032,
[
"onClick",
"loading",
]
),
]),
]
),
_: 1,
}
)),
n(
i(_),
{
modelValue: o.value.video_link,
"onUpdate:modelValue":
e[6] ||
(e[6] = (s) =>
(o.value.video_link =
s)),
label: l.__("Preview Video"),
class: "mb-4",
},
null,
8,
["modelValue", "label"]
),
a("div", null, [
a("div", Fe, d(l.__("Tags")), 1),
a("div", Ee, [
(b(!0),
h(
oe,
null,
ae(
q.value,
(s) => (
b(),
h("div", De, [
B(
d(s) + " ",
1
),
n(
i(I),
{
class: "stroke-1.5 w-3 h-3 ml-2 cursor-pointer",
onClick:
(
g
) =>
W(
s
),
},
null,
8,
["onClick"]
),
])
)
),
256
)),
n(
i(_),
{
modelValue: p.value,
"onUpdate:modelValue":
e[7] ||
(e[7] = (s) =>
(p.value = s)),
onKeyup:
e[8] ||
(e[8] = te(
(s) => Q(),
["enter"]
)),
},
null,
8,
["modelValue"]
),
]),
]),
]),
a("div", Le, [
a(
"div",
Pe,
d(l.__("Course Settings")),
1
),
a("div", Me, [
n(
i(_),
{
type: "checkbox",
modelValue:
o.value.published,
"onUpdate:modelValue":
e[9] ||
(e[9] = (s) =>
(o.value.published =
s)),
label: l.__("Published"),
},
null,
8,
["modelValue", "label"]
),
n(
i(_),
{
type: "checkbox",
modelValue:
o.value.upcoming,
"onUpdate:modelValue":
e[10] ||
(e[10] = (s) =>
(o.value.upcoming =
s)),
label: l.__("Upcoming"),
},
null,
8,
["modelValue", "label"]
),
n(
i(_),
{
type: "checkbox",
modelValue:
o.value
.disable_self_learning,
"onUpdate:modelValue":
e[11] ||
(e[11] = (s) =>
(o.value.disable_self_learning =
s)),
label: l.__(
"Disable Self Enrollment"
),
},
null,
8,
["modelValue", "label"]
),
]),
]),
a("div", Re, [
a(
"div",
ze,
d(l.__("Course Pricing")),
1
),
a("div", Be, [
n(
i(_),
{
type: "checkbox",
modelValue:
o.value.paid_course,
"onUpdate:modelValue":
e[12] ||
(e[12] = (s) =>
(o.value.paid_course =
s)),
label: l.__("Paid Course"),
},
null,
8,
["modelValue", "label"]
),
]),
n(
i(_),
{
modelValue:
o.value.course_price,
"onUpdate:modelValue":
e[13] ||
(e[13] = (s) =>
(o.value.course_price =
s)),
label: l.__("Course Price"),
class: "mb-4",
},
null,
8,
["modelValue", "label"]
),
n(
_e,
{
doctype: "Currency",
modelValue: o.value.currency,
"onUpdate:modelValue":
e[14] ||
(e[14] = (s) =>
(o.value.currency = s)),
filters: { enabled: 1 },
label: l.__("Currency"),
},
null,
8,
["modelValue", "label"]
),
]),
]),
]),
a("div", Ie, [
i(t).doc
? (b(),
N(
pe,
{
key: 0,
courseName: i(t).doc.name,
title: i(t).doc.title,
allowEdit: !0,
},
null,
8,
["courseName", "title"]
))
: z("", !0),
]),
]),
])
);
};
},
};
export { We as default };
//# sourceMappingURL=CreateCourse-PkCZOpbW.js.map