Skip to content

[issue_tracker] Add batch editing for issue fields#10879

Open
Montekkundan wants to merge 4 commits into
aces:mainfrom
Montekkundan:montek/10773-issue-tracker-batch-edit
Open

[issue_tracker] Add batch editing for issue fields#10879
Montekkundan wants to merge 4 commits into
aces:mainfrom
Montekkundan:montek/10773-issue-tracker-batch-edit

Conversation

@Montekkundan

@Montekkundan Montekkundan commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Brief summary of changes

  • Adds multi-select controls to the Issue Tracker Batch Edit tab.
  • Adds batch editing for issue status, priority, category, and assignee.
  • Adds a dedicated BatchEdit endpoint for retrieval, validation, and atomic updates.
  • Restricts BatchEdit GET and POST requests to users with the all-sites issue permission.
  • Preserves issue history, close permissions, watchers, and notifications during batch updates.
  • Adds translation template entries, integration coverage, and manual testing instructions.

Testing instructions

  • Open http://localhost:8080/issue_tracker/ as a user with the Issue Tracker: View/Edit/Comment Issues - All Sites permission.
  • Open the Batch Edit tab and confirm issues, assignees, watchers, and comments load.
  • Filter the issues and confirm Select all filtered issues selects only matching issues.
  • Select issues across multiple pages and confirm the selection is preserved.
  • Change status, priority, category, and assignee, then apply the changes.
  • Confirm fields set to No change retain their original values.
  • Set category to Uncategorized and assignee to Unassigned and confirm both values are cleared.
  • Open an updated issue and confirm the changed fields and Last Updated By appear in its history.
  • Confirm newly assigned users are added as watchers.
  • Confirm Closed and Rejected respect the existing Issue Tracker close permissions.
  • Confirm a user with only the own-sites issue permission cannot access the BatchEdit endpoint.

Link(s) to related issue(s)

@Montekkundan Montekkundan self-assigned this Jul 12, 2026
@github-actions github-actions Bot added Language: PHP PR or issue that update PHP code Language: Javascript PR or issue that update Javascript code Module: issue_tracker PR or issue related to issue tracker module labels Jul 12, 2026
@Montekkundan
Montekkundan force-pushed the montek/10773-issue-tracker-batch-edit branch from 8b50768 to 3e2ef1d Compare July 13, 2026 02:27
@Montekkundan
Montekkundan force-pushed the montek/10773-issue-tracker-batch-edit branch from 3e2ef1d to 9545df2 Compare July 13, 2026 03:25
@skarya22
skarya22 requested a review from regisoc July 13, 2026 15:09
@regisoc

regisoc commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

I like what I am seeing in this PR description!
It will take me a bit of time to review it.
I will attribute some time before the end of this week. Hang on.

@regisoc regisoc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this PR!
This will help all projects manage issues more efficiently.
Because there is a lot to unpack, I guess there will be several rounds of review/changes to be a bit more easy to digest.
I will start with the UI first. Code review will be done after that.

Global/Summary

HBCD project heavily uses the issue tracker.
The following comments are also based on the feedback we have on HBCD.

Apart from the few minor bugs/changes, I am mostly interested in the ergonomics and ease of use:

  • With the current view, if users wants to only select few issues manually by clicking their card checkbox, they then have to select then go back up to act. We need to have something to go back up fast. I would put a static "Go back up/up arrow icon" somewhere, either to change the filters or restart a selection.
  • There are multiple operations in the static "Batch Changes" panel. Users will need to scroll down and up multiple times to check info before applying changes. From a user perspective, I do not want to go back up when I am certain of the changes I want to apply.
  • I would recommend a different organization/approach (see "UI Proposal").

UI Proposal

Split the "Batch Change" into 2 distinct blocks:

  1. First block: keep the current "Batch Changes" panel, remove the actions buttons and delegate them to the second block. Strictly limit this to filter selection match + changes to be apply.
Image
  1. Second block: akin to the DQT's "Next Steps" floating panel that only contains actions and redirects, add a new small panel with only actions inside:
Image

This block:

  • must always be visible and accessible.
  • adds the "go back up" feature.

@Montekkundan @skarya22 Let me know what you think about this.

Details on current solution

Going back to the current solution.

Batch changes panel

Image
  1. Both are not the same height. Probably due to the reset button in Filters. If so, disregard this comment.
  2. Align checkbox with label.
  3. Clear selection. It makes sense here, but I do not like the global organization of the panel. I think a single separator and clear header can help in that.
  4. Might be better to deactivate all changes if nothing is selected.

I like the select/apply change separation, but I think too much is happening in a single place (i.e. selecting related to another panel, selecting changes to apply, then applying changes action). And, there are movements: users might and will need to go up and down multiple times to check values before confirming.

I think we should split the responsibility.

Selected cards

Image
  1. Header should be the same first line to avoid repeating the issue ID. I would basically just add a checkbox before the issue ID to keep the card light.
  2. Remove the footer band. If the card is not highlighted enough, maybe change the header color with the same grey-ish-blue?

Interaction between Filters/Batch Change panels

Image
  • Bug: count of selected issues stays if the filters are reset.
  • Clicking the "Select all filtered issues" enters a mode where the change in the filtered issues is automatically reflected on the batch change logic. That is nice, but the "reset" button must also be included in this logic.

Error/Validation modal

Image
  • Plural issues in case multiple one are updated.
  • I applied a status change with success, but no data were modified immediately. I had to refresh the page so the changes take effect.

@Montekkundan
Montekkundan requested a review from regisoc July 15, 2026 17:18
</Tabs>
</Panel>
<br/>
<Panel

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to make this panel only appear after an issue is selected? It's a bit confusing right now when you open the page and you see so many options, and the Batch changes panel doesnt let you select anything.

Can we then also move the "Select all filtered issues" checkbox to the top of the Filters panel, or otherwise, in the Batch actions floating panel?

After the Batch changes is hidden at first, can you make the arrow (for going to the top of the page) say "Select changes to apply", which would take you to the Batch changes that just appeared?

Let me know what you think about this! I think it might free up some screen real estate.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to make this panel only appear after an issue is selected? It's a bit confusing right now when you open the page and you see so many options, and the Batch changes panel doesnt let you select anything.

Agreed, better to let the view lighter if nothing is selected.

Can we then also move the "Select all filtered issues" checkbox to the top of the Filters panel, or otherwise, in the Batch actions floating panel?

Hmm, this one I am not sure. Thinking out here.
Not a bad idea, although not in the "batch action" panel, as it will be hidden at first.
What are each panel responsibility?

  • "Filter" panel: pretty clean as-is, just filtering issues.
  • "Batch Changes" panel: all select and changes to apply. Makes sense as these 2 are related to the "batch update data" feature. If we add the "all filtered issues" selection checkbox in "filter" panel, we are just shifting the feature/responsibility to this panel. Meaning the "Filter" panel is now filter and select features. It would make sense if we wanted to automatically select (have the checkbox checked by default) which will display the "batch action", and we do not want that. We kept the "Filter" panel a the top because users not having the "edit" permission can still filter, but won't be able to (batch) edit.
    Summary: I would keep it in "Batch Changes" panel.

After the Batch changes is hidden at first, can you make the arrow (for going to the top of the page) say "Select changes to apply", which would take you to the Batch changes that just appeared?

Why not. It will be clearer. I did not think about the "go up" button that will be hidden. But that is actually a good way of gently nudging people to use the filter panel.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh sorry, I was thinking we could have the Batch changes hidden, not the Batch actions
image

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be sure, you mean Hidden = Collapsed by default, right?
In that case, yes, and well, we can even not display both "batch changes" and "batch actions" for users without "edit" permission.

defaultValue_one: '{{count}} issue updated successfully',
defaultValue_other: '{{count}} issues updated successfully',
}),
});

@skarya22 skarya22 Jul 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you update an issue where nothing would change, I wonder if apply changes should be grayed out instead of showing updated 0 issues?

Image

Or maybe could it could say no changes made?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh nice one. Doesn't swal have a "nothing changed" icon? Maybe just triggering the same swal with different parameter will do.

</select>
</label>
<label>
{t('Priority', {ns: 'issue_tracker'})}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add Site too? Then it would be consistent with the individual issues

Image

@skarya22 skarya22 added State: Needs rebase PR that needs to be rebased to proceed (conflicts, wrong branch...) State: Needs work PR awaiting additional work by the author to proceed and removed State: Needs rebase PR that needs to be rebased to proceed (conflicts, wrong branch...) labels Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Language: Javascript PR or issue that update Javascript code Language: PHP PR or issue that update PHP code Module: issue_tracker PR or issue related to issue tracker module State: Needs work PR awaiting additional work by the author to proceed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[issue_tracker] extract the batch-edit from the Edit class [issue_tracker] Batch Edit Mode batch edit status/priority/category

3 participants