🙈 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
Ну или просто в приложении
Вадим Семыкин
Sergey_K
Ну раз такая уебанская система
Sergey_K
Это проще, чем терять еще неделю на никому не нужную систему
Sergey_K
Замень, что в актуальных версиях параметров контекста больше.
Вадим Семыкин
Пробовал contextmenu создавать в listenre grid'а, все работает как надо, но тоько один раз. Где-то писали , что меню с одинаковыми идентификаторами создаются и поэтму не отображаются
Вадим Семыкин
Sergey_K
Ну да
Sergey_K
А для этого старья уже релевантной инфы давно нет
Sergey_K
И я не думаю, что ты еще где-то в своей жизни это встретишь.
Поэтому костыль не совсем костыль.
Sergey_K
Как вариант - вообще вынести частые функции в свои формы.
В итоге время на разработку в сто раз меньше занимает.
Nikolay
Всем привет. Уже задавал вопрос, никак не могу допереть. Я создал 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. Хоть убейте, но не понимаю в как это сделать. Где-то читал, что контекстное меню не является частью грид и туда ничего передать нельзя. Подскажите куда двигаться и на что смотреть.
примеры надо не в документации смотреть, а в рабочих компонентах, их там много
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
iWatchYouFromAfar
доставай свою гифку где мужик в лепестках роз лежит
iWatchYouFromAfar
да вы просто созданы друг для друга
Игорь
Вадим Семыкин
после придуманного костыля именно такие ощущения 😂
Игорь
))0
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
если с нуля писать то да, но когда миллион примеров, то всё проще)
Вадим Семыкин
Ну решение наверное не самое красивое, но как вариант
Евгений
Евгений
iWatchYouFromAfar
вживую несколько веселее
Евгений
Алексей
(медленно лирично) Я играл в КВН...
понял что КВН не мое...
Перестал вообще смотреть квн...
Теперь смотрю в моник на код....
Жизненно....
iWatchYouFromAfar
iWatchYouFromAfar
@webinmd сорри Жек
Алексей
Евгений
пох
Sergey_K
не квн это для тупых
Да, особенно колоритно звучит после фразы "я был там 3 раза" ))))
Sergey_K
Мне кажется, что на квн ходят нафталиновые тетки с прическами брокколи...
Миша
а кто может сталкивался, при первой загрузки страницы с товаром нецепляется скрипт минишопа, нажал на кнопку купить, страница перегружается и скрипт есть
🙈 PG
Head не закрыт по ходу
Gaius Cassius
А в консоли 404 на скрипт отдаёт при первой загрузке?
Миша
Head не закрыт по ходу
закрыт, получается пока на кнопку купить не нажмешь, не появится подключение скрипта
Миша
🙈 PG
Миникорзина или мсгеллери подключены?
Миша
Миша
нужна миникорзина что ли? О_о
🙈 PG
Попробуй миникорзину подключить
Миша
сейчас попробую
Миша
будет прикольно если так )
🙈 PG
Пусть даже с инлайновым пустым чанком
🙈 PG
Но эта проблема только на странице с товаром?
Миша
да, в каталоге все отлично, по кнопке добавляется
🙈 PG
head у них одинаково выглядит?
Миша
да, там extends шаблона
🙈 PG
Чаще всего проблема в разметке
🙈 PG
Миникорзина не помогла?