gloobus

gloobus

Был в сети 12 декабря 2024, 17:02
Заказы не принимаю
В общем пришел пока к такому варианту:

[
  {
    "fields": [
      {
        "field": "images",
        "caption": "Галерея изображений",
        "description": "Добавьте несколько изображений",
        "inputTV": "migx_projectImages"
      },  
      {
        "field": "images_list",
        "caption": "Список изображений в разметке колонок",
        "inputTVtype": "hidden"
      }
    ]
  }
]

[{
  "header": "Изображения",
  "dataIndex": "images_list",
  "sortable": "false",
  "renderer": "this.renderChunk",
  "renderchunktpl":"[[getImageList? &value=`[[+images]]` &tpl=`tpl.ImagesList` &where=`{\"visible\":\"1\"}`]]"
}]
Сам чанк tpl.ImagesList содержит в себе:
<img src="/connectors/system/phpthumb.php?h=80&f=png&src=[[+image]]&source=2">
По данной ссылке возвращается уменьшенное изображение.
[[+image]] — путь к картинке из migx_projectImages
source=2 — источник данных который используется для выбора в дочернем migx_projectImages, его просто прибил статично, он у меня один и вряд ли поменяется.

В результате в родительском migx получаю список картинок, единственно НО — их количество ограничено шириной колонки, они скрываются за "...".
Вот теперь пытаюсь понять, как для определенной колонки migx отобразить всё содержимое?
Разобрался!

Идём в core/components/migx/elements/tv/migx.tpl
В самом низу находим:
Ext.ComponentMgr.onAvailable('modx-resource-tabs', function() {
    Ext.apply(this, {
        listeners: {
            tabchange: MIGx.updateGrid,
            afterlayout: MIGx.updateGrid,
            resize: MIGx.updateGrid
        }
    });
});

Особо не вникал, но добавляет компонент modx-resource-tabs и действия на события.
Это горизонтальные табы в ресурсе, а MIGx.updateGrid обновляет таблицу в TV.
Сразу после добавляем:
Ext.ComponentMgr.onAvailable('modx-resource-vtabs', function() {
    Ext.apply(this, {
        listeners: {
            tabchange: MIGx.updateGrid
        }
    });
});

Оставил тут только одно событие tabchange, мне этого было достаточно, при изменении вертикальных табов категорий TV запускается обновление таблицы.

Далее, с шириной тулбара где кнопка Добавить элемент не стал глубоко лезть, заколхозил, в assets/components/migx/css/mgr.css добавил:
.tv_modx-grid-multitvgrid_items .x-toolbar,
.tv_modx-grid-multitvgrid_items .x-panel-tbar {
    width: 100% !important;
}
Проблему решает, выглядит красиво :)

Кто может красиво изложить, черканите Бруно.
Это не так страшно было, т.к. информация все умещалась, отображалась. Сейчас же другая ситуация, что уезжает. Не понимаю только одного, это же вот явная проблема, видна сразу, разработчики совсем не проверяли?
По сути нужно или найти где тулбару с кнопкой Добавить указывается стиль ширины, или отрисовку таблицы при переходе по категориям в ТВ
Сделал так…

Дополнительный параметр &tplWrapper, в него поместил:
&tplWrapper=`@INLINE <div class="row">[[+output]]</div>`
Далее в чанке &tpl в самом низу сделал:
[[+num:input=`[[+idx]]`:mod:is=`0`:then=`</div><div class="row">`]]
В итоге получается что у меня весь вывод результата засовывается в
<div class="row">...</div>
При этом, на каждом четном выводе происходит добавление
</div><div class="row">
, что по сути закрывает обертку результата (&tplWrapper) и открывает его заново.

Это вполне работает, разве что в конце результата образуется один лишний пустой
<div class="row"></div>
, потому что в случае вывода по 12 на страницу, 12-ый вывод как раз является четным, в конце вывода которого добавляется
</div><div class="row">
и потом сразу закрывается обертка (&tplWrapper) тегом
</div>
. Это не страшно!

Может быть кому то пригодится!
Благодарю!
Сделал лайтовенький плагин, может кому пригодится:
<?php

// Получаем значение системной настройки
$author_id = $modx->getOption('default_createdby_user_id');

// Если значение не пустое, то подставляем его в качестве автора ресурса
if (!empty($author_id))   
    $resource->set('createdby', $author_id);
Дополнительно создал параметр default_createdby_user_id с типом «Пользователь» для удобства управления. Все работает!
Кстати, еще что заметил…
Вызов:
[[!pdoPage?
      &element=`getImageList`
      &tvname=`migx_photoGallery`
      &limit=`1`
      &tpl=`migx_TEST`
      &processTVs=`migx_photoGallery`
      ... и т.д.
    ]]
При открытии данной страницы, phpthumbON кэширует сразу ВСЕ изображения, которые встречаются в TV migx_photoGallery, не зависимо от того, что что стоит limit=1 и выводится только первый элемент. phpthumbOF так не делал, он кэшировал только, что выводится по лимиту, а при подгрузке уже не срабатывал, НО, картинку выводил, если кэш был сделан ранее. Я пробовал ставить limit=999, вывести сразу все элементы, потом обратно менял limit=1 и тогда при подгрузке все выводилось. А вот уже новую картинку в подгружаемых данных сниппет phpthumbOF не обрабатывал. Не думаю что будет много элементов в MIGX-е, понаблюдаю!
phpthumbof попробовал сделать кэшируемым — не помогло!

Попробовал установил phpthumbon — помогло! Спасибо большое за совет, про phpthumbon знал но что-то не подумал что будет разница в работе… Имеет смысл заменить phpthumbOF на phpthumbON во всем проекте?
Я тикеты не использую, комментарии прикручены к ресурсам, точнее к документам коллекции. Каким способом можно сделать так, что бы не зависимо от того, кто создает документ с определенным ID шаблона или родителе, проставлялся автором определенный пользователь?