Групповое редактирование ресурсов (документов) с помощью MIGXDB

в 19:44, , рубрики: modx, modx revolution, метки:

Групповое редактирование ресурсов (документов) с помощью MIGXDBНе устаю удивляться возможностям, которые предоставляет компонент MIGX от Bruno17 для MODX Revolution. Выглядит он пока неказисто и встречаются ошибочки, но критических проблем нет. Всё, что написано в данной статье, актуально для версии 2.5.8-pl (последняя на данный момент).

Многие используют MIGX для создания фотогалерей, но этим его функционал не ограничивается. Это настоящий конструктор для управления данными любых таблиц БД. Можно даже выводить список дочерних ресурсов (документов MODX) в любом контейнере. Об этом и пойдет речь в данной статье. Кое что я узнал из документации MIGDB, но, на сколько я понял, она уже порядком устарела и многое там просто не работает.

Я расскажу как сделать такую таблицу с вложенными ресурсами:
Групповое редактирование ресурсов (документов) с помощью MIGXDB

1. Открыть «Компоненты» -> «MIGX». Перейти на вкладку «MIGX». Нажать кнопку «Добавить элемент».
2. На вкладке «Settings» ввести имя (Name) конфигурации, например «child_resources». Нажать кнопку «Выполнить».
Можно было бы очень долго расписывать что где нажать и куда что ввести, но сделаем проще. Я дам готовую конфигурацию, а вы настроите под себя.
3. Кликнуть правой кнопкой мыши по строке нашей конфигурации и выбрать «Экспорт/Импорт».
Групповое редактирование ресурсов (документов) с помощью MIGXDB
В поле в появившемся окне вставить такой JSON массив:

Показать
{

    "formtabs":[
        {
            "MIGX_id":1,
            "caption":"Основные данные",
            "print_before_tabs":"0",
            "fields":[
                {
                    "MIGX_id":1,
                    "field":"pagetitle",
                    "caption":"Заголовок",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":""
                },
                {
                    "MIGX_id":10,
                    "field":"alias",
                    "caption":"Псевдоним",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":""
                },
                {
                    "MIGX_id":6,
                    "field":"introtext",
                    "caption":"Краткое описание",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"textarea",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":""
                },
                {
                    "MIGX_id":7,
                    "field":"image",
                    "caption":"Картинка",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"image",
                    "inputTVtype":"",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":""
                },
                {
                    "MIGX_id":4,
                    "field":"price",
                    "caption":"Цена",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"price",
                    "inputTVtype":"",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":""
                },
                {
                    "MIGX_id":5,
                    "field":"context_key",
                    "caption":"Контекст",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"listbox",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"catalog||web",
                    "default":"catalog"
                },
                {
                    "MIGX_id":2,
                    "field":"template",
                    "caption":"Шаблон",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"hidden",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":5
                },
                {
                    "MIGX_id":8,
                    "field":"show_in_tree",
                    "caption":"Показывать в дереве?",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"listbox",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"no==0||yes==1",
                    "default":""
                },
                {
                    "MIGX_id":9,
                    "field":"published",
                    "caption":"Опубликован",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"hidden",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":1
                }
            ]
        },
        {
            "MIGX_id":2,
            "caption":"Подробное описание",
            "print_before_tabs":"0",
            "fields":[
                {
                    "MIGX_id":1,
                    "field":"content",
                    "caption":"Описание",
                    "description":"",
                    "description_is_code":"0",
                    "inputTV":"",
                    "inputTVtype":"richtext",
                    "configs":"",
                    "sourceFrom":"config",
                    "sources":"[]",
                    "inputOptionValues":"",
                    "default":""
                }
            ]
        }
    ],
    "contextmenus":"recall_remove_delete",
    "actionbuttons":"addItem||bulk||toggletrash",
    "columnbuttons":"update||publish||unpublish||recall_remove_delete",
    "filters":[
        {
            "MIGX_id":1,
            "name":"search",
            "label":"search",
            "emptytext":"Поиск...",
            "type":"textbox",
            "getlistwhere":{
                "pagetitle:LIKE":"%[[+search]]%",
                "OR:longtitle:LIKE":"%[[+search]]%",
                "OR:content:LIKE":"%[[+search]]%"
            },
            "getcomboprocessor":"",
            "combotextfield":"",
            "comboidfield":"",
            "comboparent":"",
            "default":""
        }
    ],
    "extended":{
        "migx_add":"Добавить",
        "formcaption":"Дочерний ресурс",
        "update_win_title":"",
        "win_id":"child_resources",
        "maxRecords":"",
        "addNewItemAt":"bottom",
        "multiple_formtabs":"",
        "extrahandlers":"",
        "packageName":"",
        "classname":"modResource",
        "task":"resconnections",
        "getlistsort":"id",
        "getlistsortdir":"desc",
        "use_custom_prefix":"0",
        "prefix":"",
        "grid":"",
        "gridload_mode":1,
        "check_resid":"0",
        "check_resid_TV":"",
        "join_alias":"",
        "has_jointable":"yes",
        "getlistwhere":"",
        "joins":"",
        "cmpmaincaption":"",
        "cmptabcaption":"",
        "cmptabdescription":"",
        "cmptabcontroller":"",
        "winbuttons":"",
        "onsubmitsuccess":"",
        "submitparams":""
    },
    "columns":[
        {
            "MIGX_id":1,
            "header":"ID",
            "dataIndex":"id",
            "width":50,
            "sortable":true,
            "show_in_grid":1,
            "renderer":"",
            "clickaction":"",
            "selectorconfig":"",
            "renderchunktpl":"",
            "renderoptions":"[]"
        },
        {
            "MIGX_id":2,
            "header":"Заголовок",
            "dataIndex":"pagetitle",
            "width":300,
            "sortable":true,
            "show_in_grid":1,
            "renderer":"this.renderRowActions",
            "clickaction":"",
            "selectorconfig":"",
            "renderchunktpl":"",
            "renderoptions":"[]"
        },
        {
            "MIGX_id":3,
            "header":"Цена",
            "dataIndex":"price",
            "width":100,
            "sortable":true,
            "show_in_grid":1,
            "renderer":"",
            "clickaction":"",
            "selectorconfig":"",
            "renderchunktpl":"",
            "renderoptions":"[]"
        },
        {
            "MIGX_id":4,
            "header":"Опубликован",
            "dataIndex":"published",
            "width":100,
            "sortable":"false",
            "show_in_grid":1,
            "renderer":"this.renderCrossTick",
            "clickaction":"",
            "selectorconfig":"",
            "renderchunktpl":"",
            "renderoptions":"[]"
        },
        {
            "MIGX_id":5,
            "header":"Удален",
            "dataIndex":"deleted",
            "width":"",
            "sortable":"false",
            "show_in_grid":"0",
            "renderer":"",
            "clickaction":"",
            "selectorconfig":"",
            "renderchunktpl":"",
            "renderoptions":"[]"
        }
    ]

}

Готов интерфейс управления ресурсами.
4. Создать файл конфигурации /core/components/migx/configs/grid/grid.child_resources.config.inc.php с таким содержимым:

<?php

$this->customconfigs['idfield_local'] = 'parent';
$this->customconfigs['includeTVs'] = 1;
$this->customconfigs['includeTVList'] = 'price,image';

Как вы догадались, includeTVList это список всех TV, которые вам нужны в компоненте.
5. Снова кликнуть по строке конфигурации «child_resources» и выбрать «Редактировать». Перейти «Formtabs» -> «Основные данные» -> «Редактировать». Откроется список всех полей. Здесь надо настроить имена полей и TV, которые вам нужны.
6. Как видим, для поля «image» установлен «Input TV» — «image». Если такой TV-параметр (дополнительное поле) ещё не создан, то нужно его создать, назначить тип ввода «Изображение» и сделать доступным для нужного шаблона. Так же с остальными TV.
7. Открыть редактирование поля «template», перейти на вкладку «Input Options» и в поле «Default Value» ввести ID шаблона дочерних ресурсов, которыми будем управлять через наш компонент. Так же следует настроить поле «context_key». Выставить там нужные контексты.
8. Теперь нужно сделать чтобы список ресурсов появлялся при редактировании ресурсов с соответствующим шаблоном. Создаем TV, например с именем «child_resources». Тип ввода указать «migxdb», в поле «Конфигурации» ввести название созданной ранеее конфигурации («child_resources»).
Групповое редактирование ресурсов (документов) с помощью MIGXDB
Сделать доступным этот TV для соответствующих ресурсам-контейнерам шаблонов.
9. На этом можно было бы закончить, но т.к. MIGX ещё сыроват мне пришлось поправить процессоры в папке "/processors/mgr/resconnections/". Взять из можно здесь. Ещё нужно обновить код файла migx.class.php.

Теперь всё должно работать как надо.
Таким способом вы можете сделать управление для любых данных. С помощью MIGXDB можно создавать и редактировать свои таблицы в БД. Об этом написано здесь.

Автор: Andchir

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js