Rebuild the bulk editor on SearchEngine
Summary:
Depends on D18805. Ref T13025. Fixes T10268.
Instead of using a list of IDs for the bulk editor, power it with SearchEngine queries. This gives us the full power of SearchEngine and lets us use a query key instead of a list of 20,000 IDs to avoid issues with URL lengths.
Also, split it into a base `BulkEngine` and per-application subclasses. This moves us toward T10005 and universal support for bulk operations.
Also:
- Renames most of "batch" to "bulk": we're curently inconsitent about this, I like "bulk" better since I think it's more clear if you don't regularly interact with `.bat` files, and newer stuff mostly uses "bulk".
- When objects in the result set can't be edited because you don't have permission, show the status more clearly.
This probably breaks some stuff a bit since I refactored so heavily, but it seems mostly OK from poking around. I'll clean up anything I missed in followups to deal with remaining items on T13025.
Test Plan:
{F5302300}
- Bulk edited from Maniphest.
- Bulk edited from a workboard (no more giant `?ids=....` in the URL).
- Hit most of the error conditions, I think?
- Clicked the "Cancel" button.
Reviewers: amckinley
Reviewed By: amckinley
Maniphest Tasks: T13025, T10268
Differential Revision: https://secure.phabricator.com/D18806
This commit is contained in:
@@ -230,14 +230,23 @@ final class PhabricatorProjectBoardViewController
|
||||
->addCancelButton($board_uri);
|
||||
}
|
||||
|
||||
$batch_ids = mpull($batch_tasks, 'getID');
|
||||
$batch_ids = implode(',', $batch_ids);
|
||||
// Create a saved query to hold the working set. This allows us to get
|
||||
// around URI length limitations with a long "?ids=..." query string.
|
||||
// For details, see T10268.
|
||||
$search_engine = id(new ManiphestTaskSearchEngine())
|
||||
->setViewer($viewer);
|
||||
|
||||
$saved_query = $search_engine->newSavedQuery();
|
||||
$saved_query->setParameter('ids', mpull($batch_tasks, 'getID'));
|
||||
$search_engine->saveQuery($saved_query);
|
||||
|
||||
$query_key = $saved_query->getQueryKey();
|
||||
|
||||
$bulk_uri = new PhutilURI("/maniphest/bulk/query/{$query_key}/");
|
||||
$bulk_uri->setQueryParam('board', $this->id);
|
||||
|
||||
$batch_uri = new PhutilURI('/maniphest/batch/');
|
||||
$batch_uri->setQueryParam('board', $this->id);
|
||||
$batch_uri->setQueryParam('batch', $batch_ids);
|
||||
return id(new AphrontRedirectResponse())
|
||||
->setURI($batch_uri);
|
||||
->setURI($bulk_uri);
|
||||
}
|
||||
|
||||
$move_id = $request->getStr('move');
|
||||
@@ -1048,7 +1057,7 @@ final class PhabricatorProjectBoardViewController
|
||||
|
||||
$column_items[] = id(new PhabricatorActionView())
|
||||
->setIcon('fa-list-ul')
|
||||
->setName(pht('Batch Edit Tasks...'))
|
||||
->setName(pht('Bulk Edit Tasks...'))
|
||||
->setHref($batch_edit_uri)
|
||||
->setDisabled(!$can_batch_edit);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user