diff --git a/framework/yii/base/View.php b/framework/yii/base/View.php
index a931a1b..e4485ef 100644
--- a/framework/yii/base/View.php
+++ b/framework/yii/base/View.php
@@ -25,14 +25,22 @@ use yii\widgets\FragmentCache;
class View extends Component
{
/**
- * @event ViewEvent an event that is triggered by [[beginPage()]].
+ * @event Event an event that is triggered by [[beginPage()]].
*/
const EVENT_BEGIN_PAGE = 'beginPage';
/**
- * @event ViewEvent an event that is triggered by [[endPage()]].
+ * @event Event an event that is triggered by [[endPage()]].
*/
const EVENT_END_PAGE = 'endPage';
/**
+ * @event Event an event that is triggered by [[beginBody()]].
+ */
+ const EVENT_BEGIN_BODY = 'beginBody';
+ /**
+ * @event Event an event that is triggered by [[endBody()]].
+ */
+ const EVENT_END_BODY = 'endBody';
+ /**
* @event ViewEvent an event that is triggered by [[renderFile()]] right before it renders a view file.
*/
const EVENT_BEFORE_RENDER = 'beforeRender';
@@ -532,6 +540,7 @@ class View extends Component
public function beginBody()
{
echo self::PL_BODY_BEGIN;
+ $this->trigger(self::EVENT_BEGIN_BODY);
}
/**
@@ -539,6 +548,7 @@ class View extends Component
*/
public function endBody()
{
+ $this->trigger(self::EVENT_END_BODY);
echo self::PL_BODY_END;
}
diff --git a/framework/yii/debug/Toolbar.php b/framework/yii/debug/Debugger.php
similarity index 70%
rename from framework/yii/debug/Toolbar.php
rename to framework/yii/debug/Debugger.php
index c205277..93ccc26 100644
--- a/framework/yii/debug/Toolbar.php
+++ b/framework/yii/debug/Debugger.php
@@ -8,31 +8,47 @@
namespace yii\debug;
use Yii;
-use yii\base\Widget;
+use yii\base\Component;
+use yii\base\View;
use yii\helpers\Html;
/**
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
-class Toolbar extends Widget
+class Debugger extends Component
{
public $debugAction = 'debug/default/toolbar';
+ public $panels;
- public function run()
+ public function init()
{
- if (Yii::$app->hasModule('debug')) {
- $id = 'yii-debug-toolbar';
- $url = Yii::$app->getUrlManager()->createUrl($this->debugAction, array(
- 'tag' => Yii::getLogger()->tag,
- ));
- $view = $this->getView();
- $view->registerJs("yii.debug.load('$id', '$url');");
- $view->registerAssetBundle('yii/debug');
- echo Html::tag('div', '', array(
- 'id' => $id,
- 'style' => 'display: none',
- ));
+ parent::init();
+ Yii::$app->setModule('debug', array(
+ 'class' => 'yii\debug\Module',
+ 'panels' => $this->panels,
+ ));
+ Yii::$app->log->targets[] = new LogTarget;
+ Yii::$app->getView()->on(View::EVENT_END_BODY, array($this, 'renderToolbar'));
+ }
+
+ public function renderToolbar($event)
+ {
+ if (Yii::$app->getModule('debug', false) !== null) {
+ return;
}
+
+ /** @var View $view */
+ $id = 'yii-debug-toolbar';
+ $url = Yii::$app->getUrlManager()->createUrl($this->debugAction, array(
+ 'tag' => Yii::getLogger()->tag,
+ ));
+ $view = $event->sender;
+ $view->registerJs("yii.debug.load('$id', '$url');");
+ $view->registerAssetBundle('yii/debug');
+ echo Html::tag('div', '', array(
+ 'id' => $id,
+ 'style' => 'display: none',
+ ));
}
}
diff --git a/framework/yii/logging/DebugTarget.php b/framework/yii/debug/LogTarget.php
similarity index 96%
rename from framework/yii/logging/DebugTarget.php
rename to framework/yii/debug/LogTarget.php
index 92a74d6..1192cb3 100644
--- a/framework/yii/logging/DebugTarget.php
+++ b/framework/yii/debug/LogTarget.php
@@ -5,15 +5,16 @@
* @license http://www.yiiframework.com/license/
*/
-namespace yii\logging;
+namespace yii\debug;
use Yii;
+use yii\logging\Target;
/**
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
-class DebugTarget extends Target
+class LogTarget extends Target
{
public $maxLogFiles = 20;
@@ -72,6 +73,7 @@ class DebugTarget extends Target
$iterator = new \DirectoryIterator(Yii::$app->getRuntimePath() . '/debug');
$files = array();
foreach ($iterator as $file) {
+ /** @var \DirectoryIterator $file */
if (preg_match('/^[\d\-]+\.log$/', $file->getFileName()) && $file->isFile()) {
$files[] = $file->getPathname();
}
diff --git a/framework/yii/debug/Module.php b/framework/yii/debug/Module.php
index a680f53..a0cf883 100644
--- a/framework/yii/debug/Module.php
+++ b/framework/yii/debug/Module.php
@@ -14,4 +14,5 @@ namespace yii\debug;
class Module extends \yii\base\Module
{
public $controllerNamespace = 'yii\debug\controllers';
+ public $panels;
}
diff --git a/framework/yii/debug/controllers/DefaultController.php b/framework/yii/debug/controllers/DefaultController.php
index f1160b1..56d583f 100644
--- a/framework/yii/debug/controllers/DefaultController.php
+++ b/framework/yii/debug/controllers/DefaultController.php
@@ -16,9 +16,11 @@ use yii\web\Controller;
*/
class DefaultController extends Controller
{
+ public $layout = 'main';
+
public function actionIndex($tag)
{
- echo $tag;
+ return $this->render('index');
}
public function actionToolbar($tag)
@@ -26,9 +28,10 @@ class DefaultController extends Controller
$file = Yii::$app->getRuntimePath() . "/debug/$tag.log";
if (preg_match('/^[\w\-]+$/', $tag) && is_file($file)) {
$data = json_decode(file_get_contents($file), true);
- echo $this->renderPartial('toolbar', $data);
+ $data['tag'] = $tag;
+ return $this->renderPartial('toolbar', $data);
} else {
- echo "Unable to find debug data tagged with '$tag'.";
+ return "Unable to find debug data tagged with '$tag'.";
}
}
}
diff --git a/framework/yii/debug/views/default/index.php b/framework/yii/debug/views/default/index.php
new file mode 100644
index 0000000..57cf853
--- /dev/null
+++ b/framework/yii/debug/views/default/index.php
@@ -0,0 +1 @@
+here we are
diff --git a/framework/yii/debug/views/default/toolbar.php b/framework/yii/debug/views/default/toolbar.php
index 0b08d4b..27f02f8 100644
--- a/framework/yii/debug/views/default/toolbar.php
+++ b/framework/yii/debug/views/default/toolbar.php
@@ -19,21 +19,22 @@ echo Html::style("
margin: 0 10px;
");
?>
+<div id="yii-debug-toolbar">
+ <div class="yii-debug-toolbar-block">
+ <?php echo Html::a('more details', array('index', 'tag' => $tag)); ?>
+ </div>
-<div class="yii-debug-toolbar-block">
-</div>
-
-<div class="yii-debug-toolbar-block">
-Peak memory: <?php echo sprintf('%.2fMB', $memory / 1048576); ?>
-</div>
+ <div class="yii-debug-toolbar-block">
+ Peak memory: <?php echo sprintf('%.2fMB', $memory / 1048576); ?>
+ </div>
-<div class="yii-debug-toolbar-block">
-Time spent: <?php echo sprintf('%.3fs', $time); ?>
-</div>
+ <div class="yii-debug-toolbar-block">
+ Time spent: <?php echo sprintf('%.3fs', $time); ?>
+ </div>
-<div class="yii-debug-toolbar-block">
-</div>
+ <div class="yii-debug-toolbar-block">
+ </div>
-<div class="yii-debug-toolbar-block">
+ <div class="yii-debug-toolbar-block">
+ </div>
</div>
-
diff --git a/framework/yii/debug/views/layouts/main.php b/framework/yii/debug/views/layouts/main.php
new file mode 100644
index 0000000..c43f3ff
--- /dev/null
+++ b/framework/yii/debug/views/layouts/main.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * @var \yii\base\View $this
+ * @var string $content
+ */
+use yii\helpers\Html;
+?>
+<!DOCTYPE html>
+<html>
+<?php $this->beginPage(); ?>
+<head>
+ <title><?php echo Html::encode($this->title); ?></title>
+ <?php $this->head(); ?>
+</head>
+<body>
+<?php $this->beginBody(); ?>
+<?php echo $content; ?>
+<?php $this->endBody(); ?>
+</body>
+<?php $this->endPage(); ?>
+</html>