DebugToolbar Расширение

Здравствуйте, коллеги!

Поздравляю вас с пятницей и удачно провести выходные.

На хабре встретил разработку Codeigniter DebugToolbar, который был сделан на основе Kohana'овского тулбара, который, в свою очередь, был "слизан" с "симфонического".

В общем, я может пока не такой сильный программист (большие сервера в одиночку таскать все-таки не могу ;) ), но решил попробовать свои силы и написать подобное расширение для любимого мной Yii.

Сначала была идея сделать всё красиво, выплывая, но из-за того, что родителем моего класса расширения был не ApplicationComponent и он вызывался вне контроллеров, то столкнулся с проблемой registerCoreScript('jquery') при рендере. Так делать нельзя… А жаль. Спрашивал у "буржуев", но внятного ответа так и не получил, а Qiang пока молчит и не отвечает.

Потом подумал и сделал минимальный функционал - отображение версии, времени выполнения, количества запросов к БД и переключателю показа трейса.

Получилось вот это… На приложенных картинках можно посмотреть на это “чудо” пятничной мысли ;).

Как использовать:

  1. Распаковать архив в папочку protected/extentsions/debugtoolbar (если всё верно сделали, то должен быть файл protected/extension/debugtoolbar/EDebugToolbarRoute.php)

  2. В config/main.php дописать такие вещи.



'import'=>array(


		'application.models.*',


		'application.components.*',


		'application.extensions.debugtoolbar.*',


	),





	// application components


	'components'=>array(


		//logging configuration


		'log'=>array(


			'class'=>'CLogRouter',


			'routes'=>array(


				'class'=>'EDebugToolbarRoute',


				'levels'=>'profile, trace',


			),


		),





  1. Если нужно поправить ширину или высоты, идем в extensions/debugtoolbar/views/logToolbar.php и правим css.

P.S. Коллеги, если тема интересна, то я буду готов продолжать развивать такой тулбарчик, но мне нужна информация, как мне опубликовать ассеты (jQuery тот же и картинки).

P.P.S. Или может я принципиально неверно сделал? Просто я не понял, как в Yii можно реализовать хуки (может перепиской CApplication на CMyApplication?).

нормальная штука. молодец :)

Я чувствую, что её можно улучшить… И так уже удобно - не нужно лазать в FireBug каждый перегруз, чтобы трейс посмотреть, но если бы картинки и jQuery, то не стыдно бы в Extensions было засунуть.

cr0t, классная вещица, респект :) удобная

Думаю, было бы неплохо сделать внешний вид похожим нам кохановский или симфоновский тулбар.

Quote

Сначала была идея сделать всё красиво, выплывая, но из-за того, что родителем моего класса расширения был не ApplicationComponent и он вызывался вне контроллеров, то столкнулся с проблемой registerCoreScript('jquery') при рендере. Так делать нельзя... А жаль. Спрашивал у "буржуев", но внятного ответа так и не получил, а Qiang пока молчит и не отвечает.

У меня изначально такая задумка была… Но "буржуи" молчат… А я дальше не знаю, как мне извне контроллера (не jquery же вместе с кодированными картинками во вью запихивать… а просто использовать положенные в корень не Айс - тогда идея extension'а рушится).

Я тут немного подрихтовал внешний вид тулбарчика (теперь он больше на тулбар стал похож), используя идеи Custom Button с http://stopdesign.com/.

В общем, каким он стал видно на скриншоте.

Использование и подключение этого расширения не изменилось.

2 cr0t: Первая версия, поправленная на предмет юзабилити. Вторую, честно говоря, лень править. Идею деления на общий и дб содрал в симфонии. Если прикрутишь красоту буду рад, а так приятнее свернуть, когда надо, тулбар, чем градиентный фон :)

Обнаружил небольшую ошибку в css, содержащемся в logToolbar.php

получается что правила применяются ко всем li тегам на странице

должно быть:

Quote

должно быть:

Если уж на то пошло, то 0px смысла никакого указывать нет, кого интересует px, em или pt ноль? Там просто ноль…

Quote

Quote

должно быть:

Если уж на то пошло, то 0px смысла никакого указывать нет, кого интересует px, em или pt ноль? Там просто ноль…

логично, но на отображение это все-таки никак не влияет

Конечно, не влияет ;)

Просто так, как написал я, мы напишем валидный код, а 0px - невалид… Но работать будет. Браузерам по большому счету на валидность кода пофиг… “Они привыкли” ;)

Нашел еще небольшую проблему…

Если в приложении используется jQuery, то начинают появляться ошибки в консоли firebug и перестает выполнять код, завязанный на jQuery.

Причина тому, определенная в logToolbar.php функция, перекрывающая такую же у jQuery

лечится переименовыванием имени функции и соответствующих ее вызовов

Где можно его скачать?

Первоначальный вариант: http://www.yiiframew…34.0;attach=248

Улучшенный внешний вид (кроме Gecko браузеров): http://www.yiiframew…34.0;attach=288

Разделение на DB запросов и просто трассировки (но есть глюки с jQuery): http://www.yiiframew…34.0;attach=305

P.S. А, вообще, все ссылки в этом топике, смотрите внизу постов.

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

Как и в прошлый раз идеи заимствованы в симфонии, куски кода, впрочем, тоже оттуда же. Цель - более прозрачная внутренняя структура, дабы проще нарастить функционал, ежели будет в том необходимость великая. Jast for fun одним словом :)

установка, как и ранее:

распаковать в protected/extensions, поправить protected/config/main.php

// autoloading model and component classes

'import'=>array(

    'application.models.*',

    …

    'application.extensions.yiidebugtb.*',

),

и еще

'routes'=>array(

    array(

        'class'=>'XWebDebugRouter',

        'levels'=>'error, warning, trace, profile, info',

    ),

),

что мы умеем сейчас:

Показываем:

  • версия Yii
  • Конфигурация (globals, php, пробно request и yii::app())
  • Расход памяти

  • Время выполнения

  • Обращения к БД (отдельно от всего остального)

  • Прочие логи.

памятуя о печальном опыте предыдущей версии JS функция $ переименована в _$ - надеюсь в других JS скриптах _$ не используется.

вообщем, если кому надо - сообщайте о найденных глюках.

Супер! Мне понравился! Только несколько смущает файл "123"…

Если хочешь, я могу почистить твой код и можно выкладывать в общий доступ… Ибо код грязноват (чисто ИМХО, не обижайся). А в CSS заменить везде "0px" на "0".

Да и ещё могу одну функцию добавить - чтобы можно было в настройке выбирать в каком месте экрана показывать: слева или справа. Ибо мне, например справа неудобно - в моём приложении там ссылки находятся.

Я бы сделал что бы он был привязан к окошку браузера… У меня там наверху флэшка и она перекрывает половину тулбара…

2 cr0t: да бога ради. сообща доведем до такого ума, что yii будет экстеншеном к тулбару  ;D

2race1: z-index у тулбара 65536… сдается мне твоей флешке надобно wmode прописать… добавь в объект <param name="wmode" value="transparent">

типа так будет:

<object …>

  <param name="wmode" value="transparent">

если <embed тогда:

<embed wmode="transparent" …>

и будет счастье :)

Quote

2race1: z-index у тулбара 65536... сдается мне твоей флешке надобно wmode прописать...

О, спасибо! Только я имел в виду что бы тулбар всегда висел в углу окна, как старая версия. Position: fixed вроде. Теперь даже не знаю будет ли это удобнее :)

2dikoy: Нашел баг. Достаточно серьезный. При Аяксовых запросах этот гад себя посылает и получается тулбара - но работает только один. Вот думаю, может быть проверку сделать на существование такого элемента в dom-дереве по id, или он в DOM-дерево не попадает, может глючить в разных браузерах?