Skip to content
  1. Extras
  2. msBulkEditor
  3. Interface
  4. Preview and apply

Preview and apply

Main flow: preview, then apply. You check the diff before writing to the database.

Preview block below the table


Steps

  1. Run operation / quick actions / preset → parameter dialog.
  2. Previewproducts/preview request.
  3. A Preview block appears below the table.
  4. Optionally exclude rows (see below).
  5. Applyproducts/apply with the same definition + excludeProductIds.
  6. Progress — poll products/progress until complete.

Preview block

Summary

MetricValue
Will changeRows with status changed
Unchangedunchanged
Skippedskipped (no effect or scope rule)

Detail row limit: msbulkeditor_preview_detail_limit (default 100).

PreviewTable

Columns: product ID, field, before, after, status.

Statuses: changed, unchanged, skipped, error, after apply — applied, rolled_back.


Excluding rows from apply

After preview, changed rows can be unchecked — the ID goes into excludeProductIds on apply.

  • Hint above the table explains exclusion.
  • Summary recalculates “Will change” excluding unchecked rows.
  • Cancel — clears preview and definition, hides the block.

Rows with skipped, error, or unchanged (no value change) show a disabled checkbox with a tooltip. Only rows that will actually change can be excluded from apply.

Exclusion checkboxes in preview


Buttons

ButtonWhen active
PreviewIn operation dialog, form valid
ApplyAfter preview, if “Will change” > 0
Cancel (preview)When preview block is visible

Apply is disabled when msbulkeditor_apply_no_changes (0 changes).

Form validation errors (empty required field, invalid date, etc.) show in the dialog before the preview request — keys msbulkeditor_validation_*.

Over the expert limit the API returns msbulkeditor_expert_limit_exceeded — narrow filters on the grid.


Chunked apply

Apply runs in chunks (msbulkeditor_chunk_size, default 50 products). Progress: “Processed X of Y”.

Each chunk fits the PHP time limit; the full catalog is processed as a series of chunks.

After completion, grid rows refresh without a full page reload.


Apply progress

ProgressPanel appears below the grid:

Apply progress panel

  • operation title;
  • status (running, completed, failed, cancelled);
  • processed / total counter and progress bar.

The SPA polls products/progress until a terminal status. While apply runs, a new Apply is blocked (OperationQueue — one active bulk operation per site). ProgressPanel has no “Cancel apply” button.

StatusAction
completedCheck grid and History
failedOpen History — some items may be applied; partial rollback available
cancelledTerminal API status (no mid-apply cancel in UI); then History

Details: history.


TV operation

For type TV (fieldType: tv), the form adapts to field type from the catalog (fields/catalog, tvType, tvOptions):

MODX TV typeDialog widget
list, dropdown, option, …Select with options from elements
checkboxToggle (values 1 / empty)
image, filePath + Browse (MODX media browser)
others, dynamic @SELECTText field (fallback)

TV name is chosen from the template catalog when loaded.


Idempotency

Each apply sends an idempotencyKey. A repeat request with the same key does not create a duplicate operation (double-click protection).


Other operation types in the dialog

Full fieldType list: Features, flows.


See also