Как настроить выпадающий список в детской сетке MODX Collections? - PullRequest
0 голосов
/ 01 июня 2019

Я хочу иметь возможность изменить значение телевизора для ресурсов, отображаемых в сетке "Коллекции", с помощью раскрывающегося списка выбора bo.

Может ли кто-нибудь предоставить пример создания окна выбора в сетке "Коллекция"это либо

  • , заполняемый из опций в существующей переменной шаблона
  • , заполняемый из фиксированного списка, просто опции 1, 2, 3

IЯ понимаю, что это возможно, но не могу найти пример, достаточно близкий к тому, что мне нужно для достижения, и я могу понять это самостоятельно.

То, что я пробовал, это

Я виделПример Сьюзен Отвелл о том, как изменить Создано с помощью поля выбора http://modxcookbook.com/add-ons/collections/editable-grid-view.html

Обсуждение, приведенное ниже, решает аналогичную проблему, но остается без ответа https://forums.modx.com/thread/95984/adding-modx-combo-to-collections-list

Конфигурация и синтаксис MIGX выглядят аналогично, но не близкоДостаточно, чтобы я мог понять, что мне нужно сделать https://forums.modx.com/thread/91403/single-select-listbox-entries-in-migx

MODx.combo.ComboBox документы выглядят так, как будто они содержат некоторые важные детали, но я не знаю достаточно, чтобы понять, если это выseful https://docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/custom-manager-pages/modext/modx.combo.combobox

Я искал примеры подобных выпадающих списков в исходном коде других дополнений.Я вижу ссылки на xtype, но не могу перепроектировать их, чтобы понять, что мне нужно для создания собственного выпадающего списка в сетке Коллекций.

Приведенный выше пример Сьюзан Отвелл создает раскрывающийся список на основе xtype modx-combo-user.Это похоже на то, что мне нужно, но я не могу понять, как адаптировать это для создания выпадающего списка из значений ТВ или фиксированного списка.

{"xtype":"modx-combo-user","renderer":true,"fields": ["fullname","username","id"],"displayField": "fullname","baseParams": {"action": "security/user/getlist","usergroup":2}}

Может кто-нибудь привести пример или указать мне на другой ресурсчто может помочь?

1 Ответ

0 голосов
/ 07 июня 2019

Я только что ответил на этот вопрос на форумах MODX, но здесь для всех, кто на StackOverflow:

  1. Создайте файл JS в вашем каталоге ресурсов. Для простоты, создайте файл с именем test.js в вашем каталоге ресурсов.

  2. Перейдите на страницу системных настроек MODX и выберите фильтр пространства имен Collections. Затем в настройках collection.user_js введите значение: {assets_url} test.js. Это будет инструктировать Коллекции для загрузки Ваш новый файл test.js при каждом запуске Коллекции.

  3. Для этого примера скопируйте и вставьте следующий пример ZoomLevel (предназначенный для масштабирования Google Maps) в новый файл test.js.

collections.combo.ZoomLevel = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        store: new Ext.data.ArrayStore({
            id: 0
            ,fields: ['level']
            ,data: [
                ['1'],
                ['2'],
                ['3'],
                ['4'],
                ['5'],
                ['6'],
                ['7'],
                ['8'],
                ['9'],
                ['10'],
                ['11'],
                ['12'],
                ['13'],
                ['14'],
                ['15'],
                ['16'],
                ['17'],
                ['18'],
                ['19'],
                ['20'],
                ['21']
            ]
        })
        ,mode: 'local'
        ,displayField: 'level'
        ,valueField: 'level'
        ,name: 'zoom_level'
        ,hiddenName:'zoom_level'
    });
    collections.combo.ZoomLevel.superclass.constructor.call(this,config);
};
Ext.extend(collections.combo.ZoomLevel,MODx.combo.ComboBox);
Ext.reg('collections-combo-zoomlevel',collections.combo.ZoomLevel);
  1. После вставки сохраните файл.

  2. Перейдите на страницу просмотра своих коллекций и добавьте новый столбец для сетки своих коллекций. В поле редактора скопируйте и вставьте следующий JSON:

 {
    "xtype": "collections-combo-zoomlevel",
    "renderer": true
 }

Теперь у вас есть редактор списков со значениями, которые мы определили в файле test.js.

Эти комбинированные списки очень настраиваемы, но может быть немного крутой кривой обучения, чтобы выяснить, что настройка делает и что.

Здесь вы можете увидеть комбинации, которые определяет сама коллекция: https://github.com/modxcms/Collections/blob/9a328fa881b76e2ce355876156eaca3126065717/assets/components/collections/js/mgr/extra/collections.combo.js

...