diff --git a/frappe/desk/page/desktop/desktop.css b/frappe/desk/page/desktop/desktop.css index 5437905d59..be29818896 100644 --- a/frappe/desk/page/desktop/desktop.css +++ b/frappe/desk/page/desktop/desktop.css @@ -41,9 +41,9 @@ .desktop-navbar-modal-search{ background-color: var(--control-bg); - border-radius: var(--border-radius-sm); - padding: 6px 10px; - width: 100%; + border-radius: var(--border-radius-sm); + padding: 6px 10px; + width: 100%; } #brand-logo{ width: auto; diff --git a/frappe/desk/page/desktop/desktop.html b/frappe/desk/page/desktop/desktop.html index 3be439ba07..8606cf3bfd 100644 --- a/frappe/desk/page/desktop/desktop.html +++ b/frappe/desk/page/desktop/desktop.html @@ -16,7 +16,7 @@ > - Search + {{ _("Search") }} {{ "⌘ K" if is_mac else "Ctrl K" }} diff --git a/frappe/desk/search.py b/frappe/desk/search.py index f928aadf7c..dc23bf5778 100644 --- a/frappe/desk/search.py +++ b/frappe/desk/search.py @@ -44,7 +44,6 @@ def search_link( reference_doctype: str | None = None, ignore_user_permissions: bool = False, *, - form_doctype: str | None = None, link_fieldname: str | None = None, ) -> list[LinkSearchResults]: results = search_widget( @@ -56,7 +55,6 @@ def search_link( filters=filters, reference_doctype=reference_doctype, ignore_user_permissions=ignore_user_permissions, - form_doctype=form_doctype, link_fieldname=link_fieldname, ) return build_for_autosuggest(results, doctype=doctype) @@ -77,18 +75,15 @@ def search_widget( reference_doctype: str | None = None, ignore_user_permissions: bool = False, *, - form_doctype: str | None = None, link_fieldname: str | None = None, ): if ignore_user_permissions: - if form_doctype and link_fieldname: - validate_ignore_user_permissions(form_doctype, link_fieldname, doctype) + if reference_doctype and link_fieldname: + validate_ignore_user_permissions(reference_doctype, link_fieldname, doctype) else: frappe.logger().error( - "setting ignore_user_permissions=True in search_link requires " - "form_doctype and link_fieldname to be set. " - f"Got form_doctype={form_doctype}, link_fieldname={link_fieldname}. " - "Ignoring flag." + "setting ignore_user_permissions=True requires reference_doctype and link_fieldname to be set. " + f"Got reference_doctype={reference_doctype}, link_fieldname={link_fieldname}. Ignoring flag." ) ignore_user_permissions = False @@ -122,7 +117,6 @@ def search_widget( as_dict=as_dict, reference_doctype=reference_doctype, ignore_user_permissions=ignore_user_permissions, - form_doctype=form_doctype, link_fieldname=link_fieldname, ) except (frappe.PermissionError, frappe.AppNotInstalledError, ImportError): diff --git a/frappe/public/js/frappe/form/controls/link.js b/frappe/public/js/frappe/form/controls/link.js index abb5e6ae21..b04a535b1e 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -359,7 +359,6 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat ignore_user_permissions: this.df.ignore_user_permissions, reference_doctype: this.get_reference_doctype() || "", page_length: cint(frappe.boot.sysdefaults?.link_field_results_limit) || 10, - form_doctype: this.doctype, link_fieldname: this.df.fieldname, }; diff --git a/frappe/public/js/frappe/ui/menu.js b/frappe/public/js/frappe/ui/menu.js index 93d846feaf..330095832f 100644 --- a/frappe/public/js/frappe/ui/menu.js +++ b/frappe/public/js/frappe/ui/menu.js @@ -14,7 +14,14 @@ frappe.ui.menu = class ContextMenu { this.template.empty(); this.menu_items.forEach((f) => { - this.add_menu_item(f); + f.condition = + f.condition || + function () { + return true; + }; + if (f.condition()) { + this.add_menu_item(f); + } }); // if (!$.contains(document.body, this.template[0])) { diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar.js b/frappe/public/js/frappe/ui/sidebar/sidebar.js index cced37fd21..47f63d81a6 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar.js +++ b/frappe/public/js/frappe/ui/sidebar/sidebar.js @@ -217,6 +217,7 @@ frappe.ui.Sidebar = class Sidebar { if (items && items.length > 0) { items.forEach((w) => { if (!w.display_depends_on || frappe.utils.eval(w.display_depends_on)) { + w.label = __(w.label); this.add_item(this.$items_container, w); } }); @@ -234,8 +235,9 @@ frappe.ui.Sidebar = class Sidebar { } add_standard_items(items) { if (this.standard_items_setup) return; - this.standard_items = [ - { + this.standard_items = []; + if (!frappe.is_mobile()) { + this.standard_items.push({ label: "Search", icon: "search", type: "Button", @@ -244,7 +246,9 @@ frappe.ui.Sidebar = class Sidebar { keyboard_shortcut: "CtrlK", }, class: "navbar-search-bar hidden", - }, + }); + } + this.standard_items.push( { label: "Notification", icon: "bell", @@ -256,8 +260,8 @@ frappe.ui.Sidebar = class Sidebar { this.wrapper.removeClass("expanded"); } }, - }, - ]; + } + ); this.standard_items.forEach((w) => { this.add_item(this.$standard_items_sections, w); }); diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar_header.js b/frappe/public/js/frappe/ui/sidebar/sidebar_header.js index ae19db7ef6..84f0b5d3ed 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar_header.js +++ b/frappe/public/js/frappe/ui/sidebar/sidebar_header.js @@ -5,13 +5,16 @@ frappe.ui.SidebarHeader = class SidebarHeader { this.drop_down_expanded = false; this.title = this.sidebar.sidebar_title; const me = this; - this.fetch; + this.sibling_workspaces = this.fetch_sibling_workspaces(); this.dropdown_items = [ { name: "workspaces", label: "Workspaces", icon: "wallpaper", - items: this.fetch_sibling_workspaces(), + condition: function () { + return me.sibling_workspaces.length > 0; + }, + items: this.sibling_workspaces, }, { name: "desktop", @@ -46,18 +49,23 @@ frappe.ui.SidebarHeader = class SidebarHeader { } fetch_sibling_workspaces() { let sibling_workspaces = []; - let workspaces = frappe.current_app.workspaces; - workspaces.splice(workspaces.indexOf(this.title), 1); - workspaces.forEach((w) => { - let item = { - name: w.toLowerCase(), - label: w, - icon: "wallpaper", - url: frappe.utils.generate_route({ type: "Workspace", route: w.toLowerCase() }), - }; - sibling_workspaces.push(item); - }); - return sibling_workspaces; + if (frappe.current_app) { + let workspaces = [...frappe.current_app.workspaces]; + workspaces.splice(workspaces.indexOf(this.title), 1); + workspaces.forEach((w) => { + let item = { + name: w.toLowerCase(), + label: w, + icon: "wallpaper", + url: frappe.utils.generate_route({ + type: "Workspace", + route: w.toLowerCase(), + }), + }; + sibling_workspaces.push(item); + }); + return sibling_workspaces; + } } make() { $(".sidebar-header").remove(); diff --git a/frappe/public/js/frappe/ui/sidebar/sidebar_item.html b/frappe/public/js/frappe/ui/sidebar/sidebar_item.html index 75c01cb9ce..2457ab0f76 100644 --- a/frappe/public/js/frappe/ui/sidebar/sidebar_item.html +++ b/frappe/public/js/frappe/ui/sidebar/sidebar_item.html @@ -21,8 +21,10 @@ {% } else { %} {% let icon = item.icon %} diff --git a/frappe/public/js/frappe/ui/toolbar/navbar.html b/frappe/public/js/frappe/ui/toolbar/navbar.html index 5e6e13c0d2..e5243335ed 100644 --- a/frappe/public/js/frappe/ui/toolbar/navbar.html +++ b/frappe/public/js/frappe/ui/toolbar/navbar.html @@ -10,6 +10,21 @@