Removed the deprecated assign by reference from the new operator
git-svn-id: file:///svn-source/pmgr/branches/v0.3_php5.3_support@1007 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
@@ -1,471 +1,471 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* DebugKit DebugToolbar Component
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.cake.libs.
|
||||
* @since CakePHP v 1.2.0.4487
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
class ToolbarComponent extends Object {
|
||||
/**
|
||||
* Controller instance reference
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
var $controller;
|
||||
/**
|
||||
* Components used by DebugToolbar
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $components = array('RequestHandler');
|
||||
/**
|
||||
* The default panels the toolbar uses.
|
||||
* which panels are used can be configured when attaching the component
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $_defaultPanels = array('session', 'request', 'sqlLog', 'timer', 'log', 'memory', 'variables');
|
||||
/**
|
||||
* Loaded panel objects.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $panels = array();
|
||||
|
||||
/**
|
||||
* fallback for javascript settings
|
||||
*
|
||||
* @var array
|
||||
**/
|
||||
var $_defaultJavascript = array(
|
||||
'behavior' => '/debug_kit/js/js_debug_toolbar'
|
||||
);
|
||||
/**
|
||||
* javascript files component will be using.
|
||||
*
|
||||
* @var array
|
||||
**/
|
||||
var $javascript = array();
|
||||
/**
|
||||
* initialize
|
||||
*
|
||||
* If debug is off the component will be disabled and not do any further time tracking
|
||||
* or load the toolbar helper.
|
||||
*
|
||||
* @return bool
|
||||
**/
|
||||
function initialize(&$controller, $settings) {
|
||||
if (Configure::read('debug') == 0) {
|
||||
$this->enabled = false;
|
||||
return false;
|
||||
}
|
||||
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
||||
|
||||
DebugKitDebugger::startTimer('componentInit', __('Component initialization and startup', true));
|
||||
if (!isset($settings['panels'])) {
|
||||
$settings['panels'] = $this->_defaultPanels;
|
||||
}
|
||||
|
||||
if (isset($settings['javascript'])) {
|
||||
$settings['javascript'] = $this->_setJavascript($settings['javascript']);
|
||||
} else {
|
||||
$settings['javascript'] = $this->_defaultJavascript;
|
||||
}
|
||||
$this->_loadPanels($settings['panels']);
|
||||
unset($settings['panels']);
|
||||
|
||||
$this->_set($settings);
|
||||
$this->controller =& $controller;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Component Startup
|
||||
*
|
||||
* @return bool
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
$currentViewClass = $controller->view;
|
||||
$this->_makeViewClass($currentViewClass);
|
||||
$controller->view = 'DebugKit.Debug';
|
||||
if (!isset($controller->params['url']['ext']) || (isset($controller->params['url']['ext']) && $controller->params['url']['ext'] == 'html')) {
|
||||
$format = 'Html';
|
||||
} else {
|
||||
$format = 'FirePhp';
|
||||
}
|
||||
$controller->helpers['DebugKit.Toolbar'] = array('output' => sprintf('DebugKit.%sToolbar', $format));
|
||||
$panels = array_keys($this->panels);
|
||||
foreach ($panels as $panelName) {
|
||||
$this->panels[$panelName]->startup($controller);
|
||||
}
|
||||
DebugKitDebugger::stopTimer('componentInit');
|
||||
DebugKitDebugger::startTimer('controllerAction', __('Controller Action', true));
|
||||
}
|
||||
/**
|
||||
* beforeRender callback
|
||||
*
|
||||
* Calls beforeRender on all the panels and set the aggregate to the controller.
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function beforeRender(&$controller) {
|
||||
DebugKitDebugger::stopTimer('controllerAction');
|
||||
$vars = array();
|
||||
$panels = array_keys($this->panels);
|
||||
|
||||
foreach ($panels as $panelName) {
|
||||
$panel =& $this->panels[$panelName];
|
||||
$vars[$panelName]['content'] = $panel->beforeRender($controller);
|
||||
$elementName = Inflector::underscore($panelName) . '_panel';
|
||||
if (isset($panel->elementName)) {
|
||||
$elementName = $panel->elementName;
|
||||
}
|
||||
$vars[$panelName]['elementName'] = $elementName;
|
||||
$vars[$panelName]['plugin'] = $panel->plugin;
|
||||
$vars[$panelName]['disableTimer'] = true;
|
||||
}
|
||||
|
||||
$controller->set(array('debugToolbarPanels' => $vars, 'debugToolbarJavascript' => $this->javascript));
|
||||
DebugKitDebugger::startTimer('controllerRender', __('Render Controller Action', true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Load Panels used in the debug toolbar
|
||||
*
|
||||
* @return void
|
||||
* @access protected
|
||||
**/
|
||||
function _loadPanels($panels) {
|
||||
foreach ($panels as $panel) {
|
||||
$className = $panel . 'Panel';
|
||||
if (!class_exists($className) && !App::import('Vendor', $className)) {
|
||||
trigger_error(sprintf(__('Could not load DebugToolbar panel %s', true), $panel), E_USER_WARNING);
|
||||
continue;
|
||||
}
|
||||
$panelObj =& new $className();
|
||||
if (is_subclass_of($panelObj, 'DebugPanel') || is_subclass_of($panelObj, 'debugpanel')) {
|
||||
$this->panels[$panel] =& $panelObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the javascript to user scripts.
|
||||
*
|
||||
* Set either script key to false to exclude it from the rendered layout.
|
||||
*
|
||||
* @param array $scripts Javascript config information
|
||||
* @return array
|
||||
* @access protected
|
||||
**/
|
||||
function _setJavascript($scripts) {
|
||||
$behavior = false;
|
||||
if (!is_array($scripts)) {
|
||||
$scripts = (array)$scripts;
|
||||
}
|
||||
if (isset($scripts[0])) {
|
||||
$behavior = $scripts[0];
|
||||
}
|
||||
if (isset($scripts['behavior'])) {
|
||||
$behavior = $scripts['behavior'];
|
||||
}
|
||||
if (!$behavior) {
|
||||
return array();
|
||||
} elseif ($behavior === true) {
|
||||
$behavior = 'js';
|
||||
}
|
||||
if (strpos($behavior, '/') !== 0) {
|
||||
$behavior .= '_debug_toolbar';
|
||||
}
|
||||
$pluginFile = APP . 'plugins' . DS . 'debug_kit' . DS . 'vendors' . DS . 'js' . DS . $behavior . '.js';
|
||||
if (file_exists($pluginFile)) {
|
||||
$behavior = '/debug_kit/js/' . $behavior . '.js';
|
||||
}
|
||||
return compact('behavior');
|
||||
}
|
||||
/**
|
||||
* Makes the DoppleGangerView class if it doesn't already exist.
|
||||
* This allows DebugView to be compatible with all view classes.
|
||||
*
|
||||
* @param string $baseClassName
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
function _makeViewClass($baseClassName) {
|
||||
if (!class_exists('DoppelGangerView')) {
|
||||
App::import('View', $baseClassName);
|
||||
if (strpos('View', $baseClassName) === false) {
|
||||
$baseClassName .= 'View';
|
||||
}
|
||||
$class = "class DoppelGangerView extends $baseClassName {}";
|
||||
eval($class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Debug Panel
|
||||
*
|
||||
* Abstract class for debug panels.
|
||||
*
|
||||
* @package cake.debug_kit
|
||||
*/
|
||||
class DebugPanel extends Object {
|
||||
/**
|
||||
* Defines which plugin this panel is from so the element can be located.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
var $plugin = null;
|
||||
/**
|
||||
* startup the panel
|
||||
*
|
||||
* Pull information from the controller / request
|
||||
*
|
||||
* @param object $controller Controller reference.
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) { }
|
||||
|
||||
/**
|
||||
* Prepare output vars before Controller Rendering.
|
||||
*
|
||||
* @param object $controller Controller reference.
|
||||
* @return void
|
||||
**/
|
||||
function beforeRender(&$controller) { }
|
||||
}
|
||||
|
||||
/**
|
||||
* Variables Panel
|
||||
*
|
||||
* Provides debug information on the View variables.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class VariablesPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
}
|
||||
|
||||
/**
|
||||
* Session Panel
|
||||
*
|
||||
* Provides debug information on the Session contents.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class SessionPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* beforeRender callback
|
||||
*
|
||||
* @param object $controller
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
function beforeRender(&$controller) {
|
||||
return $controller->Session->read();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request Panel
|
||||
*
|
||||
* Provides debug information on the Current request params.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class RequestPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* beforeRender callback - grabs request params
|
||||
*
|
||||
* @return array
|
||||
**/
|
||||
function beforeRender(&$controller) {
|
||||
$out = array();
|
||||
$out['params'] = $controller->params;
|
||||
if (isset($controller->Cookie)) {
|
||||
$out['cookie'] = $controller->Cookie->read();
|
||||
}
|
||||
$out['get'] = $_GET;
|
||||
$out['currentRoute'] = Router::currentRoute();
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Timer Panel
|
||||
*
|
||||
* Provides debug information on all timers used in a request.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class TimerPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* startup - add in necessary helpers
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
if (!in_array('Number', $controller->helpers)) {
|
||||
$controller->helpers[] = 'Number';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Memory Panel
|
||||
*
|
||||
* Provides debug information on the memory consumption.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class MemoryPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* startup - add in necessary helpers
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
if (!in_array('Number', $controller->helpers)) {
|
||||
$controller->helpers[] = 'Number';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* sqlLog Panel
|
||||
*
|
||||
* Provides debug information on the SQL logs and provides links to an ajax explain interface.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class sqlLogPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
|
||||
var $dbConfigs = array();
|
||||
/**
|
||||
* get db configs.
|
||||
*
|
||||
* @param string $controller
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function startUp(&$controller) {
|
||||
if (!class_exists('ConnectionManager')) {
|
||||
$this->dbConfigs = array();
|
||||
return false;
|
||||
}
|
||||
$this->dbConfigs = ConnectionManager::sourceList();
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Get Sql Logs for each DB config
|
||||
*
|
||||
* @param string $controller
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function beforeRender(&$controller) {
|
||||
$queryLogs = array();
|
||||
if (!class_exists('ConnectionManager')) {
|
||||
return array();
|
||||
}
|
||||
foreach ($this->dbConfigs as $configName) {
|
||||
$db =& ConnectionManager::getDataSource($configName);
|
||||
if ($db->isInterfaceSupported('showLog')) {
|
||||
ob_start();
|
||||
$db->showLog();
|
||||
$queryLogs[$configName] = ob_get_clean();
|
||||
}
|
||||
}
|
||||
return $queryLogs;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Log Panel - Reads log entries made this request.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
*/
|
||||
class LogPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* Log files to scan
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $logFiles = array('error.log', 'debug.log');
|
||||
/**
|
||||
* startup
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
if (!class_exists('CakeLog')) {
|
||||
App::import('Core', 'Log');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* beforeRender Callback
|
||||
*
|
||||
* @return array
|
||||
**/
|
||||
function beforeRender(&$controller) {
|
||||
$this->startTime = DebugKitDebugger::requestStartTime();
|
||||
$this->currentTime = DebugKitDebugger::requestTime();
|
||||
$out = array();
|
||||
foreach ($this->logFiles as $log) {
|
||||
$file = LOGS . $log;
|
||||
if (!file_exists($file)) {
|
||||
continue;
|
||||
}
|
||||
$out[$log] = $this->_parseFile($file);
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
/**
|
||||
* parse a log file and find the relevant entries
|
||||
*
|
||||
* @param string $filename Name of file to read
|
||||
* @access protected
|
||||
* @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]);
|
||||
}
|
||||
}
|
||||
return array_values($chunks);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* DebugKit DebugToolbar Component
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.cake.libs.
|
||||
* @since CakePHP v 1.2.0.4487
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
class ToolbarComponent extends Object {
|
||||
/**
|
||||
* Controller instance reference
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
var $controller;
|
||||
/**
|
||||
* Components used by DebugToolbar
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $components = array('RequestHandler');
|
||||
/**
|
||||
* The default panels the toolbar uses.
|
||||
* which panels are used can be configured when attaching the component
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $_defaultPanels = array('session', 'request', 'sqlLog', 'timer', 'log', 'memory', 'variables');
|
||||
/**
|
||||
* Loaded panel objects.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $panels = array();
|
||||
|
||||
/**
|
||||
* fallback for javascript settings
|
||||
*
|
||||
* @var array
|
||||
**/
|
||||
var $_defaultJavascript = array(
|
||||
'behavior' => '/debug_kit/js/js_debug_toolbar'
|
||||
);
|
||||
/**
|
||||
* javascript files component will be using.
|
||||
*
|
||||
* @var array
|
||||
**/
|
||||
var $javascript = array();
|
||||
/**
|
||||
* initialize
|
||||
*
|
||||
* If debug is off the component will be disabled and not do any further time tracking
|
||||
* or load the toolbar helper.
|
||||
*
|
||||
* @return bool
|
||||
**/
|
||||
function initialize(&$controller, $settings) {
|
||||
if (Configure::read('debug') == 0) {
|
||||
$this->enabled = false;
|
||||
return false;
|
||||
}
|
||||
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
||||
|
||||
DebugKitDebugger::startTimer('componentInit', __('Component initialization and startup', true));
|
||||
if (!isset($settings['panels'])) {
|
||||
$settings['panels'] = $this->_defaultPanels;
|
||||
}
|
||||
|
||||
if (isset($settings['javascript'])) {
|
||||
$settings['javascript'] = $this->_setJavascript($settings['javascript']);
|
||||
} else {
|
||||
$settings['javascript'] = $this->_defaultJavascript;
|
||||
}
|
||||
$this->_loadPanels($settings['panels']);
|
||||
unset($settings['panels']);
|
||||
|
||||
$this->_set($settings);
|
||||
$this->controller =& $controller;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Component Startup
|
||||
*
|
||||
* @return bool
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
$currentViewClass = $controller->view;
|
||||
$this->_makeViewClass($currentViewClass);
|
||||
$controller->view = 'DebugKit.Debug';
|
||||
if (!isset($controller->params['url']['ext']) || (isset($controller->params['url']['ext']) && $controller->params['url']['ext'] == 'html')) {
|
||||
$format = 'Html';
|
||||
} else {
|
||||
$format = 'FirePhp';
|
||||
}
|
||||
$controller->helpers['DebugKit.Toolbar'] = array('output' => sprintf('DebugKit.%sToolbar', $format));
|
||||
$panels = array_keys($this->panels);
|
||||
foreach ($panels as $panelName) {
|
||||
$this->panels[$panelName]->startup($controller);
|
||||
}
|
||||
DebugKitDebugger::stopTimer('componentInit');
|
||||
DebugKitDebugger::startTimer('controllerAction', __('Controller Action', true));
|
||||
}
|
||||
/**
|
||||
* beforeRender callback
|
||||
*
|
||||
* Calls beforeRender on all the panels and set the aggregate to the controller.
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function beforeRender(&$controller) {
|
||||
DebugKitDebugger::stopTimer('controllerAction');
|
||||
$vars = array();
|
||||
$panels = array_keys($this->panels);
|
||||
|
||||
foreach ($panels as $panelName) {
|
||||
$panel =& $this->panels[$panelName];
|
||||
$vars[$panelName]['content'] = $panel->beforeRender($controller);
|
||||
$elementName = Inflector::underscore($panelName) . '_panel';
|
||||
if (isset($panel->elementName)) {
|
||||
$elementName = $panel->elementName;
|
||||
}
|
||||
$vars[$panelName]['elementName'] = $elementName;
|
||||
$vars[$panelName]['plugin'] = $panel->plugin;
|
||||
$vars[$panelName]['disableTimer'] = true;
|
||||
}
|
||||
|
||||
$controller->set(array('debugToolbarPanels' => $vars, 'debugToolbarJavascript' => $this->javascript));
|
||||
DebugKitDebugger::startTimer('controllerRender', __('Render Controller Action', true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Load Panels used in the debug toolbar
|
||||
*
|
||||
* @return void
|
||||
* @access protected
|
||||
**/
|
||||
function _loadPanels($panels) {
|
||||
foreach ($panels as $panel) {
|
||||
$className = $panel . 'Panel';
|
||||
if (!class_exists($className) && !App::import('Vendor', $className)) {
|
||||
trigger_error(sprintf(__('Could not load DebugToolbar panel %s', true), $panel), E_USER_WARNING);
|
||||
continue;
|
||||
}
|
||||
$panelObj = new $className();
|
||||
if (is_subclass_of($panelObj, 'DebugPanel') || is_subclass_of($panelObj, 'debugpanel')) {
|
||||
$this->panels[$panel] =& $panelObj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the javascript to user scripts.
|
||||
*
|
||||
* Set either script key to false to exclude it from the rendered layout.
|
||||
*
|
||||
* @param array $scripts Javascript config information
|
||||
* @return array
|
||||
* @access protected
|
||||
**/
|
||||
function _setJavascript($scripts) {
|
||||
$behavior = false;
|
||||
if (!is_array($scripts)) {
|
||||
$scripts = (array)$scripts;
|
||||
}
|
||||
if (isset($scripts[0])) {
|
||||
$behavior = $scripts[0];
|
||||
}
|
||||
if (isset($scripts['behavior'])) {
|
||||
$behavior = $scripts['behavior'];
|
||||
}
|
||||
if (!$behavior) {
|
||||
return array();
|
||||
} elseif ($behavior === true) {
|
||||
$behavior = 'js';
|
||||
}
|
||||
if (strpos($behavior, '/') !== 0) {
|
||||
$behavior .= '_debug_toolbar';
|
||||
}
|
||||
$pluginFile = APP . 'plugins' . DS . 'debug_kit' . DS . 'vendors' . DS . 'js' . DS . $behavior . '.js';
|
||||
if (file_exists($pluginFile)) {
|
||||
$behavior = '/debug_kit/js/' . $behavior . '.js';
|
||||
}
|
||||
return compact('behavior');
|
||||
}
|
||||
/**
|
||||
* Makes the DoppleGangerView class if it doesn't already exist.
|
||||
* This allows DebugView to be compatible with all view classes.
|
||||
*
|
||||
* @param string $baseClassName
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
function _makeViewClass($baseClassName) {
|
||||
if (!class_exists('DoppelGangerView')) {
|
||||
App::import('View', $baseClassName);
|
||||
if (strpos('View', $baseClassName) === false) {
|
||||
$baseClassName .= 'View';
|
||||
}
|
||||
$class = "class DoppelGangerView extends $baseClassName {}";
|
||||
eval($class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Debug Panel
|
||||
*
|
||||
* Abstract class for debug panels.
|
||||
*
|
||||
* @package cake.debug_kit
|
||||
*/
|
||||
class DebugPanel extends Object {
|
||||
/**
|
||||
* Defines which plugin this panel is from so the element can be located.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
var $plugin = null;
|
||||
/**
|
||||
* startup the panel
|
||||
*
|
||||
* Pull information from the controller / request
|
||||
*
|
||||
* @param object $controller Controller reference.
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) { }
|
||||
|
||||
/**
|
||||
* Prepare output vars before Controller Rendering.
|
||||
*
|
||||
* @param object $controller Controller reference.
|
||||
* @return void
|
||||
**/
|
||||
function beforeRender(&$controller) { }
|
||||
}
|
||||
|
||||
/**
|
||||
* Variables Panel
|
||||
*
|
||||
* Provides debug information on the View variables.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class VariablesPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
}
|
||||
|
||||
/**
|
||||
* Session Panel
|
||||
*
|
||||
* Provides debug information on the Session contents.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class SessionPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* beforeRender callback
|
||||
*
|
||||
* @param object $controller
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
function beforeRender(&$controller) {
|
||||
return $controller->Session->read();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request Panel
|
||||
*
|
||||
* Provides debug information on the Current request params.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class RequestPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* beforeRender callback - grabs request params
|
||||
*
|
||||
* @return array
|
||||
**/
|
||||
function beforeRender(&$controller) {
|
||||
$out = array();
|
||||
$out['params'] = $controller->params;
|
||||
if (isset($controller->Cookie)) {
|
||||
$out['cookie'] = $controller->Cookie->read();
|
||||
}
|
||||
$out['get'] = $_GET;
|
||||
$out['currentRoute'] = Router::currentRoute();
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Timer Panel
|
||||
*
|
||||
* Provides debug information on all timers used in a request.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class TimerPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* startup - add in necessary helpers
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
if (!in_array('Number', $controller->helpers)) {
|
||||
$controller->helpers[] = 'Number';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Memory Panel
|
||||
*
|
||||
* Provides debug information on the memory consumption.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class MemoryPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* startup - add in necessary helpers
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
if (!in_array('Number', $controller->helpers)) {
|
||||
$controller->helpers[] = 'Number';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* sqlLog Panel
|
||||
*
|
||||
* Provides debug information on the SQL logs and provides links to an ajax explain interface.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
**/
|
||||
class sqlLogPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
|
||||
var $dbConfigs = array();
|
||||
/**
|
||||
* get db configs.
|
||||
*
|
||||
* @param string $controller
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function startUp(&$controller) {
|
||||
if (!class_exists('ConnectionManager')) {
|
||||
$this->dbConfigs = array();
|
||||
return false;
|
||||
}
|
||||
$this->dbConfigs = ConnectionManager::sourceList();
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Get Sql Logs for each DB config
|
||||
*
|
||||
* @param string $controller
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function beforeRender(&$controller) {
|
||||
$queryLogs = array();
|
||||
if (!class_exists('ConnectionManager')) {
|
||||
return array();
|
||||
}
|
||||
foreach ($this->dbConfigs as $configName) {
|
||||
$db =& ConnectionManager::getDataSource($configName);
|
||||
if ($db->isInterfaceSupported('showLog')) {
|
||||
ob_start();
|
||||
$db->showLog();
|
||||
$queryLogs[$configName] = ob_get_clean();
|
||||
}
|
||||
}
|
||||
return $queryLogs;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Log Panel - Reads log entries made this request.
|
||||
*
|
||||
* @package cake.debug_kit.panels
|
||||
*/
|
||||
class LogPanel extends DebugPanel {
|
||||
var $plugin = 'debug_kit';
|
||||
/**
|
||||
* Log files to scan
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $logFiles = array('error.log', 'debug.log');
|
||||
/**
|
||||
* startup
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startup(&$controller) {
|
||||
if (!class_exists('CakeLog')) {
|
||||
App::import('Core', 'Log');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* beforeRender Callback
|
||||
*
|
||||
* @return array
|
||||
**/
|
||||
function beforeRender(&$controller) {
|
||||
$this->startTime = DebugKitDebugger::requestStartTime();
|
||||
$this->currentTime = DebugKitDebugger::requestTime();
|
||||
$out = array();
|
||||
foreach ($this->logFiles as $log) {
|
||||
$file = LOGS . $log;
|
||||
if (!file_exists($file)) {
|
||||
continue;
|
||||
}
|
||||
$out[$log] = $this->_parseFile($file);
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
/**
|
||||
* parse a log file and find the relevant entries
|
||||
*
|
||||
* @param string $filename Name of file to read
|
||||
* @access protected
|
||||
* @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]);
|
||||
}
|
||||
}
|
||||
return array_values($chunks);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,144 +1,144 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* DebugView test Case
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.cake.libs.
|
||||
* @since CakePHP v 1.2.0.4487
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
App::import('Core', 'View');
|
||||
|
||||
if (!class_exists('DoppelGangerView')) {
|
||||
class DoppelGangerView extends View {}
|
||||
}
|
||||
|
||||
App::import('View', 'DebugKit.Debug');
|
||||
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
||||
/**
|
||||
* Debug View Test Case
|
||||
*
|
||||
* @package debug_kit.tests
|
||||
*/
|
||||
class DebugViewTestCase extends CakeTestCase {
|
||||
/**
|
||||
* set Up test case
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function setUp() {
|
||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
Router::parse('/');
|
||||
$this->Controller =& ClassRegistry::init('Controller');
|
||||
$this->View =& new DebugView($this->Controller, false);
|
||||
$this->_debug = Configure::read('debug');
|
||||
}
|
||||
|
||||
/**
|
||||
* start Case - switch view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startCase() {
|
||||
$this->_viewPaths = Configure::read('viewPaths');
|
||||
Configure::write('viewPaths', array(
|
||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||
ROOT . DS . LIBS . 'view' . DS
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* test that element timers are working
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testElementTimers() {
|
||||
$result = $this->View->element('test_element');
|
||||
$this->assertPattern('/^this is the test element$/', $result);
|
||||
|
||||
$result = DebugKitDebugger::getTimers();
|
||||
$this->assertTrue(isset($result['render_test_element.ctp']));
|
||||
}
|
||||
|
||||
/**
|
||||
* test rendering and ensure that timers are being set.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function testRenderTimers() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => null,
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->layout = 'default';
|
||||
$View =& new DebugView($this->Controller, false);
|
||||
$View->render('index');
|
||||
|
||||
$result = DebugKitDebugger::getTimers();
|
||||
$this->assertEqual(count($result), 3);
|
||||
$this->assertTrue(isset($result['viewRender']));
|
||||
$this->assertTrue(isset($result['render_default.ctp']));
|
||||
$this->assertTrue(isset($result['render_index.ctp']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for correct loading of helpers into custom view
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testLoadHelpers() {
|
||||
$loaded = array();
|
||||
$result = $this->View->_loadHelpers($loaded, array('Html', 'Javascript', 'Number'));
|
||||
$this->assertTrue(is_object($result['Html']));
|
||||
$this->assertTrue(is_object($result['Javascript']));
|
||||
$this->assertTrue(is_object($result['Number']));
|
||||
}
|
||||
|
||||
/**
|
||||
* reset the view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function endCase() {
|
||||
Configure::write('viewPaths', $this->_viewPaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* tear down function
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function tearDown() {
|
||||
unset($this->View, $this->Controller);
|
||||
DebugKitDebugger::clearTimers();
|
||||
Configure::write('debug', $this->_debug);
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* DebugView test Case
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage cake.cake.libs.
|
||||
* @since CakePHP v 1.2.0.4487
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
App::import('Core', 'View');
|
||||
|
||||
if (!class_exists('DoppelGangerView')) {
|
||||
class DoppelGangerView extends View {}
|
||||
}
|
||||
|
||||
App::import('View', 'DebugKit.Debug');
|
||||
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
||||
/**
|
||||
* Debug View Test Case
|
||||
*
|
||||
* @package debug_kit.tests
|
||||
*/
|
||||
class DebugViewTestCase extends CakeTestCase {
|
||||
/**
|
||||
* set Up test case
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function setUp() {
|
||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
Router::parse('/');
|
||||
$this->Controller =& ClassRegistry::init('Controller');
|
||||
$this->View = new DebugView($this->Controller, false);
|
||||
$this->_debug = Configure::read('debug');
|
||||
}
|
||||
|
||||
/**
|
||||
* start Case - switch view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startCase() {
|
||||
$this->_viewPaths = Configure::read('viewPaths');
|
||||
Configure::write('viewPaths', array(
|
||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||
ROOT . DS . LIBS . 'view' . DS
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* test that element timers are working
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testElementTimers() {
|
||||
$result = $this->View->element('test_element');
|
||||
$this->assertPattern('/^this is the test element$/', $result);
|
||||
|
||||
$result = DebugKitDebugger::getTimers();
|
||||
$this->assertTrue(isset($result['render_test_element.ctp']));
|
||||
}
|
||||
|
||||
/**
|
||||
* test rendering and ensure that timers are being set.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function testRenderTimers() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => null,
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->layout = 'default';
|
||||
$View = new DebugView($this->Controller, false);
|
||||
$View->render('index');
|
||||
|
||||
$result = DebugKitDebugger::getTimers();
|
||||
$this->assertEqual(count($result), 3);
|
||||
$this->assertTrue(isset($result['viewRender']));
|
||||
$this->assertTrue(isset($result['render_default.ctp']));
|
||||
$this->assertTrue(isset($result['render_index.ctp']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for correct loading of helpers into custom view
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testLoadHelpers() {
|
||||
$loaded = array();
|
||||
$result = $this->View->_loadHelpers($loaded, array('Html', 'Javascript', 'Number'));
|
||||
$this->assertTrue(is_object($result['Html']));
|
||||
$this->assertTrue(is_object($result['Javascript']));
|
||||
$this->assertTrue(is_object($result['Number']));
|
||||
}
|
||||
|
||||
/**
|
||||
* reset the view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function endCase() {
|
||||
Configure::write('viewPaths', $this->_viewPaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* tear down function
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function tearDown() {
|
||||
unset($this->View, $this->Controller);
|
||||
DebugKitDebugger::clearTimers();
|
||||
Configure::write('debug', $this->_debug);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,137 +1,137 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* Toolbar Abstract Helper Test Case
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage debug_kit.tests.views.helpers
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
App::import('Helper', 'DebugKit.FirePhpToolbar');
|
||||
App::import('Core', array('View', 'Controller'));
|
||||
require_once APP . 'plugins' . DS . 'debug_kit' . DS . 'tests' . DS . 'cases' . DS . 'test_objects.php';
|
||||
|
||||
FireCake::getInstance('TestFireCake');
|
||||
|
||||
class FirePhpToolbarHelperTestCase extends CakeTestCase {
|
||||
/**
|
||||
* setUp
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function setUp() {
|
||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
Router::parse('/');
|
||||
|
||||
$this->Toolbar =& new ToolbarHelper(array('output' => 'DebugKit.FirePhpToolbar'));
|
||||
$this->Toolbar->FirePhpToolbar =& new FirePhpToolbarHelper();
|
||||
|
||||
$this->Controller =& ClassRegistry::init('Controller');
|
||||
if (isset($this->_debug)) {
|
||||
Configure::write('debug', $this->_debug);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* start Case - switch view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startCase() {
|
||||
$this->_viewPaths = Configure::read('viewPaths');
|
||||
Configure::write('viewPaths', array(
|
||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||
ROOT . DS . LIBS . 'view' . DS
|
||||
));
|
||||
$this->_debug = Configure::read('debug');
|
||||
$this->firecake =& FireCake::getInstance();
|
||||
}
|
||||
/**
|
||||
* test neat array (dump)creation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testMakeNeatArray() {
|
||||
$this->Toolbar->makeNeatArray(array(1,2,3));
|
||||
$result = $this->firecake->sentHeaders;
|
||||
$this->assertTrue(isset($result['X-Wf-1-1-1-1']));
|
||||
$this->assertPattern('/\[1,2,3\]/', $result['X-Wf-1-1-1-1']);
|
||||
}
|
||||
/**
|
||||
* testAfterlayout element rendering
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testAfterLayout(){
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index', 'ext' => 'xml'),
|
||||
'base' => null,
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->components = array('DebugKit.Toolbar');
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$this->assertNoPattern('/debug-toolbar/', $result);
|
||||
$result = $this->firecake->sentHeaders;
|
||||
$this->assertTrue(is_array($result));
|
||||
|
||||
}
|
||||
/**
|
||||
* endTest()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function endTest() {
|
||||
TestFireCake::reset();
|
||||
}
|
||||
/**
|
||||
* reset the view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function endCase() {
|
||||
Configure::write('viewPaths', $this->_viewPaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* tearDown
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function tearDown() {
|
||||
unset($this->Toolbar, $this->Controller);
|
||||
ClassRegistry::removeObject('view');
|
||||
ClassRegistry::flush();
|
||||
Router::reload();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* Toolbar Abstract Helper Test Case
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage debug_kit.tests.views.helpers
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
App::import('Helper', 'DebugKit.FirePhpToolbar');
|
||||
App::import('Core', array('View', 'Controller'));
|
||||
require_once APP . 'plugins' . DS . 'debug_kit' . DS . 'tests' . DS . 'cases' . DS . 'test_objects.php';
|
||||
|
||||
FireCake::getInstance('TestFireCake');
|
||||
|
||||
class FirePhpToolbarHelperTestCase extends CakeTestCase {
|
||||
/**
|
||||
* setUp
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function setUp() {
|
||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
Router::parse('/');
|
||||
|
||||
$this->Toolbar = new ToolbarHelper(array('output' => 'DebugKit.FirePhpToolbar'));
|
||||
$this->Toolbar->FirePhpToolbar = new FirePhpToolbarHelper();
|
||||
|
||||
$this->Controller =& ClassRegistry::init('Controller');
|
||||
if (isset($this->_debug)) {
|
||||
Configure::write('debug', $this->_debug);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* start Case - switch view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startCase() {
|
||||
$this->_viewPaths = Configure::read('viewPaths');
|
||||
Configure::write('viewPaths', array(
|
||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||
ROOT . DS . LIBS . 'view' . DS
|
||||
));
|
||||
$this->_debug = Configure::read('debug');
|
||||
$this->firecake =& FireCake::getInstance();
|
||||
}
|
||||
/**
|
||||
* test neat array (dump)creation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testMakeNeatArray() {
|
||||
$this->Toolbar->makeNeatArray(array(1,2,3));
|
||||
$result = $this->firecake->sentHeaders;
|
||||
$this->assertTrue(isset($result['X-Wf-1-1-1-1']));
|
||||
$this->assertPattern('/\[1,2,3\]/', $result['X-Wf-1-1-1-1']);
|
||||
}
|
||||
/**
|
||||
* testAfterlayout element rendering
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testAfterLayout(){
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index', 'ext' => 'xml'),
|
||||
'base' => null,
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->components = array('DebugKit.Toolbar');
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$this->assertNoPattern('/debug-toolbar/', $result);
|
||||
$result = $this->firecake->sentHeaders;
|
||||
$this->assertTrue(is_array($result));
|
||||
|
||||
}
|
||||
/**
|
||||
* endTest()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function endTest() {
|
||||
TestFireCake::reset();
|
||||
}
|
||||
/**
|
||||
* reset the view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function endCase() {
|
||||
Configure::write('viewPaths', $this->_viewPaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* tearDown
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function tearDown() {
|
||||
unset($this->Toolbar, $this->Controller);
|
||||
ClassRegistry::removeObject('view');
|
||||
ClassRegistry::flush();
|
||||
Router::reload();
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,358 +1,358 @@
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* Toolbar HTML Helper Test Case
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage debug_kit.tests.views.helpers
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
App::import('Helper', array('DebugKit.HtmlToolbar', 'Html', 'Javascript'));
|
||||
App::import('Core', array('View', 'Controller'));
|
||||
|
||||
class HtmlToolbarHelperTestCase extends CakeTestCase {
|
||||
/**
|
||||
* setUp
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function setUp() {
|
||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
Router::parse('/');
|
||||
|
||||
$this->Toolbar =& new ToolbarHelper(array('output' => 'DebugKit.HtmlToolbar'));
|
||||
$this->Toolbar->HtmlToolbar =& new HtmlToolbarHelper();
|
||||
$this->Toolbar->HtmlToolbar->Html =& new HtmlHelper();
|
||||
$this->Toolbar->HtmlToolbar->Javascript =& new JavascriptHelper();
|
||||
|
||||
$this->Controller =& ClassRegistry::init('Controller');
|
||||
if (isset($this->_debug)) {
|
||||
Configure::write('debug', $this->_debug);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* start Case - switch view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startCase() {
|
||||
$this->_viewPaths = Configure::read('viewPaths');
|
||||
Configure::write('viewPaths', array(
|
||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||
ROOT . DS . LIBS . 'view' . DS
|
||||
));
|
||||
$this->_debug = Configure::read('debug');
|
||||
}
|
||||
|
||||
/**
|
||||
* test Neat Array formatting
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testMakeNeatArray() {
|
||||
$in = false;
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', '0' , '/strong', '(false)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = null;
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', '0' , '/strong', '(null)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = true;
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', '0' , '/strong', '(true)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => 'value');
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => null);
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', '(null)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => 'value', 'foo' => 'bar');
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong', 'bar', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array(
|
||||
'key' => 'value',
|
||||
'foo' => array(
|
||||
'this' => 'deep',
|
||||
'another' => 'value'
|
||||
)
|
||||
);
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1')),
|
||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array(
|
||||
'key' => 'value',
|
||||
'foo' => array(
|
||||
'this' => 'deep',
|
||||
'another' => 'value'
|
||||
),
|
||||
'lotr' => array(
|
||||
'gandalf' => 'wizard',
|
||||
'bilbo' => 'hobbit'
|
||||
)
|
||||
);
|
||||
$result = $this->Toolbar->makeNeatArray($in, 1);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1')),
|
||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'<li', '<strong', 'lotr', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1')),
|
||||
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
||||
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Toolbar->makeNeatArray($in, 2);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'<li', '<strong', 'lotr', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
||||
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
||||
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => 'value', 'array' => array());
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'array', '/strong', '(empty)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test injection of toolbar
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testInjectToolbar() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => null,
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->helpers = array('Html', 'Javascript', 'DebugKit.Toolbar');
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->components = array('DebugKit.Toolbar');
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$result = str_replace(array("\n", "\r"), '', $result);
|
||||
$this->assertPattern('#<div id\="debug-kit-toolbar">.+</div></body>#', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* test injection of javascript
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testJavascriptInjection() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => '/',
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->helpers = array('Javascript', 'Html');
|
||||
$this->Controller->components = array('DebugKit.Toolbar');
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$result = str_replace(array("\n", "\r"), '', $result);
|
||||
$this->assertPattern('#<script\s*type="text/javascript"\s*src="/debug_kit/js/js_debug_toolbar.js"\s*>\s?</script>#', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* test Injection of user defined javascript
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testCustomJavascriptInjection() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => '/',
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->helpers = array('Javascript', 'Html');
|
||||
$this->Controller->components = array('DebugKit.Toolbar' => array('javascript' => array('my_custom')));
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$result = str_replace(array("\n", "\r"), '', $result);
|
||||
$this->assertPattern('#<script\s*type="text/javascript"\s*src="js/my_custom_debug_toolbar.js"\s*>\s?</script>#', $result);
|
||||
}
|
||||
/**
|
||||
* test message creation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testMessage() {
|
||||
$result = $this->Toolbar->message('test', 'one, two');
|
||||
$expected = array(
|
||||
'<p',
|
||||
'<strong', 'test', '/strong',
|
||||
' one, two',
|
||||
'/p',
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
/**
|
||||
* Test Table generation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testTable() {
|
||||
$rows = array(
|
||||
array(1,2),
|
||||
array(3,4),
|
||||
);
|
||||
$result = $this->Toolbar->table($rows);
|
||||
$expected = array(
|
||||
'table' => array('class' =>'debug-table'),
|
||||
array('tr' => array('class' => 'odd')),
|
||||
'<td', '1', '/td',
|
||||
'<td', '2', '/td',
|
||||
'/tr',
|
||||
array('tr' => array('class' => 'even')),
|
||||
'<td', '3', '/td',
|
||||
'<td', '4', '/td',
|
||||
'/tr',
|
||||
'/table'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
/**
|
||||
* reset the view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function endCase() {
|
||||
Configure::write('viewPaths', $this->_viewPaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* tearDown
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function tearDown() {
|
||||
unset($this->Toolbar, $this->Controller);
|
||||
ClassRegistry::removeObject('view');
|
||||
ClassRegistry::flush();
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/* SVN FILE: $Id$ */
|
||||
/**
|
||||
* Toolbar HTML Helper Test Case
|
||||
*
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @filesource
|
||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||
* @package cake
|
||||
* @subpackage debug_kit.tests.views.helpers
|
||||
* @version $Revision$
|
||||
* @modifiedby $LastChangedBy$
|
||||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
App::import('Helper', array('DebugKit.HtmlToolbar', 'Html', 'Javascript'));
|
||||
App::import('Core', array('View', 'Controller'));
|
||||
|
||||
class HtmlToolbarHelperTestCase extends CakeTestCase {
|
||||
/**
|
||||
* setUp
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function setUp() {
|
||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
Router::parse('/');
|
||||
|
||||
$this->Toolbar = new ToolbarHelper(array('output' => 'DebugKit.HtmlToolbar'));
|
||||
$this->Toolbar->HtmlToolbar = new HtmlToolbarHelper();
|
||||
$this->Toolbar->HtmlToolbar->Html = new HtmlHelper();
|
||||
$this->Toolbar->HtmlToolbar->Javascript = new JavascriptHelper();
|
||||
|
||||
$this->Controller =& ClassRegistry::init('Controller');
|
||||
if (isset($this->_debug)) {
|
||||
Configure::write('debug', $this->_debug);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* start Case - switch view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function startCase() {
|
||||
$this->_viewPaths = Configure::read('viewPaths');
|
||||
Configure::write('viewPaths', array(
|
||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||
ROOT . DS . LIBS . 'view' . DS
|
||||
));
|
||||
$this->_debug = Configure::read('debug');
|
||||
}
|
||||
|
||||
/**
|
||||
* test Neat Array formatting
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testMakeNeatArray() {
|
||||
$in = false;
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', '0' , '/strong', '(false)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = null;
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', '0' , '/strong', '(null)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = true;
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', '0' , '/strong', '(true)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => 'value');
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => null);
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', '(null)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => 'value', 'foo' => 'bar');
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong', 'bar', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array(
|
||||
'key' => 'value',
|
||||
'foo' => array(
|
||||
'this' => 'deep',
|
||||
'another' => 'value'
|
||||
)
|
||||
);
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1')),
|
||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array(
|
||||
'key' => 'value',
|
||||
'foo' => array(
|
||||
'this' => 'deep',
|
||||
'another' => 'value'
|
||||
),
|
||||
'lotr' => array(
|
||||
'gandalf' => 'wizard',
|
||||
'bilbo' => 'hobbit'
|
||||
)
|
||||
);
|
||||
$result = $this->Toolbar->makeNeatArray($in, 1);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1')),
|
||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'<li', '<strong', 'lotr', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1')),
|
||||
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
||||
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$result = $this->Toolbar->makeNeatArray($in, 2);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'foo', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'<li', '<strong', 'lotr', '/strong',
|
||||
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
||||
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
||||
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
||||
'/ul',
|
||||
'/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
|
||||
$in = array('key' => 'value', 'array' => array());
|
||||
$result = $this->Toolbar->makeNeatArray($in);
|
||||
$expected = array(
|
||||
'ul' => array('class' => 'neat-array depth-0'),
|
||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||
'<li', '<strong', 'array', '/strong', '(empty)', '/li',
|
||||
'/ul'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test injection of toolbar
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testInjectToolbar() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => null,
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->helpers = array('Html', 'Javascript', 'DebugKit.Toolbar');
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->components = array('DebugKit.Toolbar');
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$result = str_replace(array("\n", "\r"), '', $result);
|
||||
$this->assertPattern('#<div id\="debug-kit-toolbar">.+</div></body>#', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* test injection of javascript
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testJavascriptInjection() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => '/',
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->helpers = array('Javascript', 'Html');
|
||||
$this->Controller->components = array('DebugKit.Toolbar');
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$result = str_replace(array("\n", "\r"), '', $result);
|
||||
$this->assertPattern('#<script\s*type="text/javascript"\s*src="/debug_kit/js/js_debug_toolbar.js"\s*>\s?</script>#', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* test Injection of user defined javascript
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testCustomJavascriptInjection() {
|
||||
$this->Controller->viewPath = 'posts';
|
||||
$this->Controller->uses = null;
|
||||
$this->Controller->action = 'index';
|
||||
$this->Controller->params = array(
|
||||
'action' => 'index',
|
||||
'controller' => 'posts',
|
||||
'plugin' => null,
|
||||
'url' => array('url' => 'posts/index'),
|
||||
'base' => '/',
|
||||
'here' => '/posts/index',
|
||||
);
|
||||
$this->Controller->helpers = array('Javascript', 'Html');
|
||||
$this->Controller->components = array('DebugKit.Toolbar' => array('javascript' => array('my_custom')));
|
||||
$this->Controller->layout = 'default';
|
||||
$this->Controller->constructClasses();
|
||||
$this->Controller->Component->initialize($this->Controller);
|
||||
$this->Controller->Component->startup($this->Controller);
|
||||
$this->Controller->Component->beforeRender($this->Controller);
|
||||
$result = $this->Controller->render();
|
||||
$result = str_replace(array("\n", "\r"), '', $result);
|
||||
$this->assertPattern('#<script\s*type="text/javascript"\s*src="js/my_custom_debug_toolbar.js"\s*>\s?</script>#', $result);
|
||||
}
|
||||
/**
|
||||
* test message creation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testMessage() {
|
||||
$result = $this->Toolbar->message('test', 'one, two');
|
||||
$expected = array(
|
||||
'<p',
|
||||
'<strong', 'test', '/strong',
|
||||
' one, two',
|
||||
'/p',
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
/**
|
||||
* Test Table generation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testTable() {
|
||||
$rows = array(
|
||||
array(1,2),
|
||||
array(3,4),
|
||||
);
|
||||
$result = $this->Toolbar->table($rows);
|
||||
$expected = array(
|
||||
'table' => array('class' =>'debug-table'),
|
||||
array('tr' => array('class' => 'odd')),
|
||||
'<td', '1', '/td',
|
||||
'<td', '2', '/td',
|
||||
'/tr',
|
||||
array('tr' => array('class' => 'even')),
|
||||
'<td', '3', '/td',
|
||||
'<td', '4', '/td',
|
||||
'/tr',
|
||||
'/table'
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
}
|
||||
/**
|
||||
* reset the view paths
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function endCase() {
|
||||
Configure::write('viewPaths', $this->_viewPaths);
|
||||
}
|
||||
|
||||
/**
|
||||
* tearDown
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function tearDown() {
|
||||
unset($this->Toolbar, $this->Controller);
|
||||
ClassRegistry::removeObject('view');
|
||||
ClassRegistry::flush();
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -30,14 +30,14 @@ $timers = DebugKitDebugger::getTimers();
|
||||
?>
|
||||
<h2><?php __('Timers'); ?></h2>
|
||||
<p class="request-time">
|
||||
<?php $totalTime = sprintf(__('%s (seconds)', true), $number->precision(DebugKitDebugger::requestTime(), 6)); ?>
|
||||
<?php $totalTime = sprintf(__('%s (seconds)', true), DebugKitDebugger::requestTime()); ?>
|
||||
<?php echo $toolbar->message(__('Total Request Time:', true), $totalTime)?>
|
||||
</p>
|
||||
|
||||
<?php foreach ($timers as $timerName => $timeInfo):
|
||||
$rows[] = array(
|
||||
$timeInfo['message'],
|
||||
$number->precision($timeInfo['time'], 6)
|
||||
$timeInfo['time']
|
||||
);
|
||||
$headers = array(__('Message', true), __('time in seconds', true));
|
||||
endforeach;
|
||||
|
||||
Reference in New Issue
Block a user