[IMP] web: edit view in current action

Before this commit, editing views from debug menu opened a dialog
and the user needed to refresh the page to see the changes.
Now, the edit view is opened in a new action so when the user goes back
in the breadcrumb, the view is updated.

task id: 3081332

closes odoo/odoo#108524

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit is contained in:
Michael (mcm)
2022-12-23 12:11:03 +01:00
parent 285333a521
commit 296413a616
2 changed files with 26 additions and 13 deletions
@@ -8,6 +8,6 @@ export function editModelDebug(env, title, model, id) {
type: "ir.actions.act_window",
views: [[false, "form"]],
view_mode: "form",
target: "new",
target: "current",
});
}
@@ -367,18 +367,27 @@ QUnit.module("DebugMenu", (hooks) => {
serverData.views["pony,18,pivot"] = "<pivot></pivot>";
serverData.models["ir.ui.view"] = {
fields: {},
records: [{ id: 18 }],
records: [{ id: 18, name: "Edit view" }],
};
serverData.views["ir.ui.view,false,form"] = `<form><field name="id"/></form>`;
serverData.views["ir.ui.view,false,search"] = `<search></search>`;
const webClient = await createWebClient({ serverData, mockRPC });
await doAction(webClient, 1234);
await click(target.querySelector(".o_debug_manager button"));
await click(target.querySelector(".o_debug_manager .dropdown-item"));
assert.containsOnce(target, ".modal .o_form_view");
assert.containsN(target, ".breadcrumb-item", 2);
assert.strictEqual(
target.querySelector(".modal .o_form_view .o_field_widget[name=id] input").value,
"18"
target.querySelector(".breadcrumb-item.active").textContent,
"Edit view"
);
assert.strictEqual(target.querySelector(".o_field_widget[name=id] input").value, "18");
await click(target, ".breadcrumb .o_back_button");
assert.containsOnce(target, ".breadcrumb-item");
assert.strictEqual(
target.querySelector(".breadcrumb-item.active").textContent,
"Reporting Ponies"
);
});
@@ -403,20 +412,22 @@ QUnit.module("DebugMenu", (hooks) => {
serverData.actions[1].search_view_id = [293, "some_search_view"];
serverData.models["ir.ui.view"] = {
fields: {},
records: [{ id: 293 }],
records: [{ id: 293, name: "Edit view" }],
};
serverData.views["ir.ui.view,false,form"] = `<form><field name="id"/></form>`;
serverData.views["ir.ui.view,false,search"] = `<search></search>`;
const webClient = await createWebClient({ serverData, mockRPC });
await doAction(webClient, 1);
await click(target.querySelector(".o_debug_manager button"));
await click(target.querySelector(".o_debug_manager .dropdown-item"));
await legacyExtraNextTick();
assert.containsOnce(target, ".modal .o_form_view");
assert.containsN(target, ".breadcrumb-item", 2);
assert.strictEqual(
target.querySelector(".modal .o_form_view .o_field_widget[name=id] input").value,
"293"
target.querySelector(".breadcrumb-item.active").textContent,
"Edit view"
);
assert.strictEqual(target.querySelector(".o_field_widget[name=id] input").value, "293");
});
QUnit.test("edit search view on action without search_view_id", async (assert) => {
@@ -461,10 +472,11 @@ QUnit.module("DebugMenu", (hooks) => {
};
serverData.models["ir.ui.view"] = {
fields: {},
records: [{ id: 293 }],
records: [{ id: 293, name: "Edit view" }],
};
serverData.views = {};
serverData.views["ir.ui.view,false,form"] = `<form><field name="id"/></form>`;
serverData.views["ir.ui.view,false,search"] = `<search></search>`;
serverData.views["partner,false,toy"] = `<toy></toy>`;
serverData.views["partner,293,search"] = `<search></search>`;
@@ -475,11 +487,12 @@ QUnit.module("DebugMenu", (hooks) => {
await click(target.querySelector(".o_debug_manager button"));
await click(target.querySelector(".o_debug_manager .dropdown-item"));
await legacyExtraNextTick();
assert.containsOnce(target, ".modal .o_form_view");
assert.containsN(target, ".breadcrumb-item", 2);
assert.strictEqual(
target.querySelector(".modal .o_form_view .o_field_widget[name=id] input").value,
"293"
target.querySelector(".breadcrumb-item.active").textContent,
"Edit view"
);
assert.strictEqual(target.querySelector(".o_field_widget[name=id] input").value, "293");
});
QUnit.test(