Skip to content

fix(mixedimage): TV preview after reload in MODX 3 (#35) - #45

Open
Ibochkarev wants to merge 1 commit into
webinmd:masterfrom
Ibochkarev:fix/issue-35-modx3-preview
Open

fix(mixedimage): TV preview after reload in MODX 3 (#35)#45
Ibochkarev wants to merge 1 commit into
webinmd:masterfrom
Ibochkarev:fix/issue-35-modx3-preview

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 9, 2026

Copy link
Copy Markdown

После сохранения ресурса и перезагрузки страницы в MODX 3 превью mixedImage пропадало, хотя путь к файлу в TV оставался. PR закрывает #35.

Зачем

В MODX 3 boolean-опции TV (showPreview и др.) хранятся как 1/0 через modx-combo-boolean. Старый код сравнивал их только с lexicon('yes'). В tpl блок превью не попадал в DOM, в JS showPreview становился false.

Даже при корректном SSR-превью JS не вызывал updatePreview при загрузке страницы. Превью обновлялось только после upload/crop/browser select.

В tpl phpThumb брал {$_config.connectors_url} и {$tv->source}. В MODX 3 manager Smarty эти значения часто пустые или неверные.

Что сделано

PHP — mixedimage.class.php

  • isYesOption() / toJsBoolean() — нормализация boolean для MODX 2 и 3 (1, yes, true, lexicon).
  • Placeholder connectors_url из $modx->getOption('connectors_url') вместо Smarty $_config.
  • mime_content_type() только если файл существует (без warning на пустом value).
  • PSR-12: табы заменены на пробелы (phpcbf).

Tpl — mixedimage.tpl

  • phpThumb: {$connectors_url}, source={$ms_id}, src с escape:'url'.
  • JS config: source: {$ms_id} вместо строки из $tv->source.

JS — mixedimage.js

  • Хелперы: isPreviewEnabled, getFileExtensionInfo, buildPreviewContent, updatePreviewElement.
  • Panel вызывает превью на afterrender с текущим value.
  • Panel и trigger делегируют в один хелпер вместо двух копий updatePreview.

UX

Поведение upload/crop/clear не менялось. Меняется только восстановление превью после reload и корректность SSR-картинки.

Scope

Ветка содержит только изменения для #35. Не затрагивает crop (#31) и remove/replace (#17).

На ревью

  • Reload ресурса с сохранённым изображением в MODX 3.
  • TV с showPreview = Да и default 1 из combo-boolean.
  • Видео-превью (mp4/ogg) после reload.
  • MODX 2.8: boolean через lexicon('yes') по-прежнему работает.

Fixes #35

Normalize boolean TV options for modx-combo-boolean values, init preview
on panel afterrender, and fix phpThumb URL/source placeholders in tpl.

Fixes webinmd#35
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.

Preview in modx3 after reload page

1 participant