From 4a52a28ce118cd7354b71f69987257a2476fff95 Mon Sep 17 00:00:00 2001 From: Suhail <63963181+BreadGenie@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:50:07 +0530 Subject: [PATCH] feat(wiki-space): space specific logo and navbar settings (#224) --- wiki/wiki/doctype/wiki_page/wiki_page.py | 10 +++-- wiki/wiki/doctype/wiki_space/wiki_space.js | 46 ++++++++++++++++++++ wiki/wiki/doctype/wiki_space/wiki_space.json | 29 +++++++++++- 3 files changed, 80 insertions(+), 5 deletions(-) diff --git a/wiki/wiki/doctype/wiki_page/wiki_page.py b/wiki/wiki/doctype/wiki_page/wiki_page.py index bfed1837..1b36fef5 100644 --- a/wiki/wiki/doctype/wiki_page/wiki_page.py +++ b/wiki/wiki/doctype/wiki_page/wiki_page.py @@ -216,11 +216,15 @@ def calculate_toc_html(self, html): def get_context(self, context): self.verify_permission("read") self.set_breadcrumbs(context) + wiki_settings = frappe.get_single("Wiki Settings") + wiki_space_name = frappe.get_value("Wiki Group Item", {"wiki_page": self.name}, "parent") + wiki_space = frappe.get_doc("Wiki Space", wiki_space_name) + context.navbar_search = wiki_settings.add_search_bar context.add_dark_mode = wiki_settings.add_dark_mode - context.light_mode_logo = wiki_settings.logo - context.dark_mode_logo = wiki_settings.dark_mode_logo + context.light_mode_logo = wiki_space.wiki_space_logo or wiki_settings.logo + context.dark_mode_logo = wiki_space.wiki_space_logo or wiki_settings.dark_mode_logo context.script = wiki_settings.javascript context.show_feedback = wiki_settings.enable_feedback context.ask_for_contact_details = wiki_settings.ask_for_contact_details @@ -265,7 +269,7 @@ def get_context(self, context): ) context = context.update( { - "navbar_items": modify_header_footer_items(wiki_settings.navbar), + "navbar_items": modify_header_footer_items(wiki_space.navbar_items or wiki_settings.navbar), "post_login": [ {"label": _("My Account"), "url": "/me"}, {"label": _("Logout"), "url": "/?cmd=web_logout"}, diff --git a/wiki/wiki/doctype/wiki_space/wiki_space.js b/wiki/wiki/doctype/wiki_space/wiki_space.js index d8e93719..1f359c97 100644 --- a/wiki/wiki/doctype/wiki_space/wiki_space.js +++ b/wiki/wiki/doctype/wiki_space/wiki_space.js @@ -11,4 +11,50 @@ frappe.ui.form.on("Wiki Space", { }); }); }, + + onload_post_render: function (frm) { + frm.trigger("set_parent_label_options"); + }, + + set_parent_label_options: function (frm) { + frm.fields_dict.navbar_items.grid.update_docfield_property( + "parent_label", + "options", + frm.events.get_parent_options(frm, "navbar_items"), + ); + }, + + get_parent_options: function (frm, table_field) { + var items = frm.doc[table_field] || []; + var main_items = [""]; + for (var i in items) { + var d = items[i]; + if (!d.url && d.label) { + main_items.push(d.label); + } + } + return main_items.join("\n"); + }, +}); + +frappe.ui.form.on("Top Bar Item", { + navbar_delete(frm) { + frm.events.set_parent_label_options(frm); + }, + + navbar_add(frm, cdt, cdn) { + frm.events.set_parent_label_options(frm); + }, + + parent_label: function (frm, doctype, name) { + frm.events.set_parent_label_options(frm); + }, + + url: function (frm, doctype, name) { + frm.events.set_parent_label_options(frm); + }, + + label: function (frm, doctype, name) { + frm.events.set_parent_label_options(frm); + }, }); diff --git a/wiki/wiki/doctype/wiki_space/wiki_space.json b/wiki/wiki/doctype/wiki_space/wiki_space.json index b7e69127..ce2390ab 100644 --- a/wiki/wiki/doctype/wiki_space/wiki_space.json +++ b/wiki/wiki/doctype/wiki_space/wiki_space.json @@ -8,8 +8,12 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ + "general_tab", "route", - "wiki_sidebars" + "wiki_sidebars", + "navbar_tab", + "wiki_space_logo", + "navbar_items" ], "fields": [ { @@ -25,11 +29,32 @@ "fieldtype": "Table", "label": "Wiki Sidebars", "options": "Wiki Group Item" + }, + { + "fieldname": "general_tab", + "fieldtype": "Tab Break", + "label": "General" + }, + { + "fieldname": "navbar_tab", + "fieldtype": "Tab Break", + "label": "Navbar" + }, + { + "fieldname": "wiki_space_logo", + "fieldtype": "Attach Image", + "label": "Wiki Space Logo" + }, + { + "fieldname": "navbar_items", + "fieldtype": "Table", + "label": "Navbar Items", + "options": "Top Bar Item" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-04-11 17:49:56.612594", + "modified": "2024-04-05 13:36:07.517135", "modified_by": "Administrator", "module": "Wiki", "name": "Wiki Space",