diff --git a/lms/lms/doctype/course_lesson/course_lesson.json b/lms/lms/doctype/course_lesson/course_lesson.json
index eaee75f2..dc224a69 100644
--- a/lms/lms/doctype/course_lesson/course_lesson.json
+++ b/lms/lms/doctype/course_lesson/course_lesson.json
@@ -23,6 +23,7 @@
"column_break_15",
"file_type",
"section_break_11",
+ "instructor_notes",
"body",
"help_section",
"help"
@@ -131,11 +132,16 @@
{
"fieldname": "column_break_15",
"fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "instructor_notes",
+ "fieldtype": "Text Editor",
+ "label": "Instructor Notes"
}
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2023-05-02 12:42:16.926753",
+ "modified": "2023-08-31 11:11:22.034553",
"modified_by": "Administrator",
"module": "LMS",
"name": "Course Lesson",
diff --git a/lms/lms/doctype/lms_course/lms_course.py b/lms/lms/doctype/lms_course/lms_course.py
index 6b51022d..27384f3f 100644
--- a/lms/lms/doctype/lms_course/lms_course.py
+++ b/lms/lms/doctype/lms_course/lms_course.py
@@ -281,6 +281,7 @@ def save_lesson(
preview,
idx,
lesson,
+ instructor_notes=None,
youtube=None,
quiz_id=None,
question=None,
@@ -296,6 +297,7 @@ def save_lesson(
"chapter": chapter,
"title": title,
"body": body,
+ "instructor_notes": instructor_notes,
"include_in_preview": preview,
"youtube": youtube,
"quiz_id": quiz_id,
diff --git a/lms/lms/utils.py b/lms/lms/utils.py
index f41480b5..f101e9f0 100644
--- a/lms/lms/utils.py
+++ b/lms/lms/utils.py
@@ -141,6 +141,7 @@ def get_lesson_details(chapter):
"quiz_id",
"question",
"file_type",
+ "instructor_notes",
],
as_dict=True,
)
diff --git a/lms/www/batch/edit.html b/lms/www/batch/edit.html
index 6fa88e22..9c10c042 100644
--- a/lms/www/batch/edit.html
+++ b/lms/www/batch/edit.html
@@ -86,6 +86,19 @@
+
+
+ {{ _("Instructor Notes") }}
+
+
+ {{ _("This notes will only be visible to the Course Creator, Course Evaluaor and Moderator.") }}
+
+
+ {% if lesson.instructor_notes %}
+
{{ lesson.instructor_notes }}
+ {% endif %}
+
+
@@ -117,7 +130,6 @@
};
{% endif %}
- {{ include_script('controls.bundle.js') }}
diff --git a/lms/www/batch/edit.js b/lms/www/batch/edit.js
index dd0ae722..6b050957 100644
--- a/lms/www/batch/edit.js
+++ b/lms/www/batch/edit.js
@@ -1,7 +1,15 @@
frappe.ready(() => {
- frappe.telemetry.capture("on_lesson_creation_page", "lms");
let self = this;
this.quiz_in_lesson = [];
+
+ frappe.telemetry.capture("on_lesson_creation_page", "lms");
+
+ if ($("#instructor-notes").length) {
+ frappe.require("controls.bundle.js", () => {
+ make_instructor_notes_component();
+ });
+ }
+
if ($("#current-lesson-content").length) {
parse_string_to_lesson();
}
@@ -149,6 +157,8 @@ const save = (lesson_content) => {
preview: $("#preview").prop("checked") ? 1 : 0,
idx: $("#lesson-title").data("index"),
lesson: lesson ? lesson : "",
+ instructor_notes:
+ this.instructor_notes.get_values().instructor_notes,
},
callback: (data) => {
frappe.show_alert({
@@ -466,3 +476,20 @@ class Upload {
};
}
}
+
+const make_instructor_notes_component = () => {
+ this.instructor_notes = new frappe.ui.FieldGroup({
+ fields: [
+ {
+ fieldname: "instructor_notes",
+ fieldtype: "Text Editor",
+ default: $("#current-instructor-notes").html(),
+ },
+ ],
+ body: $("#instructor-notes").get(0),
+ });
+ this.instructor_notes.make();
+ $("#instructor-notes .form-section:last").removeClass("empty-section");
+ $("#instructor-notes .frappe-control").removeClass("hide-control");
+ $("#instructor-notes .form-column").addClass("p-0");
+};
diff --git a/lms/www/batch/learn.html b/lms/www/batch/learn.html
index bf4a8d77..8f44c010 100644
--- a/lms/www/batch/learn.html
+++ b/lms/www/batch/learn.html
@@ -149,17 +149,28 @@
{% if show_lesson %}
{% if is_instructor and not lesson.include_in_preview %}
-
+
{{ _("This lesson is not available for preview. As you are the Instructor of the course only you can see it.") }}
×
{% endif %}
+ {% if lesson.instructor_notes and (is_moderator or instructor or is_evaluator) %}
+
+
+ {{ _("Instructor Notes") }}
+
+
+ {{ lesson.instructor_notes }}
+
+
+ {% endif %}
+
{{ render_html(lesson) }}
{% else %}
{% set course_link = "
" + _('here') + "" %}
-
+
{{ _("There is no preview available for this lesson.
Please join the course to access it.
Click {0} to enroll.").format(course_link) }}
diff --git a/lms/www/batch/learn.py b/lms/www/batch/learn.py
index 36244a2f..ddc036f1 100644
--- a/lms/www/batch/learn.py
+++ b/lms/www/batch/learn.py
@@ -2,7 +2,12 @@ import frappe
from frappe import _
from frappe.utils import cstr, flt
-from lms.lms.utils import get_lesson_url, has_course_moderator_role, is_instructor
+from lms.lms.utils import (
+ get_lesson_url,
+ has_course_moderator_role,
+ is_instructor,
+ has_course_evaluator_role,
+)
from lms.www.utils import (
get_common_context,
redirect_to_lesson,
@@ -37,20 +42,23 @@ def get_context(context):
redirect_to_lesson(context.course, index_)
context.lesson = get_current_lesson_details(lesson_number, context)
- instructor = is_instructor(context.course.name)
+ context.instructor = is_instructor(context.course.name)
+ context.is_moderator = has_course_moderator_role()
+ context.is_evaluator = has_course_evaluator_role()
context.show_lesson = (
context.membership
or (context.lesson and context.lesson.include_in_preview)
- or instructor
- or has_course_moderator_role()
+ or context.instructor
+ or context.is_moderator
+ or context.is_evaluator
)
if not context.lesson:
context.lesson = frappe._dict()
if frappe.form_dict.get("edit"):
- if not instructor and not has_course_moderator_role():
+ if not context.instructor and not context.is_moderator:
raise frappe.PermissionError(_("You do not have permission to access this page."))
context.lesson.edit_mode = True
else: