From 90151be166ac2c83d3022a9708563c6b1e2d5ef9 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Mon, 23 Feb 2026 12:35:13 +0530 Subject: [PATCH 1/4] fix: updated app name in workspace and desktop --- frontend/src/pages/Lesson.vue | 4 ++-- .../{frappe_lms.json => frappe_learning.json} | 5 +++-- lms/hooks.py | 2 +- .../workspace/{lms/lms.json => learning/learning.json} | 10 +++++----- 4 files changed, 11 insertions(+), 10 deletions(-) rename lms/desktop_icon/{frappe_lms.json => frappe_learning.json} (82%) rename lms/lms/workspace/{lms/lms.json => learning/learning.json} (97%) diff --git a/frontend/src/pages/Lesson.vue b/frontend/src/pages/Lesson.vue index 6bef3c0d..2a8a9523 100644 --- a/frontend/src/pages/Lesson.vue +++ b/frontend/src/pages/Lesson.vue @@ -783,11 +783,11 @@ const isAdmin = computed(() => { const allowEdit = () => { if (window.read_only_mode) return false - if (isAdmin.value) return true - return false + return isAdmin.value } const allowInstructorContent = () => { + if (window.read_only_mode) return false return isAdmin.value } diff --git a/lms/desktop_icon/frappe_lms.json b/lms/desktop_icon/frappe_learning.json similarity index 82% rename from lms/desktop_icon/frappe_lms.json rename to lms/desktop_icon/frappe_learning.json index f137321c..72f5b16d 100644 --- a/lms/desktop_icon/frappe_lms.json +++ b/lms/desktop_icon/frappe_learning.json @@ -6,14 +6,15 @@ "hidden": 0, "icon_type": "App", "idx": 0, - "label": "Frappe LMS", + "label": "Frappe Learning", "link": "/lms", "link_type": "External", "logo_url": "/assets/lms/frontend/learning.svg", "modified": "2025-12-15 14:31:50.704854", "modified_by": "Administrator", - "name": "Frappe LMS", + "name": "Frappe Learning", "owner": "Administrator", + "restrict_removal": 0, "roles": [], "standard": 1 } diff --git a/lms/hooks.py b/lms/hooks.py index 9f99e09d..3fc60642 100644 --- a/lms/hooks.py +++ b/lms/hooks.py @@ -5,7 +5,7 @@ from . import __version__ as app_version app_name = "frappe_lms" app_title = "Learning" app_publisher = "Frappe" -app_description = "Frappe LMS App" +app_description = "Open Source Learning Management System built with Frappe Framework" app_icon_url = "/assets/lms/images/lms-logo.png" app_icon_title = "Learning" app_color = "grey" diff --git a/lms/lms/workspace/lms/lms.json b/lms/lms/workspace/learning/learning.json similarity index 97% rename from lms/lms/workspace/lms/lms.json rename to lms/lms/workspace/learning/learning.json index 1912a7f3..42aee5ae 100644 --- a/lms/lms/workspace/lms/lms.json +++ b/lms/lms/workspace/learning/learning.json @@ -23,7 +23,7 @@ "icon": "education", "idx": 0, "is_hidden": 0, - "label": "LMS", + "label": "Learning", "links": [ { "hidden": 0, @@ -150,10 +150,10 @@ "type": "Link" } ], - "modified": "2025-12-08 13:23:09.718683", - "modified_by": "sayali@frappe.io", + "modified": "2026-02-23 12:27:25.010341", + "modified_by": "Administrator", "module": "LMS", - "name": "LMS", + "name": "Learning", "number_cards": [], "owner": "Administrator", "parent_page": "", @@ -217,6 +217,6 @@ "type": "DocType" } ], - "title": "LMS", + "title": "Learning", "type": "Workspace" } From fb0517caa0469e920c61b30b59b5a43fbbcf2751 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Mon, 23 Feb 2026 14:54:54 +0530 Subject: [PATCH 2/4] fix: show only instructor tab for admins on home page --- frontend/src/pages/Home/Home.vue | 41 ++++++++----------- .../course_evaluator/course_evaluator.json | 14 ++++++- .../lms_certificate_request.json | 14 ++++++- 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/frontend/src/pages/Home/Home.vue b/frontend/src/pages/Home/Home.vue index 8bbe7e41..ee742be5 100644 --- a/frontend/src/pages/Home/Home.vue +++ b/frontend/src/pages/Home/Home.vue @@ -1,9 +1,4 @@ diff --git a/frontend/src/components/Settings/Members.vue b/frontend/src/components/Settings/Members.vue index c9b9db45..c7abd1d4 100644 --- a/frontend/src/components/Settings/Members.vue +++ b/frontend/src/components/Settings/Members.vue @@ -131,6 +131,7 @@ import { ref, watch, reactive, inject } from 'vue' import { RefreshCw, Plus, Search, Shield } from 'lucide-vue-next' import { useOnboarding } from 'frappe-ui/frappe' import type { User } from '@/components/Settings/types' +import { useTelemetry } from 'frappe-ui/frappe' type Member = { username: string @@ -149,6 +150,7 @@ const hasNextPage = ref(false) const showForm = ref(false) const user = inject('$user') const { updateOnboardingStep } = useOnboarding('learning') +const { capture } = useTelemetry() const member = reactive({ email: '', @@ -202,6 +204,7 @@ const addMember = (close: () => void) => { }) .then((data: Member) => { if (user?.data?.is_system_manager) updateOnboardingStep('invite_students') + capture('user_added') show.value = false router.push({ name: 'ProfileRoles', diff --git a/frontend/src/pages/Batches/components/NewBatchModal.vue b/frontend/src/pages/Batches/components/NewBatchModal.vue index b88d938a..5bd6e443 100644 --- a/frontend/src/pages/Batches/components/NewBatchModal.vue +++ b/frontend/src/pages/Batches/components/NewBatchModal.vue @@ -111,7 +111,7 @@ diff --git a/frontend/src/pages/Courses/NewCourseModal.vue b/frontend/src/pages/Courses/NewCourseModal.vue index 02e98c1a..829669dd 100644 --- a/frontend/src/pages/Courses/NewCourseModal.vue +++ b/frontend/src/pages/Courses/NewCourseModal.vue @@ -76,7 +76,7 @@ diff --git a/lms/lms/doctype/course_lesson/course_lesson.py b/lms/lms/doctype/course_lesson/course_lesson.py index e891b9b0..7add79ab 100644 --- a/lms/lms/doctype/course_lesson/course_lesson.py +++ b/lms/lms/doctype/course_lesson/course_lesson.py @@ -103,7 +103,7 @@ def save_progress(lesson: str, course: str, scorm_details: dict = None): ) progress = get_course_progress(course) - capture_progress_for_analytics(progress, course) + capture_progress_for_analytics() # Had to get doc, as on_change doesn't trigger when you use set_value. The trigger is necessary for badge to get assigned. enrollment = frappe.get_doc("LMS Enrollment", membership) @@ -121,9 +121,8 @@ def save_progress(lesson: str, course: str, scorm_details: dict = None): return progress -def capture_progress_for_analytics(progress, course): - if progress in [25, 50, 75, 100]: - capture("course_progress", "lms", properties={"course": course, "progress": progress}) +def capture_progress_for_analytics(): + capture("course_progress", "lms") def get_quiz_progress(lesson): diff --git a/lms/lms/doctype/lms_certificate/lms_certificate.py b/lms/lms/doctype/lms_certificate/lms_certificate.py index 19579a07..bf5cfa76 100644 --- a/lms/lms/doctype/lms_certificate/lms_certificate.py +++ b/lms/lms/doctype/lms_certificate/lms_certificate.py @@ -19,8 +19,8 @@ class LMSCertificate(Document): self.name = make_autoname("hash", self.doctype) def after_insert(self): - self.send_certification_email() capture("certificate_issued", "lms") + self.send_certification_email() def send_certification_email(self): outgoing_email_account = frappe.get_cached_value( diff --git a/lms/lms/doctype/lms_course_review/lms_course_review.json b/lms/lms/doctype/lms_course_review/lms_course_review.json index 64f0ac27..a7d7fdbe 100644 --- a/lms/lms/doctype/lms_course_review/lms_course_review.json +++ b/lms/lms/doctype/lms_course_review/lms_course_review.json @@ -41,7 +41,7 @@ "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2026-02-20 17:40:39.823017", + "modified": "2026-02-23 16:21:18.503806", "modified_by": "sayali@frappe.io", "module": "LMS", "name": "LMS Course Review", @@ -65,6 +65,7 @@ "export": 1, "if_owner": 1, "print": 1, + "read": 1, "report": 1, "role": "LMS Student", "share": 1,