diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 916f6378b4..6122a0e5df 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -100,7 +100,7 @@ runs: run: | # Install System Dependencies start_time=$(date +%s) - curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-11.8.5" + curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-11.8.5" --skip-maxscale sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - diff --git a/cypress/integration/awesome_bar.js b/cypress/integration/awesome_bar.js index 2b562eed49..67c09517e1 100644 --- a/cypress/integration/awesome_bar.js +++ b/cypress/integration/awesome_bar.js @@ -78,7 +78,7 @@ context("Awesome Bar", () => { cy.get("@awesome_bar").type("new web page"); cy.wait(150); // Wait a bit before hitting enter cy.get("@awesome_bar").type("{enter}"); - cy.get(".title-text:visible").should("have.text", "New Web Page"); + cy.get(".title-text-form:visible").should("have.text", "New Web Page"); }); it("calculates math expressions", () => { diff --git a/cypress/integration/control_attach.js b/cypress/integration/control_attach.js index 7a079edc6d..726a1ef036 100644 --- a/cypress/integration/control_attach.js +++ b/cypress/integration/control_attach.js @@ -224,7 +224,7 @@ context("Attach Control with Failed Document Save", () => { .should("have.attr", "href") .and("equal", "https://wallpaperplay.com/walls/full/8/2/b/72402.jpg"); - cy.get(".title-text").then(($value) => { + cy.get(".title-text-form").then(($value) => { docname = $value.text(); }); }); @@ -238,6 +238,18 @@ context("Attach Control with Failed Document Save", () => { .blur() .wait(500); cy.get('input[data-fieldname="attached_to_name"]').click().type(docname).blur(); + cy.findByRole("button", { name: "+ Add a Filter" }).click(); + cy.get(".fieldname-select-area .form-control") + .last() + .click() + .type("Attached To Doctype{enter}") + .blur() + .wait(500); + cy.get('input[data-fieldname="attached_to_doctype"]') + .last() + .click() + .type("Test Mandatory Attach Control") + .blur(); cy.get(".filter-popover .apply-filters").click({ force: true }); cy.get("header .level-right .list-count").should("contain.text", "1 of 1"); }); diff --git a/cypress/integration/control_data.js b/cypress/integration/control_data.js index b4f737a8c9..aff4c18b32 100644 --- a/cypress/integration/control_data.js +++ b/cypress/integration/control_data.js @@ -53,7 +53,7 @@ context("Data Control", () => { "contains", "/desk/test-data-control/new-test-data-control" ); - cy.get(".title-text").should("have.text", "New Test Data Control"); + cy.get(".title-text-form").should("have.text", "New Test Data Control"); cy.get('.frappe-control[data-fieldname="name1"]') .find("label") .should("have.class", "reqd"); diff --git a/cypress/integration/view_routing.js b/cypress/integration/view_routing.js index 5bb3c2d8db..794c2d6358 100644 --- a/cypress/integration/view_routing.js +++ b/cypress/integration/view_routing.js @@ -226,6 +226,6 @@ context("View", () => { it("Route to Website Workspace", () => { cy.visit("/desk/website"); - cy.get(".title-text").should("contain", "Website"); + cy.get(".workspace-title").should("contain", "Website"); }); }); diff --git a/frappe/hooks.py b/frappe/hooks.py index b1c7017864..64f2b4b498 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -38,9 +38,9 @@ app_include_css = [ "report.bundle.css", ] app_include_icons = [ + "/assets/frappe/icons/icons.svg", "/assets/frappe/icons/timeless/icons.svg", "/assets/frappe/icons/espresso/icons.svg", - "/assets/frappe/icons/icons.svg", ] doctype_js = { diff --git a/frappe/public/js/frappe/form/layout.js b/frappe/public/js/frappe/form/layout.js index 8f8b1da1fc..9a94868701 100644 --- a/frappe/public/js/frappe/form/layout.js +++ b/frappe/public/js/frappe/form/layout.js @@ -549,7 +549,9 @@ frappe.ui.form.Layout = class Layout { if (tabs_content.getBoundingClientRect().top < 100) { tabs_content.scrollIntoView(); setTimeout(() => { - $(".page-head").css("top", "-15px"); + if (frappe.boot.read_only || frappe.boot.user.impersonated_by) { + $(".page-head").css("top", "-15px"); + } $(".form-tabs-list").removeClass("form-tabs-sticky-down"); $(".form-tabs-list").addClass("form-tabs-sticky-up"); }, 3); diff --git a/frappe/public/js/frappe/list/base_list.js b/frappe/public/js/frappe/list/base_list.js index d96e56630e..67be647916 100644 --- a/frappe/public/js/frappe/list/base_list.js +++ b/frappe/public/js/frappe/list/base_list.js @@ -176,9 +176,9 @@ frappe.views.BaseList = class BaseList { } setup_page_head() { + this.set_breadcrumbs(); this.set_title(); this.set_menu_items(); - this.set_breadcrumbs(); } set_title() { diff --git a/frappe/public/js/frappe/ui/page.html b/frappe/public/js/frappe/ui/page.html index 7bc39be3d2..389345594b 100644 --- a/frappe/public/js/frappe/ui/page.html +++ b/frappe/public/js/frappe/ui/page.html @@ -1,28 +1,12 @@ -