Index: branches/5.3.x/core/kernel/utility/debugger.php
===================================================================
diff -u -r15911 -r15948
--- branches/5.3.x/core/kernel/utility/debugger.php (.../debugger.php) (revision 15911)
+++ branches/5.3.x/core/kernel/utility/debugger.php (.../debugger.php) (revision 15948)
@@ -1,6 +1,6 @@
Data[$data_index];
+
+ switch ($data['debug_type']) {
+ case 'html':
+ if ( strpos($data['html'], 'SQL Total time') !== false ) {
+ return self::ROW_TYPE_SQL;
+ }
+ break;
+
+ case 'error':
+ $error_map = array(
+ 'Fatal Error' => self::ROW_TYPE_ERROR,
+ 'Warning' => self::ROW_TYPE_WARNING,
+ 'Notice' => self::ROW_TYPE_NOTICE,
+ );
+
+ return $error_map[$this->getErrorNameByCode($data['no'])];
+ break;
+
+ case 'exception':
+ return self::ROW_TYPE_ERROR;
+ break;
+
+ case 'profiler':
+ if ( preg_match('/^sql_/', $data['profile_key']) ) {
+ return self::ROW_TYPE_SQL;
+ }
+ break;
+ }
+
+ return self::ROW_TYPE_OTHER;
+ }
+
+ /**
* Returns debugger report window width excluding scrollbar
*
* @return int
@@ -1468,7 +1522,7 @@
$this->appendSession(); // show php session if any
// ensure, that 1st line of debug output always is this one:
- $top_line = '
';
+ $top_line = '';
$this->appendHTML($top_line);
$this->moveToBegin(1);
@@ -1552,7 +1606,10 @@
$lineCount = count($this->Data);
while ( $i < $lineCount ) {
- fwrite($fp, $this->prepareHTML($i) . $this->rowSeparator);
+ $html = $this->prepareHTML($i);
+ $row_type = $this->getRowType($i);
+
+ fwrite($fp, json_encode(Array ('html' => $html, 'row_type' => $row_type)) . $this->rowSeparator);
$i++;
}
@@ -1569,6 +1626,7 @@
$dbg_path = str_replace(FULL_PATH, '', $this->tempFolder);
$debugger_params = Array (
+ 'FilterTypes' => $this->_filterTypes,
'RowSeparator' => $this->rowSeparator,
'ErrorsCount' => (int)$this->getProfilerTotal('error_handling'),
'IsFatalError' => $this->IsFatalError,
@@ -1634,6 +1692,17 @@
return '';
}
+ function getFilterDropdown()
+ {
+ $filter_options = '';
+
+ foreach ( $this->_filterTypes as $filter_type ) {
+ $filter_options .= '';
+ }
+
+ return 'Show: ';
+ }
+
function getMemoryUsed($debugger_start)
{
if ( !isset($this->ProfilerTotals['error_handling']) ) {
Index: branches/5.3.x/core/kernel/utility/debugger/debugger.js
===================================================================
diff -u -r15902 -r15948
--- branches/5.3.x/core/kernel/utility/debugger/debugger.js (.../debugger.js) (revision 15902)
+++ branches/5.3.x/core/kernel/utility/debugger/debugger.js (.../debugger.js) (revision 15948)
@@ -60,6 +60,7 @@
// Debugger
function Debugger($params) {
this.RowSeparator = '';
+ this.FilterTypes = $params['FilterTypes'];
this.IsFatalError = false;
this.ErrorsCount = 0;
this.SQLCount = 0;
@@ -215,11 +216,21 @@
this.MakeDragable('debug_toolbar_span', function() {}, function() {}, function() {});
}
-Debugger.prototype.AppendRow = function($html) {
+Debugger.prototype.AppendRow = function($html, $row_type) {
+ $row_type = $row_type || 'other';
this.RowCount++;
var $tr = document.createElement('TR');
this.DebuggerTable.appendChild($tr);
$tr.className = 'debug_row_' + (this.RowCount % 2 ? 'odd' : 'even');
+
+ if ( this.RowCount > 2 ) {
+ $tr.setAttribute('data-row-type', $row_type);
+
+ if ( $row_type == 'error' ) {
+ document.getElementById('debug_row_' + (this.RowCount -1 )).setAttribute('data-row-type', 'error');
+ }
+ }
+
$tr.id = 'debug_row_' + this.RowCount;
var $td = document.createElement('TD');
$td.className = 'debug_cell';
@@ -365,6 +376,22 @@
if ($e.stopPropagation) $e.stopPropagation();
}
+Debugger.prototype.Filter = function() {
+
+ var $new_filter = document.getElementById('dbg_filter').value;
+ var $container_class_name = 'debug_layer_container';
+
+ if ( $new_filter != '' ) {
+ for (var index = 0; index < this.FilterTypes.length; ++index) {
+ if ( this.FilterTypes[index] != $new_filter ) {
+ $container_class_name += ' dbg-' + this.FilterTypes[index] + '-row-hidden';
+ }
+ }
+ }
+
+ this.DebuggerDIV.className = $container_class_name;
+}
+
Debugger.prototype.Toggle = function($KeyCode) {
if(!this.DebuggerDIV) return false;
this.IsVisible = this.DebuggerDIV.style.display == 'none' ? false : true;
@@ -400,7 +427,8 @@
}
for (var $i = 0; $i < contents.length - 1; $i++) {
- p_object.AppendRow(contents[$i]);
+ $json = eval('(' + contents[$i] + ')');
+ p_object.AppendRow($json['html'], $json['row_type']);
}
if ( p_object.jQueryFound() ) {
Index: branches/5.3.x/core/kernel/utility/debugger/debugger.css
===================================================================
diff -u -r15677 -r15948
--- branches/5.3.x/core/kernel/utility/debugger/debugger.css (.../debugger.css) (revision 15677)
+++ branches/5.3.x/core/kernel/utility/debugger/debugger.css (.../debugger.css) (revision 15948)
@@ -132,4 +132,6 @@
padding: 0px;
}
-
+.dbg-error-row-hidden tr[data-row-type="error"], .dbg-warning-row-hidden tr[data-row-type="warning"],
+.dbg-notice-row-hidden tr[data-row-type="notice"], .dbg-sql-row-hidden tr[data-row-type="sql"],
+.dbg-other-row-hidden tr[data-row-type="other"] {display: none}
\ No newline at end of file