🙈 PG
А моё одобрение вам для чего?
Евгений
А моё одобрение вам для чего?
там кусок твоего кода
Евгений
вроде как
🙈 PG
Аа, ок
Иван
Вадим Семыкин
Всем привет. Уже задавал вопрос, никак не могу допереть. Я создал Grid. В Grid'е нужно создать контекстное меню. Создал меню: var contextMenu = new Ext.menu.Menu({ items: [{ text: 'Edit', }, { text: 'Delete', }] }); Для того чтобы его отобразить в Grid'е, в Grid'е вызываю его так: listeners: { 'rowcontextmenu': function (grid, index, event){ event.stopEvent(); contextMenu.showAt(event.getXY()); } } Все работает, но мне надо в var contextMenu = new Ext.menu.Menu({ items: [{ text: 'Edit', }, { text: 'Delete', }] }); добавить handler: var contextMenu = new Ext.menu.Menu({ items: [{ text: 'Edit', handler: function () { ... } }, { text: 'Delete', }] }); И в нем обработать rowIndex. Хоть убейте, но не понимаю в как это сделать. Где-то читал, что контекстное меню не является частью грид и туда ничего передать нельзя. Подскажите куда двигаться и на что смотреть.
Sergey_K
Епрст ) что тебе мешает писать индекс в глобальную переменную?
Sergey_K
Сочувствую, конечно - мучаешься с этим ненужным дерьмом уже пару дней
Sergey_K
в listeners grid'а?
Зачем? Можно вообще в локалсторадж
Sergey_K
Ну или просто в приложении
Sergey_K
Ну раз такая уебанская система
Sergey_K
Это проще, чем терять еще неделю на никому не нужную систему
Sergey_K
Замень, что в актуальных версиях параметров контекста больше.
Вадим Семыкин
Пробовал contextmenu создавать в listenre grid'а, все работает как надо, но тоько один раз. Где-то писали , что меню с одинаковыми идентификаторами создаются и поэтму не отображаются
Вадим Семыкин
Sergey_K
Ну да
Sergey_K
А для этого старья уже релевантной инфы давно нет
Sergey_K
И я не думаю, что ты еще где-то в своей жизни это встретишь. Поэтому костыль не совсем костыль.
Sergey_K
Как вариант - вообще вынести частые функции в свои формы. В итоге время на разработку в сто раз меньше занимает.
Nikolay
ща попробую что-нибудь выдрать
Вадим Семыкин
ща попробую что-нибудь выдрать
спасибо. Пока поэксперементирую. Думаю в listeners grid'а вызывать не отображения меню, а функцию, в которую передать rowIndex, а там чего-нибудь замутить
Nikolay
проще скопипасть 2-3 функции готовые из компонентов)
Nikolay
спасибо. Пока поэксперементирую. Думаю в 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 и т.д. обрабатывается запрос
Nikolay
Nikolay
данный вариант универсальный, то есть выделить можешь не одну строку а сразу несколько, и действия с ними могут быть разными
Nikolay
в action приходят выделенные id строк, и они же улетают в коннектор. В минишопе это всё есть
Nikolay
а вот ещё забыл _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; },
Вадим Семыкин
Спасибо. Попробую переварить.
Nikolay
главное не подавиться))
Вадим Семыкин
главное не подавиться))
Да))) тяжеловато заходит )
Вадим Семыкин
@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()); // вывел контекстное меню } Вообщем для новичков я думаю сойдет. Куда этот костыль меня приведет я не знаю, но на первый взгляд, кажется, сойдет.
Иван
@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()); // вывел контекстное меню } Вообщем для новичков я думаю сойдет. Куда этот костыль меня приведет я не знаю, но на первый взгляд, кажется, сойдет.
форматируйте код через тройные ` в начале и в конце кода
Игорь
Я стихи сочинил. Прочитать кому?
Вадим Семыкин
iWatchYouFromAfar
Я стихи сочинил. Прочитать кому?
@webinmd Жек тут тебя зовут
iWatchYouFromAfar
доставай свою гифку где мужик в лепестках роз лежит
iWatchYouFromAfar
да вы просто созданы друг для друга
Игорь
Вадим Семыкин
после придуманного костыля именно такие ощущения 😂
Игорь
))0
🙈 PG
после придуманного костыля именно такие ощущения 😂
https://github.com/bezumkin/modExtra/blob/v1.0/assets/components/modextra/js/mgr/widgets/items.grid.js
Nikolay
@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()); // вывел контекстное меню } Вообщем для новичков я думаю сойдет. Куда этот костыль меня приведет я не знаю, но на первый взгляд, кажется, сойдет.
это походу на чистом Ext, а Modext это его расширение, и там многие вещи адаптированы под modx, стандарт определённый. Уже продуманы пункты меню, ajax-запросы и т.д.
🙈 PG
вот пример
Nikolay
если с нуля писать то да, но когда миллион примеров, то всё проще)
Вадим Семыкин
Ну решение наверное не самое красивое, но как вариант
Евгений
@webinmd Жек тут тебя зовут
ща, квн досмотрю и приду
iWatchYouFromAfar
ща, квн досмотрю и приду
мля ты еще и квн смотришь
Евгений
iWatchYouFromAfar
болею за гусмана
я был 3 раза на квн
iWatchYouFromAfar
вживую несколько веселее
Алексей
(медленно лирично) Я играл в КВН... понял что КВН не мое... Перестал вообще смотреть квн... Теперь смотрю в моник на код.... Жизненно....
iWatchYouFromAfar
@webinmd сорри Жек
Алексей
Евгений
пох
Sergey_K
не квн это для тупых
Да, особенно колоритно звучит после фразы "я был там 3 раза" ))))
Sergey_K
Мне кажется, что на квн ходят нафталиновые тетки с прическами брокколи...
Миша
а кто может сталкивался, при первой загрузки страницы с товаром нецепляется скрипт минишопа, нажал на кнопку купить, страница перегружается и скрипт есть
🙈 PG
Head не закрыт по ходу
Gaius Cassius
А в консоли 404 на скрипт отдаёт при первой загрузке?
Миша
Head не закрыт по ходу
закрыт, получается пока на кнопку купить не нажмешь, не появится подключение скрипта
Миша
А в консоли 404 на скрипт отдаёт при первой загрузке?
он его просто не подключает, его нету в коде
🙈 PG
Миникорзина или мсгеллери подключены?
Миша
Миникорзина или мсгеллери подключены?
галерея да, корзина пока нет
Миша
нужна миникорзина что ли? О_о
🙈 PG
Попробуй миникорзину подключить
Миша
сейчас попробую
Миша
будет прикольно если так )
🙈 PG
Пусть даже с инлайновым пустым чанком
🙈 PG
Но эта проблема только на странице с товаром?
Миша
да, в каталоге все отлично, по кнопке добавляется
🙈 PG
head у них одинаково выглядит?
Миша
да, там extends шаблона
🙈 PG
Чаще всего проблема в разметке
🙈 PG
Миникорзина не помогла?