Улучшения админ-меню. Раскрытие по клику и не только
Проскочил тут вопрос про скорость раскрытия верхнего меню в админке.
И вспомнилось мне, как меня жутко бесит это hover-меню.
Сколько раз я матерился случайно нажимая на случайный пункт на внезапно раскрывшемся подменю.
Или когда оно внезапно закрывается в самый неподходящий момент, потому что курсор вышел на доли секунды на пару пикселей за его пределы и приходится заново елозить мышкой в поисках нужного пункта и ждать эти грёбанные анимации…
Короче, выбрал время и, собственно, встречайте: MODxFixMenu.
Что умеет:
1. Открывать подменю кликом/наведением.
2. Менять время анимации появления/исчезновения (css-transition). 0 — отключает нахфик эту бессмысленную штуку.
3. Настраивать задержку перед исчезновением, когда курсор вышел за пределы меню, чтобы «успеть» вернуться, пока меню не исчезло.

В сочетании с AjaxManager имеется небольшой косяк — перед ajax-загрузкой (по клику по любому из пунктов) открытая менюшка может «мигнуть» после закрытия (т.е. оно закрывается, потом резко появляется и снова пропадает). Побороть не смог. Да и хрен с ним, если честно. Работать не мешает, мигает быстро.
В очередной раз убедился, что ExtJs — это какое-торукожо кривое поделие — работа с DOM безумно убога, приходилось изворачиваться. Поэтому js-код слегка «раздут», имеются костыли. Ну не подключать же ради такой мелочи jQuery, правильно?
Тулза небольшая, но сэкономит много нервов — теперь для меня мастхэв на каждом сайте, где приходится часто работать с админкой.
Готовый пакет здесь, код — здесь.
И вспомнилось мне, как меня жутко бесит это hover-меню.
Сколько раз я матерился случайно нажимая на случайный пункт на внезапно раскрывшемся подменю.
Или когда оно внезапно закрывается в самый неподходящий момент, потому что курсор вышел на доли секунды на пару пикселей за его пределы и приходится заново елозить мышкой в поисках нужного пункта и ждать эти грёбанные анимации…
Короче, выбрал время и, собственно, встречайте: MODxFixMenu.
Что умеет:
1. Открывать подменю кликом/наведением.
2. Менять время анимации появления/исчезновения (css-transition). 0 — отключает на
3. Настраивать задержку перед исчезновением, когда курсор вышел за пределы меню, чтобы «успеть» вернуться, пока меню не исчезло.
В сочетании с AjaxManager имеется небольшой косяк — перед ajax-загрузкой (по клику по любому из пунктов) открытая менюшка может «мигнуть» после закрытия (т.е. оно закрывается, потом резко появляется и снова пропадает). Побороть не смог. Да и хрен с ним, если честно. Работать не мешает, мигает быстро.
В очередной раз убедился, что ExtJs — это какое-то
Тулза небольшая, но сэкономит много нервов — теперь для меня мастхэв на каждом сайте, где приходится часто работать с админкой.
Готовый пакет здесь, код — здесь.
Комментарии: 18
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Указываете в секундах? Или милисекундах? Там можно дробные числа писать, хоть через точку, хоть через запятую.
Но вообще я эту опцию добавил просто чтобы было. По факту — она нахрен не нужна, ибо эта анимация — одна из причин, почему я и написал этот плагин. Хотя можно было бы оставить просто выключатель Да/Нет :)
Позволю себе процитировать:
А меню не ext'овым разработчики сделали специально, кмк. Просто бывает так, что в каком-нибудь контроллере закралась ошибка и падает вся админка. Но меню при этом остаётся полностью рабочим, ибо к ExtJS'у это меню отношения не имеет.
Он строит DOM, а не разбирает =)
Но для меня всё-равно остаётся загадкой — как можно строить не умея адекватно ориентироваться в построенном. Это же не просто — построил dom-дерево один раз и забыл. Динамика UI как никак должна подразумевать адекватное сопровождение постороенного дерева. Но нет.
Тем более при наличии могущественного $(), который существует уже лет 9, уж можно было сделать что-то аналогично универсальное.
То есть, вообще. Ты работаешь с объектами, а он их уже представляет в виде html на странице — тебя не заботит, как именно.
Загляни в исходники компонентов MODX — много там getElementById и подобного? Да вообще нету. Там есть:
и таблица обновила данные.
А мне нужно-то было всего лишь добавлять/удалять классы у нужных пунктов меню, учитывая всякие всплытия, клики не по "li", а по "a" и прочие стандартные вещи и работа с dom для такого рода плагинчиков.
На jQ это проще пареной репы — всё api задокументировано (обожаю вот эту страницу), всё прозрачно, $() жрёт что угодно и ни где ничего не ломается. А на ext'е, в этом плане, всё гораздо печальнее.
Т.е. я хочу сказать, что ExtJs как фреймворк — мощный и функциональный. Но как библиотека для работы с dom:
:-)
А для замены jQuery Ext не подходит, понятно.
Но… шикарно)
Раньше это было внутри обычной очистки кэша, и генерация проводилась постоянно. Сейчас вынесли в отдельный пункт, чтобы обычная очистка кэша работала быстрее.
затем выбрать «искать пакеты локально»