From 26784c76171d5a354e682a9aaeae164c53cf0de3 Mon Sep 17 00:00:00 2001 From: labkey-matthewb Date: Tue, 7 Oct 2025 12:32:10 -0700 Subject: [PATCH] QueryForm(schema,table) don't need to pass schema/table if they are determined by the target action. --- api/src/org/labkey/api/query/QueryForm.java | 32 ++++++++++--------- .../org/labkey/core/user/UserController.java | 8 +++-- .../controllers/exp/ExperimentController.java | 20 +++++++++++- .../issue/actions/InsertIssueDefAction.java | 13 ++++++++ .../issue/query/IssuesListDefTable.java | 6 +--- 5 files changed, 56 insertions(+), 23 deletions(-) diff --git a/api/src/org/labkey/api/query/QueryForm.java b/api/src/org/labkey/api/query/QueryForm.java index f742b2f3de1..da889b70a51 100644 --- a/api/src/org/labkey/api/query/QueryForm.java +++ b/api/src/org/labkey/api/query/QueryForm.java @@ -110,26 +110,28 @@ public QueryForm() assert MemTracker.getInstance().put(this); } - protected QueryForm(String schemaName, String queryName) + public QueryForm(String schemaName, String queryName) { - _schemaName = new SchemaKey(null, schemaName); - _queryName = queryName; - - _bindSchemaName = false; - _bindQueryName = false; - - assert MemTracker.getInstance().put(this); + this(schemaName, queryName, null); } protected QueryForm(String schemaName, String queryName, String viewName) { - _schemaName = new SchemaKey(null, schemaName); - _queryName = queryName; - _viewName = viewName; - - _bindSchemaName = false; - _bindQueryName = false; - _bindViewName = false; + if (null != schemaName) + { + _schemaName = new SchemaKey(null, schemaName); + _bindSchemaName = false; + } + if (null != queryName) + { + _queryName = queryName; + _bindQueryName = false; + } + if (null != viewName) + { + _viewName = viewName; + _bindViewName = false; + } assert MemTracker.getInstance().put(this); } diff --git a/core/src/org/labkey/core/user/UserController.java b/core/src/org/labkey/core/user/UserController.java index 3eccfbc14a0..25632fad932 100644 --- a/core/src/org/labkey/core/user/UserController.java +++ b/core/src/org/labkey/core/user/UserController.java @@ -301,8 +301,6 @@ private void setDataRegionButtons(DataRegion rgn, boolean isOwnRecord, boolean c ButtonBar detailsButtonBar = new ButtonBar(); ActionURL editURL = new ActionURL(ShowUpdateAction.class, getContainer()); - editURL.addParameter(QueryParam.schemaName.toString(), "core"); - editURL.addParameter(QueryView.DATAREGIONNAME_DEFAULT + "." + QueryParam.queryName, CoreQuerySchema.SITE_USERS_TABLE_NAME); editURL.addParameter("userId", NumberUtils.toInt(currentURL.getParameter("userId"))); editURL.addReturnUrl(currentURL); @@ -1254,6 +1252,12 @@ else if ("null".equals(row.get(UserAvatarDisplayColumnFactory.FIELD_KEY))) public static class UserQueryForm extends QueryForm { + public UserQueryForm() + { + // set schema/query so that the wrapped QuerySettings won't pull it off the URL + super("core", CoreQuerySchema.SITE_USERS_TABLE_NAME); + } + private int _userId; public int getUserId() diff --git a/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java b/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java index 49d87a94d84..50948cb6841 100644 --- a/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java +++ b/experiment/src/org/labkey/experiment/controllers/exp/ExperimentController.java @@ -7273,7 +7273,6 @@ public ActionURL getUpdateMaterialQueryRowAction(Container c, TableInfo table) public ActionURL getInsertMaterialQueryRowAction(Container c, TableInfo table) { ActionURL url = new ActionURL(InsertMaterialQueryRowAction.class, c); - url.addParameter("schemaName", "samples"); url.addParameter(QueryView.DATAREGIONNAME_DEFAULT + "." + QueryParam.queryName, table.getName()); return url; @@ -7490,6 +7489,15 @@ public Object execute(Object o, BindException errors) throws Exception @RequiresPermission(UpdatePermission.class) public static class UpdateMaterialQueryRowAction extends UserSchemaAction { + @Override + protected QueryForm createQueryForm(ViewContext context) + { + QueryForm form = new QueryForm("samples", null); + form.setViewContext(getViewContext()); + form.bindParameters(getViewContext().getBindPropertyValues()); + return form; + } + @Override public BindException bindParameters(PropertyValues m) throws Exception { @@ -7569,6 +7577,16 @@ public void addNavTrail(NavTree root) @RequiresPermission(InsertPermission.class) public static class InsertMaterialQueryRowAction extends UserSchemaAction { + @Override + protected QueryForm createQueryForm(ViewContext context) + { + QueryForm form = new QueryForm("samples", null); + form.setViewContext(getViewContext()); + form.bindParameters(getViewContext().getBindPropertyValues()); + + return form; + } + @Override public ModelAndView getView(QueryUpdateForm tableForm, boolean reshow, BindException errors) { diff --git a/issues/src/org/labkey/issue/actions/InsertIssueDefAction.java b/issues/src/org/labkey/issue/actions/InsertIssueDefAction.java index 2068ec0b796..5f708306588 100644 --- a/issues/src/org/labkey/issue/actions/InsertIssueDefAction.java +++ b/issues/src/org/labkey/issue/actions/InsertIssueDefAction.java @@ -19,6 +19,8 @@ import org.labkey.api.data.ActionButton; import org.labkey.api.data.ButtonBar; import org.labkey.api.exp.property.Domain; +import org.labkey.api.issues.IssuesSchema; +import org.labkey.api.query.QueryForm; import org.labkey.api.query.QueryUpdateForm; import org.labkey.api.query.UserSchemaAction; import org.labkey.api.security.RequiresPermission; @@ -28,10 +30,12 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.view.InsertView; import org.labkey.api.view.NavTree; +import org.labkey.api.view.ViewContext; import org.labkey.api.view.template.ClientDependency; import org.labkey.issue.IssuesController; import org.labkey.issue.model.IssueListDef; import org.labkey.issue.model.IssueManager; +import org.labkey.issue.query.IssuesQuerySchema; import org.labkey.issue.view.IssuesListView; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; @@ -48,6 +52,15 @@ public class InsertIssueDefAction extends UserSchemaAction { private List> _results; + @Override + protected QueryForm createQueryForm(ViewContext context) + { + QueryForm form = new QueryForm(IssuesSchema.getInstance().getSchemaName(), IssuesQuerySchema.TableType.IssueListDef.name()); + form.setViewContext(getViewContext()); + form.bindParameters(getViewContext().getBindPropertyValues()); + return form; + } + @Override public ModelAndView getView(QueryUpdateForm tableForm, boolean reshow, BindException errors) { diff --git a/issues/src/org/labkey/issue/query/IssuesListDefTable.java b/issues/src/org/labkey/issue/query/IssuesListDefTable.java index 06f7621ddcd..8f2ee74d5e9 100644 --- a/issues/src/org/labkey/issue/query/IssuesListDefTable.java +++ b/issues/src/org/labkey/issue/query/IssuesListDefTable.java @@ -40,7 +40,6 @@ import org.labkey.api.query.FieldKey; import org.labkey.api.query.FilteredTable; import org.labkey.api.query.InvalidKeyException; -import org.labkey.api.query.QueryParam; import org.labkey.api.query.QueryUpdateService; import org.labkey.api.query.ValidationException; import org.labkey.api.security.User; @@ -83,10 +82,7 @@ public class IssuesListDefTable extends FilteredTable public IssuesListDefTable(IssuesQuerySchema schema, ContainerFilter cf) { super(IssuesSchema.getInstance().getTableInfoIssueListDef(), schema, cf); - - ActionURL url = new ActionURL(InsertIssueDefAction.class, getContainer()). - addParameter(QueryParam.schemaName, IssuesSchema.getInstance().getSchemaName()). - addParameter(QueryParam.queryName, IssuesQuerySchema.TableType.IssueListDef.name()); + ActionURL url = new ActionURL(InsertIssueDefAction.class, getContainer()); setInsertURL(new DetailsURL(url)); addAllColumns(); }