fa43a3b884ef21f6335948e61949d299c5270b88
Author: chawbacca
Date: 2009-11-26 13:28:20 -0600
diff --git a/controllers/components/toolbar.php b/controllers/components/toolbar.php
index d3c390d..eabd77b 100644
--- a/controllers/components/toolbar.php
+++ b/controllers/components/toolbar.php
@@ -18,7 +18,10 @@
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
**/
class ToolbarComponent extends Object {
+<<<<<<< HEAD:controllers/components/toolbar.php
+=======
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:controllers/components/toolbar.php
/**
* Settings for the Component
*
@@ -32,7 +35,10 @@ class ToolbarComponent extends Object {
'forceEnable' => false,
'autoRun' => true
);
+<<<<<<< HEAD:controllers/components/toolbar.php
+=======
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:controllers/components/toolbar.php
/**
* Controller instance reference
*
@@ -105,8 +111,16 @@ class ToolbarComponent extends Object {
$this->enabled = false;
return false;
}
+ if ($this->settings['autoRun'] == false && !isset($controller->params['url']['debug'])) {
+ $this->enabled = false;
+ return false;
+ }
App::import('Vendor', 'DebugKit.DebugKitDebugger');
+<<<<<<< HEAD:controllers/components/toolbar.php
+=======
+
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:controllers/components/toolbar.php
DebugKitDebugger::setMemoryPoint(__d('debug_kit', 'Component intitailization', true));
DebugKitDebugger::startTimer('componentInit', __d('debug_kit', 'Component initialization and startup', true));
@@ -748,16 +762,34 @@ class LogPanel extends DebugPanel {
* @return array
*/
function _parseFile($filename) {
- $file =& new File($filename);
- $contents = $file->read();
- $timePattern = '/(\d{4}-\d{2}\-\d{2}\s\d{1,2}\:\d{1,2}\:\d{1,2})/';
- $chunks = preg_split($timePattern, $contents, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
- for ($i = 0, $len = count($chunks); $i < $len; $i += 2) {
- if (strtotime($chunks[$i]) < $this->startTime) {
- unset($chunks[$i], $chunks[$i + 1]);
+ $fh = fopen($filename, 'r');
+ $timePattern = '/^(\d{4}-\d{2}\-\d{2}\s\d{1,2}\:\d{1,2}\:\d{1,2})\s(.*)/';
+
+ $out = array();
+ $entry = '';
+ $done = false;
+
+ while (!feof($fh)) {
+ $line = fgets($fh);
+ if (preg_match($timePattern, $line, $matches)) {
+ if (strtotime($matches[1]) < $this->startTime) {
+ continue;
+ }
+ $out[] = $matches[1];
+ $out[] = $matches[2];
+ } elseif (count($out) - 1 > 0) {
+ $currentIndex = count($out) - 1;
+ while (!feof($fh)) {
+ $line = fgets($fh);
+ if (preg_match($timePattern, $line)) {
+ break;
+ }
+ $out[$currentIndex] .= $line;
+ }
}
}
- return array_values($chunks);
+ fclose($fh);
+ return $out;
}
}
?>
\ No newline at end of file
diff --git a/tests/cases/controllers/components/toolbar.test.php b/tests/cases/controllers/components/toolbar.test.php
index c533a1f..016f95f 100644
--- a/tests/cases/controllers/components/toolbar.test.php
+++ b/tests/cases/controllers/components/toolbar.test.php
@@ -419,7 +419,7 @@ class DebugToolbarTestCase extends CakeTestCase {
* @return void
**/
function testLogPanel() {
- usleep(20);
+ sleep(1);
$this->Controller->log('This is a log I made this request');
$this->Controller->log('This is the second log I made this request');
$this->Controller->log('This time in the debug log!', LOG_DEBUG);
@@ -442,6 +442,23 @@ class DebugToolbarTestCase extends CakeTestCase {
$this->assertEqual(trim($result['content']['debug.log'][1]), 'Debug: This time in the debug log!');
$this->assertEqual(trim($result['content']['error.log'][1]), 'Error: This is a log I made this request');
+
+ $data = array(
+ 'Post' => array(
+ 'id' => 1,
+ 'title' => 'post!',
+ 'body' => 'some text here',
+ 'created' => '2009-11-07 23:23:23'
+ ),
+ 'Comment' => array(
+ 'id' => 23
+ )
+ );
+ $this->Controller->log($data);
+ $this->Controller->Component->beforeRender($this->Controller);
+ $result = $this->Controller->viewVars['debugToolbarPanels']['log'];
+ $this->assertPattern('/\[created\] => 2009-11-07 23:23:23/', $result['content']['error.log'][5]);
+ $this->assertPattern('/\[Comment\] => Array/', $result['content']['error.log'][5]);
}
/**
* Test that history state urls set prefix = null and admin = null so generated urls do not
diff --git a/tests/cases/vendors/debug_kit_debugger.test.php b/tests/cases/vendors/debug_kit_debugger.test.php
index 59b4354..5cf3a37 100644
--- a/tests/cases/vendors/debug_kit_debugger.test.php
+++ b/tests/cases/vendors/debug_kit_debugger.test.php
@@ -58,6 +58,16 @@ class DebugKitDebuggerTest extends CakeTestCase {
}
/**
+ * tearDown method
+ *
+ * @access public
+ * @return void
+ */
+ function tearDown() {
+ Configure::write('log', true);
+ DebugKitDebugger::clearTimers();
+ }
+/**
* Start Timer test
*
* @return void
diff --git a/tests/fixtures/empty b/tests/fixtures/empty
deleted file mode 100644
index e69de29..0000000
diff --git a/tests/groups/empty b/tests/groups/empty
deleted file mode 100644
index e69de29..0000000
diff --git a/vendors/css/debug_toolbar.css b/vendors/css/debug_toolbar.css
index 15a2e54..6cd2f91 100644
--- a/vendors/css/debug_toolbar.css
+++ b/vendors/css/debug_toolbar.css
@@ -96,12 +96,18 @@
#debug-kit-toolbar .panel-resize-region {
overflow:auto;
<<<<<<< HEAD:vendors/css/debug_toolbar.css
+<<<<<<< HEAD:vendors/css/debug_toolbar.css
box-shadow:0px 5px 6px #ccc;
=======
height:99%;
max-height: 550px;
padding:15px;
>>>>>>> 77265eee69c3c64e27be0f696258bf6616dcb6c4:vendors/css/debug_toolbar.css
+=======
+ height:99%;
+ max-height: 550px;
+ padding:15px;
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:vendors/css/debug_toolbar.css
}
#debug-kit-toolbar .panel-resize-handle {
@@ -117,9 +123,13 @@
-webkit-text-shadow:1px 1px #eee;
-moz-text-shadow:1px 1px #eee;
<<<<<<< HEAD:vendors/css/debug_toolbar.css
+<<<<<<< HEAD:vendors/css/debug_toolbar.css
=======
height:14px;
>>>>>>> 77265eee69c3c64e27be0f696258bf6616dcb6c4:vendors/css/debug_toolbar.css
+=======
+ height:14px;
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:vendors/css/debug_toolbar.css
}
/* Hide panel content by default */
diff --git a/vendors/debug_kit_debugger.php b/vendors/debug_kit_debugger.php
index 1d5e62f..5ce04b6 100644
--- a/vendors/debug_kit_debugger.php
+++ b/vendors/debug_kit_debugger.php
@@ -46,6 +46,12 @@ class DebugKitDebugger extends Debugger {
var $__memoryPoints = array();
/**
+ * Internal memory points array
+ *
+ * @var array
+ **/
+ var $__memoryPoints = array();
+/**
* destruct method
*
* Allow timer info to be displayed if the code dies or is being debugged before rendering the view
@@ -56,7 +62,11 @@ class DebugKitDebugger extends Debugger {
*/
function __destruct() {
$_this =& DebugKitDebugger::getInstance();
+<<<<<<< HEAD:vendors/debug_kit_debugger.php
if (Configure::read('debug') < 2 || empty($_this->__benchmarks)) {
+=======
+ if (Configure::read('debug') < 2 || !$_this->__benchmarks) {
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:vendors/debug_kit_debugger.php
return;
}
$timers = array_values(DebugKitDebugger::getTimers());
@@ -350,6 +360,57 @@ class DebugKitDebugger extends Debugger {
}
/**
+ * Stores a memory point in the internal tracker.
+ * Takes a optional message name which can be used to identify the memory point.
+ * If no message is supplied a debug_backtrace will be done to identifty the memory point.
+ * If you don't have memory_get_xx methods this will not work.
+ *
+ * @param string $message Message to identify this memory point.
+ * @return boolean
+ **/
+ function setMemoryPoint($message = null) {
+ $memoryUse = DebugKitDebugger::getMemoryUse();
+ if (!$message) {
+ $named = false;
+ $trace = debug_backtrace();
+ $message = Debugger::trimpath($trace[0]['file']) . ' line ' . $trace[0]['line'];
+ }
+ $self =& DebugKitDebugger::getInstance();
+ if (isset($self->__memoryPoints[$message])) {
+ $originalMessage = $message;
+ $i = 1;
+ while (isset($self->__memoryPoints[$message])) {
+ $i++;
+ $message = $originalMessage . ' #' . $i;
+ }
+ }
+ $self->__memoryPoints[$message] = $memoryUse;
+ return true;
+ }
+/**
+ * Get all the stored memory points
+ *
+ * @param boolean $clear Whether you want to clear the memory points as well. Defaults to false.
+ * @return array Array of memory marks stored so far.
+ **/
+ function getMemoryPoints($clear = false) {
+ $self =& DebugKitDebugger::getInstance();
+ $marks = $self->__memoryPoints;
+ if ($clear) {
+ $self->__memoryPoints = array();
+ }
+ return $marks;
+ }
+/**
+ * Clear out any existing memory points
+ *
+ * @return void
+ **/
+ function clearMemoryPoints() {
+ $self =& DebugKitDebugger::getInstance();
+ $self->__memoryPoints = array();
+ }
+/**
* Handles object conversion to debug string.
*
* @param string $var Object to convert
diff --git a/vendors/fire_cake.php b/vendors/fire_cake.php
index fd97324..d3faaaa 100644
--- a/vendors/fire_cake.php
+++ b/vendors/fire_cake.php
@@ -363,7 +363,9 @@ class FireCake extends Object {
$_this->_sendHeader('X-Wf-Protocol-1', 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
$_this->_sendHeader('X-Wf-1-Plugin-1', 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'. $_this->_version);
-
+ if ($type == $_this->_levels['groupStart']) {
+ $meta['Collapsed'] = 'true';
+ }
if ($type == $_this->_levels['dump']) {
$dump = $_this->jsonEncode($message);
$msg = '{"' . $label .'":' . $dump .'}';
diff --git a/vendors/img/cake.icon.png b/vendors/img/cake.icon.png
index f56f321..394fa42 100644
Binary files a/vendors/img/cake.icon.png and b/vendors/img/cake.icon.png differ
diff --git a/vendors/js/js_debug_toolbar.js b/vendors/js/js_debug_toolbar.js
index 81e7faa..f594567 100755
--- a/vendors/js/js_debug_toolbar.js
+++ b/vendors/js/js_debug_toolbar.js
@@ -54,6 +54,14 @@ DEBUGKIT.loader = function () {
DEBUGKIT.module('Util');
DEBUGKIT.Util.Element = {
+<<<<<<< HEAD:vendors/js/js_debug_toolbar.js
+=======
+ //test if an element is a name node.
+ nodeName: function (element, name) {
+ return element.nodeName && element.nodeName.toLowerCase() == name.toLowerCase();
+ },
+
+>>>>>>> d01f37f924e158b1f84c50dccff651cfa180b674:vendors/js/js_debug_toolbar.js
//return a boolean if the element has the classname
hasClass : function (element, className) {
if (!element.className) {
@@ -389,11 +397,11 @@ DEBUGKIT.toolbar = function () {
// Use event delegation to find original target.
function _delegateNeatArray (event) {
var clickedEl = event.target;
- while (clickedEl.nodeName.toUpperCase() !== 'LI') {
+ while (!Element.nodeName(clickedEl, 'LI')) {
clickedEl = clickedEl.parentNode;
}
var subUl = clickedEl.lastChild;
- if (subUl.nodeName.toUpperCase() != 'UL') {
+ if (!Element.nodeName(subUl, 'ul')) {
return;
}
var hide = Boolean(subUl.style.display === 'block');
@@ -446,7 +454,7 @@ DEBUGKIT.toolbar = function () {
// Add a panel to the toolbar
addPanel : function (tab) {
- if (!tab.nodeName || tab.nodeName.toUpperCase() !== 'LI') {
+ if (!Element.nodeName(tab, 'li')) {
throw ('Toolbar not found, make sure you loaded it.');
}
var panel = {
@@ -457,12 +465,11 @@ DEBUGKIT.toolbar = function () {
active : false
};
for (var i in tab.childNodes) {
- var element = tab.childNodes[i],
- tag = element.nodeName ? element.nodeName.toUpperCase() : false;
- if (tag === 'A') {
+ var element = tab.childNodes[i];
+ if (Element.nodeName(element, 'A')) {
panel.id = element.hash.replace(/^#/, '');
panel.button = element;
- } else if (tag === 'DIV') {
+ } else if (Element.nodeName(element, 'DIV')) {
panel.content = element;
}
}
@@ -504,9 +511,8 @@ DEBUGKIT.toolbar = function () {
}
for (var i in panel.content.childNodes) {
- var element = panel.content.childNodes[i],
- tag = element.nodeName ? element.nodeName.toUpperCase() : false;
- if (tag === 'DIV' && Element.hasClass(element, 'panel-resize-handle')) {
+ var element = panel.content.childNodes[i];
+ if (Element.nodeName(element, 'DIV') && Element.hasClass(element, 'panel-resize-handle')) {
Event.addEvent(element, 'mousedown', function (event) {
event.preventDefault();
diff --git a/views/elements/history_panel.ctp b/views/elements/history_panel.ctp
index 4f08eb4..712784b 100644
--- a/views/elements/history_panel.ctp
+++ b/views/elements/history_panel.ctp
@@ -53,23 +53,45 @@ DEBUGKIT.historyPanel = function () {
alert('Could not convert JSON response');
return false;
}
-
- for (var i in historyLinks) {
+
+ var i = historyLinks.length;
+ while (i--) {
Element.removeClass(historyLinks[i], 'loading');
}
+
for (var id in toolbar.panels) {
var panel = toolbar.panels[id];
if (panel.content === undefined || responseJson[id] === undefined) {
continue;
}
- var panelDivs = panel.content.childNodes;
- for (var i in panelDivs) {
+ var panelDivs = panel.content.childNodes,
+ i = panelDivs.length,
+ regionDiv;
+
+ while (i--) {
+ var panelRegion = panelDivs[i];
+ if (panelRegion.nodeType != 1) {
+ continue;
+ }
+ if (
+ Element.nodeName(panelRegion, 'DIV') &&
+ Element.hasClass(panelRegion, 'panel-resize-region')
+ ) {
+ regionDiv = panelRegion;
+ break;
+ }
+ }
+ if (!regionDiv) continue;
+
+ var regionDivs = regionDiv.childNodes,
+ i = regionDivs.length;
+
+ while (i--) {
//toggle history element, hide current request one.
- var panelContent = panelDivs[i],
- tag = panelContent.nodeName ? panelContent.nodeName.toUpperCase() : false;
- if (tag === 'DIV' && Element.hasClass(panelContent, 'panel-content-history')) {
+ var panelContent = regionDivs[i];
+ if (Element.nodeName(panelContent, 'DIV') && Element.hasClass(panelContent, 'panel-history')) {
var panelId = panelContent.id.replace('-history', '');
if (responseJson[panelId]) {
panelContent.innerHTML = responseJson[panelId];
@@ -82,7 +104,7 @@ DEBUGKIT.historyPanel = function () {
toolbar.makeNeatArray(lists);
}
Element.show(panelContent);
- } else if (tag === 'DIV') {
+ } else if (Element.nodeName(panelContent, 'DIV')) {
Element.hide(panelContent);
}
}
@@ -102,13 +124,34 @@ DEBUGKIT.historyPanel = function () {
if (panel.content === undefined) {
continue;
}
- var panelDivs = panel.content.childNodes;
- for (i in panelDivs) {
- panelContent = panelDivs[i];
- tag = panelContent.nodeName ? panelContent.nodeName.toUpperCase() : false;
- if (tag === 'DIV' && Element.hasClass(panelContent, 'panel-content-history')) {
+
+ var panelDivs = panel.content.childNodes,
+ i = panelDivs.length,
+ regionDiv;
+
+ while (i--) {
+ var panelRegion = panelDivs[i];
+ if (panelRegion.nodeType != 1) {
+ continue;
+ }
+ if (
+ Element.nodeName(panelRegion, 'DIV') &&
+ Element.hasClass(panelRegion, 'panel-resize-region')
+ ) {
+ regionDiv = panelRegion;
+ break;
+ }
+ }
+ if (!regionDiv) continue;
+
+ var regionDivs = regionDiv.childNodes,
+ i = regionDivs.length;
+
+ while (i--) {
+ panelContent = regionDivs[i];
+ if (Element.nodeName(panelContent, 'DIV') && Element.hasClass(panelContent, 'panel-history')) {
Element.hide(panelContent);
- } else if (tag === 'DIV') {
+ } else if (Element.nodeName(panelContent, 'DIV')) {
Element.show(panelContent);
}
}
diff --git a/views/elements/sql_log_panel.ctp b/views/elements/sql_log_panel.ctp
index 032e3fa..b2c0cd8 100644
--- a/views/elements/sql_log_panel.ctp
+++ b/views/elements/sql_log_panel.ctp
@@ -25,7 +25,7 @@
<h4><?php echo $dbName ?></h4>
<?php
$headers = array('Nr', 'Query', 'Error', 'Affected', 'Num. rows', 'Took (ms)');
- echo $toolbar->table($queryLog['queries'], $headers, array('title' => 'SQL Log ' . $dbName));
+ echo $toolbar->table(h($queryLog['queries']), $headers, array('title' => 'SQL Log ' . $dbName));
if (!empty($queryLog['explains'])):
$name = sprintf(__d('debug_kit', 'toggle (%s) query explains for %s', true), count($queryLog['explains']), $dbName);
@@ -35,7 +35,7 @@
foreach ($queryLog['explains'] as $explain):
echo $toolbar->message(__d('debug_kit', 'Query:', true), $explain['query']);
$headers = array_shift($explain['explain']);
- echo $toolbar->table($explain['explain'], $headers);
+ echo $toolbar->table(h($explain['explain']), $headers);
endforeach;
echo '</div>';
else:
@@ -62,12 +62,11 @@ DEBUGKIT.sqlLog = function () {
for (var i in buttons) {
var button = buttons[i];
if (Element.hasClass(button, 'show-slow')) {
- var nextDiv = button.nextSibling;
Event.addEvent(button, 'click', function (event) {
event.preventDefault();
- Element.toggle(nextDiv);
+ Element.toggle(this.nextSibling);
});
- Element.hide(nextDiv);
+ Element.hide(button.nextSibling);
}
}
