diff --git a/src/components/generic/Blocks/Client/VideoBlock.jsx b/src/components/generic/Blocks/Client/VideoBlock.jsx
index 4f9bd3d..60f2c58 100644
--- a/src/components/generic/Blocks/Client/VideoBlock.jsx
+++ b/src/components/generic/Blocks/Client/VideoBlock.jsx
@@ -516,6 +516,7 @@ export function VideoBlock({ content, onWatchProgress, resumePercent, antiSkipEn
playsInline
controlsList="nodownload nofullscreen noremoteplayback"
disablePictureInPicture
+ disableRemotePlayback
onContextMenu={(e) => e.preventDefault()}
className={`w-full h-full ${isFullscreen ? "object-contain" : "object-cover"}`}
/>
@@ -610,7 +611,7 @@ export function VideoBlock({ content, onWatchProgress, resumePercent, antiSkipEn
style={{ left: `${hoverProgress.x}px`, transform: "translateX(-50%)" }}
>
-
{fmtTime(hoverProgress.time)}
diff --git a/src/modules/admin/pages/courses/AddCourse.jsx b/src/modules/admin/pages/courses/AddCourse.jsx
index cd8faa1..37bb8d4 100644
--- a/src/modules/admin/pages/courses/AddCourse.jsx
+++ b/src/modules/admin/pages/courses/AddCourse.jsx
@@ -181,8 +181,19 @@ export default function AddCourse() {
},
});
- const { fields: objectiveFields, append: appendObjective, remove: removeObjective } =
+ const { fields: objectiveFields, append: appendObjective, remove: removeObjective, insert: insertObjective } =
useFieldArray({ control, name: "objectives" });
+
+ const handleObjectivePaste = (e, index) => {
+ const text = e.clipboardData.getData("text");
+ const lines = text.split(/\r\n|\r|\n/).map((l) => l.trim()).filter(Boolean);
+ if (lines.length <= 1) return;
+ e.preventDefault();
+ setValue(`objectives.${index}.text`, lines[0], { shouldDirty: true, shouldValidate: true });
+ lines.slice(1).forEach((line, i) => {
+ insertObjective(index + 1 + i, { text: line });
+ });
+ };
const { fields: roleFields, append: appendRole, remove: removeRole } =
useFieldArray({ control, name: "roles" });
@@ -415,6 +426,7 @@ export default function AddCourse() {
handleObjectivePaste(e, index)}
/>
diff --git a/src/modules/admin/pages/courses/EditCourse.jsx b/src/modules/admin/pages/courses/EditCourse.jsx
index 15f2c7d..8b138ee 100644
--- a/src/modules/admin/pages/courses/EditCourse.jsx
+++ b/src/modules/admin/pages/courses/EditCourse.jsx
@@ -239,8 +239,19 @@ export default function EditCourse() {
},
});
- const { fields: objectiveFields, append: appendObjective, remove: removeObjective } =
+ const { fields: objectiveFields, append: appendObjective, remove: removeObjective, insert: insertObjective } =
useFieldArray({ control, name: "objectives" });
+
+ const handleObjectivePaste = (e, index) => {
+ const text = e.clipboardData.getData("text");
+ const lines = text.split(/\r\n|\r|\n/).map((l) => l.trim()).filter(Boolean);
+ if (lines.length <= 1) return;
+ e.preventDefault();
+ setValue(`objectives.${index}.text`, lines[0], { shouldDirty: true, shouldValidate: true });
+ lines.slice(1).forEach((line, i) => {
+ insertObjective(index + 1 + i, { text: line });
+ });
+ };
const { fields: roleFields, append: appendRole, remove: removeRole } =
useFieldArray({ control, name: "roles" });
@@ -675,6 +686,7 @@ export default function EditCourse() {
handleObjectivePaste(e, index)}
/>
diff --git a/src/modules/client/pages/CourseDetails.jsx b/src/modules/client/pages/CourseDetails.jsx
index 941478e..53cce3a 100644
--- a/src/modules/client/pages/CourseDetails.jsx
+++ b/src/modules/client/pages/CourseDetails.jsx
@@ -704,7 +704,7 @@ const CourseDetails = () => {