Skip to content

feat(manager): warn when closing or leaving with unsaved changes (Resources, Elements, Files) - #78

Open
Ibochkarev wants to merge 2 commits into
3.xfrom
fix/16277-warn-unsaved-changes-on-close
Open

feat(manager): warn when closing or leaving with unsaved changes (Resources, Elements, Files)#78
Ibochkarev wants to merge 2 commits into
3.xfrom
fix/16277-warn-unsaved-changes-on-close

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

Предупреждения о несохранённых изменениях работают одинаково для Resources, Elements и Files, когда confirm_navigation вкл:

  1. Закрытие/refresh браузера: один beforeunload через MODx.bindUnsavedBeforeUnload(), проверка hasDirtyContentForm() (любая content-форма dirty; blur поля не требуется).
  2. Переключение вкладки левого сайдбара: подтверждение при dirty; после Yes one-shot bypass избегает циклов повторного промпта.
  3. Cancel (toolbar redirect): подтверждение при dirty-форме, затем MODx.loadPage ставит suppressUnsavedWarning, чтобы браузер не спрашивал снова.

Resource-only warnUnsavedChanges beforeunload handler убран.

Зачем нужно

Закрытие или уход с dirty-ресурсом было неконсистентно, а Elements/Files не предупреждали так же (modxcms#16277). Это теряет работу и вредит доступности.

Как проверить

  1. Включите Confirm Navigation with unsaved changes.
  2. Resource: измените поле без blur → refresh/close → предупреждение; переключение левой вкладки → Yes один раз (без цикла); Cancel → одно подтверждение затем уход; после save → без предупреждения.
  3. Chunk/Snippet/Template/Plugin/TV: то же для refresh, левой вкладки, Cancel.
  4. File create/edit: то же.
  5. Вкладка Trash по-прежнему открывает trash, когда уже активна.

Связанные

Refs modxcms#16277

Оригинал: modxcms#16848

…ources, Elements, Files)

- Use isDirty() for beforeunload in MODx.FormPanel onReady so any form change
  triggers the warning without requiring field blur; remove duplicate handler
  from resource panel.
- On left sidebar tab switch (Resources/Elements/Files), confirm when content
  has a dirty form; add hasDirtyContentForm() on layout.
- On Cancel button (toolbar redirect), confirm when form panel is dirty so
  Elements and Files match Resource behavior.

Resolves modxcms#16277
Bypass left-tab confirmation after Yes, bind a single beforeunload via
hasDirtyContentForm, and suppress the native prompt for MODx.loadPage
so Cancel no longer double-prompts (modxcms#16277).
@Ibochkarev Ibochkarev changed the title feat(manager): предупреждать при закрытии или уходе с несохранёнными изменениями (Resources, Elements, Files) feat(manager): warn when closing or leaving with unsaved changes (Resources, Elements, Files) Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant