DebugToolbar Расширение

Не совсем понял, надо чтобы при аяксовых запросах тулбар возвращался или не надо?

по сути ничего сложного в том, чтобы сделать хоть 25 тулбаров нету, вопрос только в том - надо оно или нет (думаю не надо - но мало-ли :)

2dikoy:

Наоборот. Тулбар нужен только один. Иначе второй (и последующие вызовы) приходят с тулбаром, в котором информация об AJAX-вызове (его время выполнения, память и т.д.), а работает только ново-прибывший. Я хз, что поменялось, но моя версия не возвращалась с AJAX-ом… Установил твою - вот такая фигня.

…И, да, желательно его сделать "position: fixed;" для удобства, имхо.

то что поменялось - оно и понятно, в твоем стояла проверка на существование CWebApplication и типа запроса isAjaxRequest.

у меня не было - добавил.

дабы не плодить тут плоды, завел на http://code.google.com/p/yiidebugtb/ проект.

там можно и баги репортить и исходники качать и вообще безобразничать как гугл позволит.

вобщем тута продолжаем обсуждения обсуждать, а файлы оттедава забирать будем.

просьба великая - баги ссыпать туда же, на трекер.

сразу честно признаюсь - архивы архивировать зачастую лень, так что рекомендательно настаивается svn'у время обучательное уделить, коли не знакомы еще.

Учел сколько запомнил пожеланий.

Приподнаучил тулбар следующему:

  • Теперь расширение можно конфигурировать. Делается так:

Quote

array(

    'class'=>'XWebDebugRouter',

    ‘config’=>‘alignLeft, opaque, runInDebug, fixedPos, collapsed’,

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

),

что есть где:

  • alignLeft - соответственно располагать тулбар слева направо, а не иначе

  • opaque - когда тулбар свернут, иконка Yii будет почти прозрачной, дабы не мешаться.

  • runInDebug - тулбар будет отображаться только когда установлена константа YII_DEBUG

  • fixedPos - в зависимости от присутствия в строке конфига этого параметра, тулбар будет либо position: fixed, либо absolute

  • collapsed - если есть - тулбар при старте будет свернут (соответственно, если присутствует opaque - он еще будет и полупрозрачным, а если еще и alignLeft - то, в случае чего, тыкайте курсором мыши в левый верхний угол монитора  :)

собствено регистр написания параметров с строке имеет значение… пишите так как тут написано :)

проклятущий эксплорер, пришлось ради него писать отдельную функцию наведения/уведения мыши на/от дива…

использовать JQuery и прочее не хочу совсем - расширение должно быть самодостаточным… так, что в конечном итоге и фреймворк не нужен будет  ;)

some minor bugfixes :)

2dikoy:

Добавь меня в проект, чтобы получить доступ к правкам, моё мыло: kuznecov.sg@gmail.com

Усё! “Вычитал” код, расставил везде табуляцию вместо пробелов, поправил некоторые места (теперь, наверное, валидацию можно проходить ;D даже)… Добавил комментарии на инглише. Если где ошибся скажите, а потом можно будет упаковать и выложить в общий репозиторий экстеншенов.

Ещё раз напоминаем, где находится база кода: http://code.google.com/p/yiidebugtb/

Сам код можно получить так (для Linux):

svn checkout http://yiidebugtb.go…com/svn/trunk/ yiidebugtb-read-only

Для Windows пользователей, которые не знакомы с SVN (Tortoise, например) можно залезть по адресу: http://code.google.c…owse/#svn/trunk и скопировать себе исходные коды (там всего лишь 2 файла!).

а чем принципиально - пробелы или табуляция?

В Aptana(Eclipse) лучше выглядит… Намного…

И (для совсем гиков) - байт меньше файл весит ;)

А настроить, имхо, редактор - легко.

Кстати, если не пользуетесь Eclipse+PDT или Apatana'ой - советую. Подсказки и автодополнени настроить легко…

P.S. Было время, когда я в PSPad'е писал… Эх…

пользуюсь netbeans’ом много удобней eclipse. хотя это как спор что лучше С или паскаль. :)

yml-файлы не допускают табуляции, поэтому, по привычке, пробелы и стоят :)

Quote

В Aptana(Eclipse) лучше выглядит... Намного...

И (для совсем гиков) - байт меньше файл весит ;)

А настроить, имхо, редактор - легко.

[i]

А пробелы выглядят нормально везде - и в настроенной среде и в блокноте. На авто-форматирование использование пробелов/табуляций не влияет (автоотступы по Enter).

А табы выглядят как хотят в разных редакторах. Экономия 100 байт на пробелах - вообще мелочи и не считается.

Табы - зло, никакой от них пользы! :)

  • А какая польза от этой картины?

  • От этой картины большая польза - она дырку на стене загораживает :) © Простоквашино.

Бог с ними с табами, тем более, что Quiang почему-то везде использует табы, значит идеологически правильно в данном случае использовать табы.

Обновился YiiDebugToolbar.

Вы не поверите, но он стал лучше :) И да же немного другой :)

Что изменилось:

  1. Более полная информация о нутрях фреймворка, PHP и прочего - по крайнер мере насколько Yii дает это сделать.

  2. Подсветка синтаксиса в отчете о конфигурации.

  3. Два варианта вывода отчета - массивами (PHP-var_dump-like) и yaml-стилем (ну уж простите, не могу отказать себе в привычном отображении:) - за вид вывода отвечает параметр конфигурации yamlStyle.

  4. Поправлены css на предмет некорректного вывода шрифтов.

  5. Исправлены все ошибки, кроме тех которые еще не нашлись :)

В это строчке нету ли ошибки?

'debug' => DEFINED('YII_DEBUG') ? 'on' : 'off',

Я так понимаю константа будет объявлена в любом случае (когда true, когда false), поэтому тулбар всегда будет в режиме отладки? Может так лучше:

'debug' => DEFINED('YII_DEBUG') && YII_DEBUG ? 'on' : 'off',

И ещё - тулбар не прячется совсем если убрать YII_DEBUG? У меня он отображается и в отладке и не в отладке (с модифицированным кодом)

Вроде как нет ошибки.

Только что у себя проверил.

Eсли в бутстраппере (index.php) стоит:



...


defined('YII_DEBUG') or define('YII_DEBUG',true);


...


и в конфигурации (protected/config/main.php) мы поставили отображать тулбар только в дебаг режиме:



...


'config'=>'alignLeft, runInDebug, fixedPos, opaque, collapsed',


...


То тулбар отображается.

Если мы выставим:



...


defined('YII_DEBUG') or define('YII_DEBUG',false);


...


А остальное трогать не будем (специально можно такой файл на продакш-сервер выложить), то ничего не отображается.

P.S. На всякий случай возьми последнюю версию из SVN’а:

[tt]svn checkout http://yiidebugtb.go…com/svn/trunk/ yiidebugtb-read-only[/tt]

Ага, версия последняя. Ещё "бага" такого же плана:

//Checking for an DEBUG mode of running app

if (isset($config['runInDebug']) && (!DEFINED('YII_DEBUG') || YII_DEBUG == false)) return;

В общем с этими правками работает как ожидается, без этих правок на YII_DEBUG не реагирует. PHP/5.2.8

Странно. При установке константы YII_DEBUG в false вообще не отображается тулбар, ему плевать есть в конфигурации runInDebug или нет, с новым кодом или нет.

Но сейчас нет времени с этим разбираться. Может позже разберусь.

Думал я ленивый, ан нет :) неужто сложно добавить проблему на трекере?

вот тута: ’ class=‘bbc_url’ title=‘External link’ rel=‘nofollow’>http://code.google.c…b/issues/entry]

ну да ладно, по пунктам:

2 race1:

DEFINED(const) не определет константу - ни по документации по php, ни по результатам экпериментов.

2all:

вобщем по тому что я понял из переписки выше и ковыряний в детище, получается:

  1. При установке YII_DEBUG (неважно в true, false или число pi) тулбар отображется вне зависимости от runInDebug.

  2. при коментировании YII_DEBUG (неопределенность) и установке runInDebug тулбар не отображается.

добавил проверку на false YII_DEBUG (по совету race1).

вывод при неопределенности константы YII_DEBUG или YII_DEBUG == false  поправил.

собственно загадка крылась в:



abstract class CLogRoute extends CComponent 


...


	public function collectLogs($logger)


	{


		$logs=$logger->getLogs($this->levels,$this->categories);


>>>		if(!empty($logs))


			$this->processLogs($logs);


	}


...


}


как оказывается, Yii, в проуктиве не ведет логи или может быть ведет строго определенные логи… чудно, но разбираться потом с этим буду.

в остальном вроде все ок. ну пока других ошибок не нашлось.

PS: в продуктиве (YII_DEBUG неопределено или false) кроме отчета о конфигурации, объема памяти и времени выполнения ничего нету (собственно это я уже писал выше - нету логов).

Quote

ну да ладно, по пунктам:

2 race1:

DEFINED(const) не определет константу - ни по документации по php, ни по результатам экпериментов.

Ага :) Начнём с документации:

Quote

An Yii application can run in either debug or production mode according to the constant

value YII DEBUG. By default, this constant value is defined as false, meaning production

mode. To run in debug mode, dene this constant as true before including the yii.php file.

Отсюда следует что константа YII_DEBUG определена всегда.

Дальше смотрим код YiiBase.php:

Quote

/**
  • This constant defines whether the application should be in debug mode or not. Defaults to false.

*/

defined('YII_DEBUG') or define('YII_DEBUG',false);

Это подтверждает, что константа будет объявлена в любом случае. Если она объявлена раньше (в нашем index.php) то её значение не меняется, если не объявлена ранее - будет YII_DEBUG == false

Последнее - definied не определяет константу, она проверяет её наличие. Посмотрев на два высказанных мной утверждения (а именно - YII_DEBUG определена всегда) можно сделать вывод, что код DEFINED('YII_DEBUG') вегда будет равен истине, а так же

Quote

'debug' => DEFINED('YII_DEBUG') 'on' : 'off',

тулбар будет всегда в режиме отладки.

Как-то так :)

2race1:

доходчиво :) впечатлило, сам дурак посыпаю голову пеплом :)

ну не могу же я просто так сдаться без боя  ;D продолжаю настаивать, что мое утверждение верно:

Quote

DEFINED(const) не определет константу - ни по документации по php, ни по результатам экпериментов.

код на предмет DEBUG вечный on поправил :)

Quote

2race1:

доходчиво :) впечатлило, сам дурак посыпаю голову пеплом :)

ну не могу же я просто так сдаться без боя  ;D продолжаю настаивать, что мое утверждение верно:

Quote

DEFINED(const) не определет константу - ни по документации по php, ни по результатам экпериментов.

Забрал новую версию, вроде работает :) Спасибо.

2dikoy:

Так что, может сменим лицензию с Mozilla'ы на двухпунктовую BSD? Вроде как бы я изначальный автор и хотел бы под этой лицензией публиковать это расширение. Не претендую на авторство (ибо текущий тулбар очень и очень сильно переработан и автором его является по существу dikoy, но …) ну, в общем, я имею в виду то, что давайте сменим лицензию на более либеральную (BSD или New BSD)…