Size: a a a

MODX. Русскоязычное сообщество.

2020 February 04

В

Вадим Семыкин in MODX. Русскоязычное сообщество.
Nikolay Nikolay
ща попробую что-нибудь выдрать
спасибо. Пока поэксперементирую. Думаю в listeners grid'а вызывать не отображения меню, а функцию, в которую передать rowIndex, а там чего-нибудь замутить
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
проще скопипасть 2-3 функции готовые из компонентов)
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
Вадим Семыкин
спасибо. Пока поэксперементирую. Думаю в listeners grid'а вызывать не отображения меню, а функцию, в которую передать rowIndex, а там чего-нибудь замутить
если сильно не мудрить, то вот простая функция вывода меню

    getMenu: function() {
       var m = [];
       m.push({
           text: 'Редактировать',
           handler: this.update
       });
       m.push('-');
       m.push({
           text: 'Удалить',
           handler: this.remove
       });
       this.addContextMenuItem(m);
   },

Она вшита в MODx.grid.Grid, и уже всё что нужно делает, здесь мы её переопределяем.  listeners не нужен, у меня его нет. При клике на пункт вызываются функции, например удаление.

например

    remove: function (act, btn, e) {
       this.action('remove');
   },

а они вызывают функцию action, в которую тупо передаётся какое-то действие. То есть запрос идёт на один и тот же процессор, и там уже в зависимости от того что сделать remove, update и т.д. обрабатывается запрос
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
данный вариант универсальный, то есть выделить можешь не одну строку а сразу несколько, и действия с ними могут быть разными
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
в action приходят выделенные id строк, и они же улетают в коннектор. В минишопе это всё есть
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
а вот ещё забыл
    _getSelectedIds: function () {
       var ids = [];
       var selected = this.getSelectionModel().getSelections();

       for (var i in selected) {
           if (!selected.hasOwnProperty(i)) {
               continue;
           }
           ids.push(selected[i]['id']);
       }

       return ids;
   },
источник

В

Вадим Семыкин in MODX. Русскоязычное сообщество.
Спасибо. Попробую переварить.
источник

NN

Nikolay Nikolay in MODX. Русскоязычное сообщество.
главное не подавиться))
источник

В

Вадим Семыкин in MODX. Русскоязычное сообщество.
Nikolay Nikolay
главное не подавиться))
Да))) тяжеловато заходит )
источник

В

Вадим Семыкин in MODX. Русскоязычное сообщество.
@modflow Николай, спасибо. Переварить не смог ). В силу того, что не допиливаю готовый компонент, а пытаюсь сотворить нечто похожее и влезть в стандартный функционал не хватило мозгов, придумал вариант попроще (может быть и костыль, но кажется не такой уж и костыль), может быть пригодится кому-нибудь.

В Grid’е в listeners вызвал функцию:
listeners: {'rowcontextmenu': contextMenu}

Функция:
var contextMenu = function(grid, rowIndex, event){ // передал данные по выделенным строкам грида
               var rec = grid.getStore().getAt(rowIndex);
               var test = rec.get('id'); // получил нужные данные
               var contextMenuLink = new Ext.menu.Menu({
                   items: [{
     id: ‘edit’, // !!!!!!!! с id не работает. Создаются несколько элементов с одинаковым id и меню срабатывает только один раз. Мне id элементов меню не нужен, поэтому просто не указывал их
                       text: 'Edit',
                           handler: function(){
                               alert(test); // тут можно дальше с этим как-то работать
                           }
                           },{
                       text: 'Delete',
                   }]
               });
               event.stopEvent(); // заблокировал браузерное меню
               contextMenuLink.showAt(event.getXY()); // вывел контекстное меню
           }


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

ИБ

Иван Бочкарев in MODX. Русскоязычное сообщество.
Вадим Семыкин
@modflow Николай, спасибо. Переварить не смог ). В силу того, что не допиливаю готовый компонент, а пытаюсь сотворить нечто похожее и влезть в стандартный функционал не хватило мозгов, придумал вариант попроще (может быть и костыль, но кажется не такой уж и костыль), может быть пригодится кому-нибудь.

В Grid’е в listeners вызвал функцию:
listeners: {'rowcontextmenu': contextMenu}

Функция:
var contextMenu = function(grid, rowIndex, event){ // передал данные по выделенным строкам грида
               var rec = grid.getStore().getAt(rowIndex);
               var test = rec.get('id'); // получил нужные данные
               var contextMenuLink = new Ext.menu.Menu({
                   items: [{
     id: ‘edit’, // !!!!!!!! с id не работает. Создаются несколько элементов с одинаковым id и меню срабатывает только один раз. Мне id элементов меню не нужен, поэтому просто не указывал их
                       text: 'Edit',
                           handler: function(){
                               alert(test); // тут можно дальше с этим как-то работать
                           }
                           },{
                       text: 'Delete',
                   }]
               });
               event.stopEvent(); // заблокировал браузерное меню
               contextMenuLink.showAt(event.getXY()); // вывел контекстное меню
           }


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

ЕП

Екатерина Подольская in MODX. Русскоязычное сообщество.
Я стихи сочинил. Прочитать кому?
источник

В

Вадим Семыкин in MODX. Русскоязычное сообщество.
Иван Бочкарев
форматируйте код через тройные ` в начале и в конце кода
Круто ) Спасибо ) работает . Не знал
источник

i

iWatchYouFromAfar in MODX. Русскоязычное сообщество.
Екатерина Подольская
Я стихи сочинил. Прочитать кому?
@webinmd Жек тут тебя зовут
источник

i

iWatchYouFromAfar in MODX. Русскоязычное сообщество.
доставай свою гифку где мужик в лепестках роз лежит
источник

i

iWatchYouFromAfar in MODX. Русскоязычное сообщество.
да вы просто созданы друг для друга
источник

ЕП

Екатерина Подольская in MODX. Русскоязычное сообщество.
источник

В

Вадим Семыкин in MODX. Русскоязычное сообщество.
после придуманного костыля именно такие ощущения 😂
источник

ЕП

Екатерина Подольская in MODX. Русскоязычное сообщество.
))0
источник