feat: add pages to nav after install

This commit is contained in:
Jannat Patel
2022-11-11 10:40:29 +05:30
parent c8dbc18179
commit 157f6b45e9
9 changed files with 95 additions and 41 deletions

View File

@@ -58,6 +58,7 @@ web_include_js = ["website.bundle.js"]
# ------------ # ------------
# before_install = "lms.install.before_install" # before_install = "lms.install.before_install"
after_install = "lms.install.add_pages_to_nav"
after_sync = "lms.install.after_sync" after_sync = "lms.install.after_sync"
after_uninstall = "lms.install.after_uninstall" after_uninstall = "lms.install.after_uninstall"

View File

@@ -2,6 +2,10 @@ import frappe
from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
def after_install():
add_pages_to_nav()
def after_sync(): def after_sync():
create_lms_roles() create_lms_roles()
set_default_home() set_default_home()
@@ -91,3 +95,41 @@ def delete_custom_fields():
for field in fields: for field in fields:
frappe.db.delete("Custom Field", {"fieldname": field}) frappe.db.delete("Custom Field", {"fieldname": field})
frappe.db.commit() frappe.db.commit()
def add_pages_to_nav():
pages = [
{"label": "Courses", "url": "/courses", "parent": "Explore", "idx": 2},
{"label": "Statistics", "url": "/statistics", "parent": "Explore", "idx": 3},
{"label": "Jobs", "url": "/jobs", "parent": "Explore", "idx": 4},
{"label": "People", "url": "/community", "parent": "Explore", "idx": 5},
]
if not frappe.db.exists("Top Bar Item", {"label": "Explore"}):
frappe.get_doc(
{
"doctype": "Top Bar Item",
"label": "Explore",
"parent": "Website Settings",
"parenttype": "Website Settings",
"parentfield": "top_bar_items",
"idx": 1,
}
).save()
for page in pages:
if not frappe.db.exists(
"Top Bar Item", {"url": ["like", "%" + page.get("url") + "%"]}
):
frappe.get_doc(
{
"doctype": "Top Bar Item",
"label": page.get("label"),
"url": page.get("url"),
"parent_label": page.get("parent"),
"idx": page.get("idx"),
"parent": "Website Settings",
"parenttype": "Website Settings",
"parentfield": "top_bar_items",
}
).save()

View File

@@ -659,19 +659,14 @@ def get_chart_data(chart_name, timespan, timegrain, from_date, to_date):
@frappe.whitelist(allow_guest=True) @frappe.whitelist(allow_guest=True)
def get_course_completion_data(): def get_course_completion_data():
all_membership = frappe.db.count("LMS Batch Membership") all_membership = frappe.db.count("LMS Batch Membership")
completed = frappe.db.count("LMS Batch Membership", { completed = frappe.db.count("LMS Batch Membership", {"progress": ["like", "%100%"]})
"progress": ["like", "%100%"]
})
return { return {
"labels": ["Completed", "In Progress"], "labels": ["Completed", "In Progress"],
"datasets": [ "datasets": [
{ {
"name": "Course Completion", "name": "Course Completion",
"values": [ "values": [completed, all_membership - completed],
completed, }
all_membership - completed ],
], }
}
],
}

View File

@@ -36,3 +36,4 @@ lms.patches.v0_0.set_dashboard #11-10-2022
lms.patches.v0_0.set_courses_page_as_home lms.patches.v0_0.set_courses_page_as_home
lms.patches.v0_0.set_member_in_progress #09-11-2022 lms.patches.v0_0.set_member_in_progress #09-11-2022
lms.patches.v0_0.convert_progress_to_float lms.patches.v0_0.convert_progress_to_float
lms.patches.v0_0.add_pages_to_nav #11-11-2022

View File

@@ -0,0 +1,5 @@
import frappe
from lms.install import add_pages_to_nav
def execute():
add_pages_to_nav()

View File

@@ -1,8 +1,11 @@
import frappe import frappe
from frappe.utils import flt from frappe.utils import flt
def execute(): def execute():
frappe.reload_doc("lms", "doctype", "lms_course_progress") frappe.reload_doc("lms", "doctype", "lms_course_progress")
progress_records = frappe.get_all("LMS Batch Membership", fields=["name", "progress"]) progress_records = frappe.get_all("LMS Batch Membership", fields=["name", "progress"])
for progress in progress_records: for progress in progress_records:
frappe.db.set_value("LMS Batch Membership", progress.name, "progress", flt(progress.progress)) frappe.db.set_value(
"LMS Batch Membership", progress.name, "progress", flt(progress.progress)
)

View File

@@ -23,7 +23,6 @@ frappe.ready(() => {
generate_graph("Lesson Completion", "#lesson-completion"); generate_graph("Lesson Completion", "#lesson-completion");
generate_course_completion_graph(); generate_course_completion_graph();
} }
}); });
const setup_file_size = () => { const setup_file_size = () => {
@@ -59,10 +58,13 @@ const join_course = (e) => {
callback: (data) => { callback: (data) => {
if (data.message == "OK") { if (data.message == "OK") {
$(".no-preview-modal").modal("hide"); $(".no-preview-modal").modal("hide");
frappe.show_alert({ frappe.show_alert(
message: __("Enrolled successfully"), {
indicator: "green", message: __("Enrolled successfully"),
}, 3); indicator: "green",
},
3
);
setTimeout(function () { setTimeout(function () {
window.location.href = `/courses/${course}/learn/1.1`; window.location.href = `/courses/${course}/learn/1.1`;
}, 1000); }, 1000);
@@ -86,12 +88,15 @@ const notify_user = (e) => {
}, },
callback: (data) => { callback: (data) => {
$(".no-preview-modal").modal("hide"); $(".no-preview-modal").modal("hide");
frappe.show_alert({ frappe.show_alert(
message: __( {
"You have opted to be notified for this course. You will receive an email when the course becomes available." message: __(
), "You have opted to be notified for this course. You will receive an email when the course becomes available."
indicator: "green", ),
}, 3); indicator: "green",
},
3
);
setTimeout(() => { setTimeout(() => {
window.location.reload(); window.location.reload();
}, 3000); }, 3000);
@@ -123,15 +128,16 @@ const add_chapter = (e) => {
scroll_to_chapter_container(); scroll_to_chapter_container();
}; };
const scroll_to_chapter_container = () => { const scroll_to_chapter_container = () => {
$([document.documentElement, document.body]).animate({ $([document.documentElement, document.body]).animate(
scrollTop: $(".new-chapter").offset().top, {
}, 1000); scrollTop: $(".new-chapter").offset().top,
},
1000
);
$(".new-chapter").find(".chapter-title-main").focus(); $(".new-chapter").find(".chapter-title-main").focus();
}; };
const save_chapter = (e) => { const save_chapter = (e) => {
let target = $(e.currentTarget); let target = $(e.currentTarget);
let parent = target.closest(".chapter-parent"); let parent = target.closest(".chapter-parent");
@@ -157,7 +163,7 @@ const save_chapter = (e) => {
}); });
}; };
const generate_graph = (chart_name, element, type="line") => { const generate_graph = (chart_name, element, type = "line") => {
let date = frappe.datetime; let date = frappe.datetime;
frappe.call({ frappe.call({
@@ -167,7 +173,7 @@ const generate_graph = (chart_name, element, type="line") => {
timespan: "Select Date Range", timespan: "Select Date Range",
timegrain: "Daily", timegrain: "Daily",
from_date: date.add_days(date.get_today(), -30), from_date: date.add_days(date.get_today(), -30),
to_date: date.add_days(date.get_today(), +1) to_date: date.add_days(date.get_today(), +1),
}, },
callback: (data) => { callback: (data) => {
render_chart(data.message, chart_name, element, type); render_chart(data.message, chart_name, element, type);
@@ -191,12 +197,16 @@ const render_chart = (data, chart_name, element, type) => {
}); });
}; };
const generate_course_completion_graph = () => { const generate_course_completion_graph = () => {
frappe.call({ frappe.call({
method: "lms.lms.utils.get_course_completion_data", method: "lms.lms.utils.get_course_completion_data",
callback: (data) => { callback: (data) => {
render_chart(data.message, "Course Completion", "#course-completion", "pie") render_chart(
} data.message,
}) "Course Completion",
} "#course-completion",
"pie"
);
},
});
};

View File

View File

@@ -1,5 +1,4 @@
frappe.ready(() => { frappe.ready(() => {
$(".nav-link").click((e) => { $(".nav-link").click((e) => {
change_hash(e); change_hash(e);
}); });
@@ -7,10 +6,8 @@ frappe.ready(() => {
if (window.location.hash) { if (window.location.hash) {
open_tab(); open_tab();
} }
}); });
const change_hash = (e) => { const change_hash = (e) => {
window.location.hash = $(e.currentTarget).attr("href"); window.location.hash = $(e.currentTarget).attr("href");
}; };