diff --git a/frontend/src/pages/Badge.vue b/frontend/src/pages/Badge.vue deleted file mode 100644 index 565c6502..00000000 --- a/frontend/src/pages/Badge.vue +++ /dev/null @@ -1,82 +0,0 @@ - - diff --git a/frontend/src/pages/ProfileAbout.vue b/frontend/src/pages/ProfileAbout.vue index d2fb068c..5206e1a3 100644 --- a/frontend/src/pages/ProfileAbout.vue +++ b/frontend/src/pages/ProfileAbout.vue @@ -70,13 +70,16 @@
{{ badge.badge_description }}
-
+
{{ __('Issued on') }}: {{ dayjs(badge.issued_on).format('DD MMM YYYY') }}
-
+
{{ __('Share on') }}: @@ -125,6 +128,7 @@ import DOMPurify from 'dompurify' import { getLmsRoute } from '@/utils/basePath' const dayjs = inject('$dayjs') +const user = inject('$user') const { branding } = sessionStore() const props = defineProps({ @@ -135,13 +139,9 @@ const props = defineProps({ }) const badges = createResource({ - url: 'frappe.client.get_list', + url: 'lms.lms.api.get_badges', params: { - doctype: 'LMS Badge Assignment', - fields: ['name', 'badge', 'badge_image', 'badge_description', 'issued_on'], - filters: { - member: props.profile.data.name, - }, + member: props.profile.data.name, }, auto: true, transform(data) { @@ -160,14 +160,16 @@ const shareOnSocial = (badge, medium) => { let shareUrl const url = encodeURIComponent( `${window.location.origin}${getLmsRoute( - `badges/${badge.badge}/${props.profile.data?.email}` + `user/${props.profile.data?.username}` )}` ) - const summary = `I am happy to announce that I earned the ${ - badge.badge - } badge on ${dayjs(badge.issued_on).format('DD MMM YYYY')} at ${ + const summary = __( + 'I am happy to announce that I earned the {0} badge on {1} at {2}' + ).format( + badge.badge, + dayjs(badge.issued_on).format('DD MMM YYYY'), branding.data?.app_name - }.` + ) if (medium == 'LinkedIn') shareUrl = `https://www.linkedin.com/shareArticle?mini=true&url=${url}&text=${summary}` diff --git a/lms/lms/api.py b/lms/lms/api.py index 21630743..d60f6103 100644 --- a/lms/lms/api.py +++ b/lms/lms/api.py @@ -1298,6 +1298,7 @@ def get_lms_settings(): "contact_us_url", "livecode_url", "disable_pwa", + "allow_job_posting", ] settings = frappe._dict() @@ -1310,7 +1311,6 @@ def get_lms_settings(): @frappe.whitelist() def cancel_evaluation(evaluation: dict): evaluation = frappe._dict(evaluation) - print(evaluation.member, frappe.session.user) if evaluation.member != frappe.session.user: frappe.throw(_("You do not have permission to cancel this evaluation."), frappe.PermissionError) @@ -2219,3 +2219,17 @@ def get_assessment_from_lesson(course: str, assessmentType: str): assessments.append(quiz_name) return assessments + + +@frappe.whitelist() +def get_badges(member: str): + if not has_lms_role(frappe.get_roles()): + frappe.throw(_("You do not have permission to access badges."), frappe.PermissionError) + + badges = frappe.get_all( + "LMS Badge Assignment", + {"member": member}, + ["name", "member", "badge", "badge_image", "badge_description", "issued_on"], + ) + + return badges diff --git a/lms/lms/doctype/lms_badge/lms_badge.json b/lms/lms/doctype/lms_badge/lms_badge.json index 70e257d6..5f4cda8f 100644 --- a/lms/lms/doctype/lms_badge/lms_badge.json +++ b/lms/lms/doctype/lms_badge/lms_badge.json @@ -100,7 +100,7 @@ "link_fieldname": "badge" } ], - "modified": "2026-02-19 12:04:56.263316", + "modified": "2026-02-19 15:05:49.719925", "modified_by": "sayali@frappe.io", "module": "LMS", "name": "LMS Badge", @@ -131,15 +131,6 @@ "role": "Moderator", "share": 1, "write": 1 - }, - { - "email": 1, - "export": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "LMS Student", - "share": 1 } ], "row_format": "Dynamic", diff --git a/lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json b/lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json index 15935668..bada8b1c 100644 --- a/lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json +++ b/lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json @@ -84,7 +84,7 @@ "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2025-12-04 17:06:26.090276", + "modified": "2026-02-19 15:06:08.389081", "modified_by": "sayali@frappe.io", "module": "LMS", "name": "LMS Badge Assignment", @@ -120,10 +120,6 @@ "read": 1, "role": "LMS Student" }, - { - "read": 1, - "role": "LMS Student" - }, { "create": 1, "delete": 1, diff --git a/lms/lms/doctype/lms_settings/lms_settings.json b/lms/lms/doctype/lms_settings/lms_settings.json index e9207e91..4a35a76a 100644 --- a/lms/lms/doctype/lms_settings/lms_settings.json +++ b/lms/lms/doctype/lms_settings/lms_settings.json @@ -76,7 +76,9 @@ "contact_us_tab", "contact_us_email", "column_break_gcgv", - "contact_us_url" + "contact_us_url", + "jobs_tab", + "allow_job_posting" ], "fields": [ { @@ -471,13 +473,24 @@ { "fieldname": "column_break_dtns", "fieldtype": "Column Break" + }, + { + "fieldname": "jobs_tab", + "fieldtype": "Tab Break", + "label": "Jobs" + }, + { + "default": "1", + "fieldname": "allow_job_posting", + "fieldtype": "Check", + "label": "Allow Job Posting" } ], "grid_page_length": 50, "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2026-01-01 19:36:54.443390", + "modified": "2026-02-19 12:57:28.499184", "modified_by": "sayali@frappe.io", "module": "LMS", "name": "LMS Settings",