[MIGX] Исправляем "сжатые" таблицы
Всем привет, есть такая давняя проблема, когда редактируешь ТВ поля MIGX в ресурсах, они изначально «сжаты» влево… Я решил эту проблему, для этого нужен небольшой плагин.

Создаём плагин на событие OnManagerPageBeforeRender, называем например fitMIGXtables
Код:
P.P.S. Плагин будет встроен в мой компонент EclipseUI.

Создаём плагин на событие OnManagerPageBeforeRender, называем например fitMIGXtables
Код:
<?php
/**
* Automatically fits MIGX grid columns on resource create/update pages
*
* @event OnManagerPageBeforeRender
*/
if ($modx->event->name !== 'OnManagerPageBeforeRender') {
return;
}
if (!$modx->controller instanceof modManagerController) {
return;
}
$action = $modx->controller->config['controller'] ?? '';
$isResourcePage = ($action === 'resource/update' || $action === 'resource/create');
if (!$isResourcePage) {
return;
}
$shouldAddScript = false;
$resource = $modx->controller->resource ?? null;
if ($resource instanceof modResource && $resource->get('template')) {
$tvCount = $modx->getCount('modTemplateVarTemplate', [
'templateid' => $resource->get('template')
]);
$shouldAddScript = ($tvCount > 0);
} elseif (is_null($resource)) {
$shouldAddScript = true;
}
if (!$shouldAddScript) {
return;
}
$modx->controller->addHtml(<<<HTML
<script>
Ext.onReady(function() {
function isMIGXGrid(component) {
return component.xtype && component.xtype.startsWith('modx-grid-multitvgrid-');
}
function fitMIGXGridColumns(grid) {
const view = grid.getView();
if (view) {
view.fitColumns();
}
}
function fitAllMIGXGrids() {
Ext.ComponentMgr.all.each(function(component) {
if (isMIGXGrid(component)) {
fitMIGXGridColumns(component);
}
});
}
// Run initially and then periodically
fitAllMIGXGrids();
setInterval(fitAllMIGXGrids, 500);
});
</script>
HTML
);
P.S. Плагин добавляет JS только на страницах редактирования ресурсов, где есть хотя бы 1 ТВ поле.P.P.S. Плагин будет встроен в мой компонент EclipseUI.
Комментарии: 10
О, хорошая тема! С меня плюс.
Правда не понял почему?
Правда не понял почему?
else {
$addScript = true;
}
Проверка, есть ли ТВ поля, выше по коду, если нет, останется false, иначе else… true
зачем добавлять скрипт, если нет tv полей?..
Он наоборот, не добавляется
Была задачка на сайте клиента решить этот вопрос, но его отложили на потом и как-то забылось.
Вспомнил, прямо сейчас поставил и красота. Спасибо!
Вспомнил, прямо сейчас поставил и красота. Спасибо!
Весьма полезный плагин, благодарю
Нужен пулРеквест 😉😉
Плагин исправляет сжатые таблицы MIGX, но подключается при наличии любого TV у ресурса, может быть стоит добавить проверку на тип TV?
Полезно, жду в Eclipse)
Отлично! Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.