Compare commits
19 Commits
v0.3_php5.
...
hosted_mig
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3148cc17d | ||
|
|
c709f0bbf5 | ||
|
|
8faafe7f4e | ||
|
|
4319847665 | ||
|
|
d22a69b510 | ||
|
|
e9028b7558 | ||
|
|
26559f3c59 | ||
|
|
4d24428a19 | ||
|
|
15fc04e690 | ||
|
|
60254860b4 | ||
|
|
20284046c3 | ||
|
|
99a98cbc7d | ||
|
|
fc9226594c | ||
|
|
352bdbbf49 | ||
|
|
11fbdf0701 | ||
|
|
2519f4c8a7 | ||
|
|
b6ed57c02c | ||
|
|
4dffa540a0 | ||
|
|
3d1c4d2492 |
@@ -1,25 +1,20 @@
|
|||||||
<IfModule mod_rewrite.c>
|
<IfModule mod_rewrite.c>
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
RewriteRule ^$ webroot/ [L]
|
|
||||||
RewriteRule (.*) webroot/$1 [L]
|
RewriteRule ^$ webroot/ [L]
|
||||||
|
|
||||||
|
# Need this prevent a 400 error without trailing /
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule (.*) webroot/$1 [L]
|
||||||
|
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
# Lets deny everyone -- its a clean slate!
|
# Need to make sure directories can't be listed, since the rewrite
|
||||||
order deny,allow
|
# rule excludes rewriting when an actual directory is requested
|
||||||
deny from all
|
Options -Indexes
|
||||||
|
|
||||||
# Now allow local access
|
|
||||||
# Localhost
|
|
||||||
# allow from 127.0.0
|
|
||||||
# Local subnet
|
|
||||||
# allow from 192.168.7
|
|
||||||
|
|
||||||
# Provide a mechanism for user authentication
|
# Provide a mechanism for user authentication
|
||||||
AuthType Digest
|
AuthType Basic
|
||||||
AuthName "Property Manager"
|
AuthName "Valley Storage"
|
||||||
AuthUserFile "D:/Website/auth/pmgr.htpasswd"
|
AuthUserFile "/home/perki2/valley_storage.pmgr.htpasswd"
|
||||||
Require valid-user
|
Require valid-user
|
||||||
|
|
||||||
# Instead of satisfy all (too restrictive)
|
|
||||||
# This allows EITHER local domain OR authenticated user
|
|
||||||
satisfy any
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
class AppController extends Controller {
|
class AppController extends Controller {
|
||||||
var $uses = array('Option', 'Permission');
|
var $uses = array('Option', 'Permission');
|
||||||
var $helpers = array('Html', 'Form', 'Javascript', 'Format', 'Time', 'Grid');
|
var $helpers = array('Html', 'Form', 'Javascript', 'Format', 'Time', 'Grid');
|
||||||
var $components = array('DebugKit.Toolbar');
|
//var $components = array('DebugKit.Toolbar');
|
||||||
|
|
||||||
var $sidemenu = array('areas' => array('SITE' => false, 'REPORT' => false, 'CONTROLLER' => false, 'ACTION' => false, 'SANDBOX' => false));
|
var $sidemenu = array('areas' => array('SITE' => false, 'REPORT' => false, 'CONTROLLER' => false, 'ACTION' => false, 'SANDBOX' => false));
|
||||||
var $std_area = 10;
|
var $std_area = 10;
|
||||||
@@ -278,8 +278,20 @@ class AppController extends Controller {
|
|||||||
$this->addSideMenuLink('Unit Summary',
|
$this->addSideMenuLink('Unit Summary',
|
||||||
array('controller' => 'units', 'action' => 'overview'), null,
|
array('controller' => 'units', 'action' => 'overview'), null,
|
||||||
'REPORT');
|
'REPORT');
|
||||||
$this->addSideMenuLink('Monthly Charges',
|
/* $this->addSideMenuLink('Monthly Income', */
|
||||||
array('controller' => 'statement_entries', 'action' => 'chargesbymonth'), null,
|
/* array('controller' => 'statement_entries', 'action' => 'incomebymonth'), null, */
|
||||||
|
/* 'REPORT'); */
|
||||||
|
/* $this->addSideMenuLink('Monthly Expenses', */
|
||||||
|
/* array('controller' => 'statement_entries', 'action' => 'expensebymonth'), null, */
|
||||||
|
/* 'REPORT'); */
|
||||||
|
$this->addSideMenuLink('Quickbook Invoice',
|
||||||
|
array('controller' => 'statement_entries', 'action' => 'incomebymonth', 4, 1), null,
|
||||||
|
'REPORT');
|
||||||
|
$this->addSideMenuLink('Quickbook Credits',
|
||||||
|
array('controller' => 'statement_entries', 'action' => 'expensebymonth', 4, 0), null,
|
||||||
|
'REPORT');
|
||||||
|
$this->addSideMenuLink('Monthly Net',
|
||||||
|
array('controller' => 'statement_entries', 'action' => 'netbymonth'), null,
|
||||||
'REPORT');
|
'REPORT');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -349,8 +361,8 @@ class AppController extends Controller {
|
|||||||
if ($this->dev() && !$this->Option->enabled('dev'))
|
if ($this->dev() && !$this->Option->enabled('dev'))
|
||||||
$this->redirect("/");
|
$this->redirect("/");
|
||||||
|
|
||||||
if ($this->dev())
|
if (!$this->dev())
|
||||||
Configure::write('debug', 2);
|
Configure::write('debug', '0');
|
||||||
|
|
||||||
$this->addDefaultSideMenuLinks();
|
$this->addDefaultSideMenuLinks();
|
||||||
//$this->sideMenuEnable('SITE', $this->op_area, false);
|
//$this->sideMenuEnable('SITE', $this->op_area, false);
|
||||||
@@ -452,7 +464,8 @@ class AppController extends Controller {
|
|||||||
App::import('Helper', 'Html');
|
App::import('Helper', 'Html');
|
||||||
$url = HtmlHelper::url($url, true);
|
$url = HtmlHelper::url($url, true);
|
||||||
|
|
||||||
if (headers_sent()) {
|
if (headers_sent() ||
|
||||||
|
($this->dev() && $this->Option->enabled('dev'))) {
|
||||||
// If we've already sent the headers, it's because
|
// If we've already sent the headers, it's because
|
||||||
// we're debugging, and our debug output has gotten
|
// we're debugging, and our debug output has gotten
|
||||||
// out before the redirect. That's probably a good
|
// out before the redirect. That's probably a good
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
@echo off
|
|
||||||
mysqldump --user=pmgr --password=pmgruser --opt property_manager > H:\pmgr_dev.sql
|
|
||||||
mysql --user=pmgr --password=pmgruser --database=pmgr_dev < H:\pmgr_dev.sql
|
|
||||||
del H:\pmgr_dev.sql
|
|
||||||
echo Build Complete!
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
@echo off
|
|
||||||
mysqldump --user=pmgr --password=pmgruser --opt property_manager > H:\pmgr_sand.sql
|
|
||||||
mysql --user=pmgr --password=pmgruser --database=pmgr_sand < H:\pmgr_sand.sql
|
|
||||||
del H:\pmgr_sand.sql
|
|
||||||
echo Build Complete!
|
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
* In production mode, flash messages redirect after a time interval.
|
* In production mode, flash messages redirect after a time interval.
|
||||||
* In development mode, you need to click the flash message to continue.
|
* In development mode, you need to click the flash message to continue.
|
||||||
*/
|
*/
|
||||||
Configure::write('debug', 0);
|
Configure::write('debug', 2);
|
||||||
/**
|
/**
|
||||||
* Application wide charset encoding
|
* Application wide charset encoding
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,17 +5,17 @@ class DATABASE_CONFIG {
|
|||||||
'driver' => 'mysql',
|
'driver' => 'mysql',
|
||||||
'persistent' => false,
|
'persistent' => false,
|
||||||
'host' => 'localhost',
|
'host' => 'localhost',
|
||||||
'login' => 'pmgr',
|
'login' => 'perki2_pmgruser',
|
||||||
'password' => 'pmgruser',
|
'password' => 'pmgrauth',
|
||||||
'database' => 'property_manager',
|
'database' => 'perki2_pmgr',
|
||||||
'prefix' => 'pmgr_',
|
'prefix' => '',
|
||||||
);
|
);
|
||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
if (devbox())
|
if (devbox())
|
||||||
$this->default['database'] = 'pmgr_dev';
|
$this->default['database'] = 'perki2_pmgr_dev';
|
||||||
if (sandbox())
|
if (sandbox())
|
||||||
$this->default['database'] = 'pmgr_sand';
|
$this->default['database'] = 'perki2_pmgr_sand';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -260,38 +260,65 @@ class StatementEntriesController extends AppController {
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
* action: chargesbymonth
|
* action: incexpbymonth
|
||||||
* - Displays charges by month
|
* - Displays income and/or expenses by month
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function chargesbymonth($months = 12) {
|
function incexpbymonth($accts, $security_deposits, $months) {
|
||||||
|
$datefrom = 'DATE(NOW() - INTERVAL '.($months-1).' MONTH - INTERVAL DAY(NOW())-1 DAY)';
|
||||||
|
$dateto = 'NOW()';
|
||||||
|
/* $datefrom = '"2009-01-01"'; */
|
||||||
|
/* $dateto = '"2012-12-31"'; */
|
||||||
|
|
||||||
$result = $this->StatementEntry->find
|
$result = $this->StatementEntry->find
|
||||||
('all',
|
('all',
|
||||||
array('link' => array('Account' => array('fields' => 'name')),
|
array('link' => array('Account' => array('fields' => 'name')),
|
||||||
'fields' => array_merge(array('MONTHNAME(effective_date) AS month',
|
'fields' => array_merge(array('MONTHNAME(effective_date) AS month',
|
||||||
'YEAR(effective_date) AS year'),
|
'YEAR(effective_date) AS year'),
|
||||||
$this->StatementEntry->chargeDisbursementFields(true)),
|
$this->StatementEntry->chargeDisbursementFields(true)),
|
||||||
'conditions' => array('Account.type' => 'INCOME',
|
'conditions' => array('Account.type' => $accts,
|
||||||
'effective_date >= DATE(NOW() - INTERVAL '.($months-1).' MONTH - INTERVAL DAY(NOW())-1 DAY)',
|
"effective_date >= $datefrom",
|
||||||
'effective_date <= NOW()',
|
"effective_date <= $dateto",
|
||||||
),
|
),
|
||||||
'group' => array('YEAR(effective_date)', 'MONTH(effective_date)', 'Account.id'),
|
'group' => array('YEAR(effective_date)', 'MONTH(effective_date)', 'Account.id'),
|
||||||
'order' => array('YEAR(effective_date) DESC', 'MONTH(effective_date) DESC', 'Account.name'),
|
'order' => array('YEAR(effective_date) DESC', 'MONTH(effective_date) DESC', 'Account.type',
|
||||||
|
'IF(Account.id = '.$this->StatementEntry->Account->rentAccountID().', "---", Account.name)'),
|
||||||
));
|
));
|
||||||
|
|
||||||
$overview = array('months' => array(), 'charges' => 0);
|
if ($security_deposits) {
|
||||||
foreach ($result AS $row) {
|
$sdresult = $this->StatementEntry->Transaction->LedgerEntry->find
|
||||||
|
('all',
|
||||||
|
array('link' => array('Transaction' => array('StatementEntry' => array('fields' => 'effective_date'),
|
||||||
|
'fields' => array()),
|
||||||
|
'Account' => array('fields' => 'name')),
|
||||||
|
'fields' => array_merge(array('MONTHNAME(effective_date) AS month',
|
||||||
|
'YEAR(effective_date) AS year'),
|
||||||
|
$this->StatementEntry->Transaction->LedgerEntry->debitCreditFields(true)),
|
||||||
|
'conditions' => array('LedgerEntry.account_id' => $this->StatementEntry->Account->securityDepositAccountID(),
|
||||||
|
"effective_date >= $datefrom",
|
||||||
|
"effective_date <= $dateto",
|
||||||
|
'StatementEntry.id = (SELECT MIN(id) FROM statement_entries WHERE transaction_id = `Transaction`.id)'
|
||||||
|
),
|
||||||
|
'group' => array('YEAR(effective_date)', 'MONTH(effective_date)', 'Account.id'),
|
||||||
|
'order' => array('YEAR(effective_date) DESC', 'MONTH(effective_date) DESC', 'Account.type', 'Account.name'),
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
$sdresult = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$overview = array('months' => array(), 'amount' => 0);
|
||||||
|
foreach (array_merge($result, $sdresult) AS $row) {
|
||||||
$mname = $row[0]['month'] .', '. $row[0]['year'];
|
$mname = $row[0]['month'] .', '. $row[0]['year'];
|
||||||
if (empty($overview['months'][$mname]))
|
if (empty($overview['months'][$mname]))
|
||||||
$overview['months'][$mname] = array('name' => $mname,
|
$overview['months'][$mname] = array('name' => $mname,
|
||||||
'subs' => array(),
|
'subs' => array(),
|
||||||
'charges' => 0);
|
'amount' => 0);
|
||||||
$month = &$overview['months'][$mname];
|
$month = &$overview['months'][$mname];
|
||||||
$month['subs'][] = array('name' => $row['Account']['name'],
|
$month['subs'][] = array('name' => $row['Account']['name'],
|
||||||
'charges' => $row[0]['balance']);
|
'amount' => $row[0]['balance']);
|
||||||
|
|
||||||
$month['charges'] += $row[0]['balance'];
|
$month['amount'] += $row[0]['balance'];
|
||||||
$overview['charges'] += $row[0]['balance'];
|
$overview['amount'] += $row[0]['balance'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable the Reports menu section
|
// Enable the Reports menu section
|
||||||
@@ -299,8 +326,26 @@ class StatementEntriesController extends AppController {
|
|||||||
|
|
||||||
// Prepare to render.
|
// Prepare to render.
|
||||||
$this->set('months', $months);
|
$this->set('months', $months);
|
||||||
$this->set('title', 'Monthly Charges');
|
|
||||||
$this->set(compact('overview'));
|
$this->set(compact('overview'));
|
||||||
|
$this->render('chargesbymonth');
|
||||||
|
}
|
||||||
|
|
||||||
|
function incomebymonth($months = 12, $invoice = false) {
|
||||||
|
$this->set('title', 'Monthly Gross Income');
|
||||||
|
$this->set('reptype', 'Gross Income');
|
||||||
|
$this->incexpbymonth(array('INCOME'), $invoice, $months);
|
||||||
|
}
|
||||||
|
|
||||||
|
function expensebymonth($months = 12) {
|
||||||
|
$this->set('title', 'Gross Monthly Expenses');
|
||||||
|
$this->set('reptype', 'Gross Expenses');
|
||||||
|
$this->incexpbymonth(array('EXPENSE'), false, $months);
|
||||||
|
}
|
||||||
|
|
||||||
|
function netbymonth($months = 12) {
|
||||||
|
$this->set('title', 'Net Monthly Income');
|
||||||
|
$this->set('reptype', 'Net Income');
|
||||||
|
$this->incexpbymonth(array('INCOME', 'EXPENSE'), true, $months);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ class TransactionsController extends AppController {
|
|||||||
function deposit_slip($id) {
|
function deposit_slip($id) {
|
||||||
// Find the deposit transaction
|
// Find the deposit transaction
|
||||||
$this->Transaction->id = $id;
|
$this->Transaction->id = $id;
|
||||||
$deposit = $this->Transaction->find('first', array('contain' => false));
|
$deposit = $this->Transaction->find('first', array('contain' => array('Account')));
|
||||||
|
|
||||||
// Get a summary of all forms of tender in the deposit
|
// Get a summary of all forms of tender in the deposit
|
||||||
$tenders = $this->Transaction->find
|
$tenders = $this->Transaction->find
|
||||||
@@ -503,8 +503,8 @@ class TransactionsController extends AppController {
|
|||||||
foreach ($deposit['types'] AS $type)
|
foreach ($deposit['types'] AS $type)
|
||||||
$deposit_total += $type['total'];
|
$deposit_total += $type['total'];
|
||||||
|
|
||||||
if ($deposit['Transaction']['amount'] != $deposit_total)
|
if (abs($deposit['Transaction']['amount'] - $deposit_total) >= .001)
|
||||||
$this->INTERNAL_ERROR("Deposit items do not add up to deposit slip total");
|
$this->INTERNAL_ERROR("Deposit items ($deposit_total) do not add up to deposit slip total (".$deposit['Transaction']['amount'].")");
|
||||||
|
|
||||||
$this->addSideMenuLink('View',
|
$this->addSideMenuLink('View',
|
||||||
array('action' => 'view', $id), null,
|
array('action' => 'view', $id), null,
|
||||||
|
|||||||
@@ -91,8 +91,8 @@ class UnitSizesController extends AppController {
|
|||||||
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionUnavailable() . ', 1, 0)) AS unavailable';
|
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionUnavailable() . ', 1, 0)) AS unavailable';
|
||||||
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionAvailable() . ', 1, 0)) AS available';
|
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionAvailable() . ', 1, 0)) AS available';
|
||||||
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionOccupied() . ', 1, 0)) AS occupied';
|
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionOccupied() . ', 1, 0)) AS occupied';
|
||||||
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionOccupied() . ', 0, 1)) / COUNT(unit.id) AS vacancy';
|
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionOccupied() . ', 0, 1)) / COUNT(Unit.id) AS vacancy';
|
||||||
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionOccupied() . ', 1, 0)) / COUNT(unit.id) AS occupancy';
|
$fields[] = 'SUM(IF(' . $this->UnitSize->Unit->conditionOccupied() . ', 1, 0)) / COUNT(Unit.id) AS occupancy';
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,31 +4,6 @@ class UtilController extends AppController {
|
|||||||
|
|
||||||
var $uses = array();
|
var $uses = array();
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
**************************************************************************
|
|
||||||
**************************************************************************
|
|
||||||
* function: reset_data
|
|
||||||
* - Development function. TO BE DELETED
|
|
||||||
*/
|
|
||||||
|
|
||||||
function reset_data() {
|
|
||||||
$this->layout = null;
|
|
||||||
$this->autoLayout = false;
|
|
||||||
$this->autoRender = false;
|
|
||||||
Configure::write('debug', '0');
|
|
||||||
$script = $_SERVER['DOCUMENT_ROOT'] . '/pmgr/build.cmd';
|
|
||||||
echo "<P>" . date('r') . "\n";
|
|
||||||
//echo "<P>Script: $script" . "\n";
|
|
||||||
$handle = popen($script . ' 2>&1', 'r');
|
|
||||||
//echo "<P>Handle: $handle; " . gettype($handle) . "\n";
|
|
||||||
echo "<P><PRE>\n";
|
|
||||||
while (($read = fread($handle, 2096))) {
|
|
||||||
echo $read;
|
|
||||||
}
|
|
||||||
echo "</PRE>\n";
|
|
||||||
pclose($handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
**************************************************************************
|
**************************************************************************
|
||||||
@@ -40,21 +15,20 @@ class UtilController extends AppController {
|
|||||||
$this->autoLayout = false;
|
$this->autoLayout = false;
|
||||||
$this->autoRender = false;
|
$this->autoRender = false;
|
||||||
Configure::write('debug', '0');
|
Configure::write('debug', '0');
|
||||||
$script = preg_replace('%/webroot/index.php$%',
|
|
||||||
'/build_'.$type.'box.cmd',
|
|
||||||
$_SERVER['SCRIPT_FILENAME']);
|
|
||||||
|
|
||||||
// REVISIT <AP>: 20090828
|
$usrpass = '--user=perki2_pmgruser --password=pmgrauth';
|
||||||
// Just use system call
|
$boxdb = 'perki2_pmgr_' . $type;
|
||||||
$handle = popen($script . ' 2>&1', 'r');
|
|
||||||
|
$handle = popen("mysqldump $usrpass --opt perki2_pmgr" .
|
||||||
|
" | mysql $usrpass --database=$boxdb", 'r');
|
||||||
while (($read = fread($handle, 2096))) {
|
while (($read = fread($handle, 2096))) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
pclose($handle);
|
pclose($handle);
|
||||||
|
|
||||||
$url = $_SERVER['HTTP_REFERER'];
|
$url = $_SERVER['HTTP_REFERER'];
|
||||||
if (empty($url))
|
if (empty($url) || $url == 'undefined')
|
||||||
$url = "/";
|
$url = "/$type";
|
||||||
|
|
||||||
$this->redirect($url);
|
$this->redirect($url);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ class Contact extends AppModel {
|
|||||||
|
|
||||||
// If the user has entered all new data, we need to
|
// If the user has entered all new data, we need to
|
||||||
// save that as a brand new entry.
|
// save that as a brand new entry.
|
||||||
if (!isset($item['id'])) {
|
if (!isset($item['id']) || $item['source'] == 'new') {
|
||||||
$I = new $class();
|
$I = new $class();
|
||||||
$I->create();
|
$I->create();
|
||||||
if (!$I->save($item, false)) {
|
if (!$I->save($item, false)) {
|
||||||
|
|||||||
@@ -347,6 +347,8 @@ class Lease extends AppModel {
|
|||||||
$this->pr(17, compact('date', 'charge_through_date')
|
$this->pr(17, compact('date', 'charge_through_date')
|
||||||
+ array('date_str' => date('Y-m-d', $date),
|
+ array('date_str' => date('Y-m-d', $date),
|
||||||
'charge_through_date_str' => date('Y-m-d', $charge_through_date)));
|
'charge_through_date_str' => date('Y-m-d', $charge_through_date)));
|
||||||
|
if (!$charge_through_date)
|
||||||
|
return $this->prReturn(null);
|
||||||
if ($charge_through_date >= $date)
|
if ($charge_through_date >= $date)
|
||||||
return $this->prReturn(null);
|
return $this->prReturn(null);
|
||||||
|
|
||||||
|
|||||||
@@ -1,471 +1,471 @@
|
|||||||
<?php
|
<?php
|
||||||
/* SVN FILE: $Id$ */
|
/* SVN FILE: $Id$ */
|
||||||
/**
|
/**
|
||||||
* DebugKit DebugToolbar Component
|
* DebugKit DebugToolbar Component
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* PHP versions 4 and 5
|
* PHP versions 4 and 5
|
||||||
*
|
*
|
||||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* 1785 E. Sahara Avenue, Suite 490-204
|
* 1785 E. Sahara Avenue, Suite 490-204
|
||||||
* Las Vegas, Nevada 89104
|
* Las Vegas, Nevada 89104
|
||||||
*
|
*
|
||||||
* Licensed under The MIT License
|
* Licensed under The MIT License
|
||||||
* Redistributions of files must retain the above copyright notice.
|
* Redistributions of files must retain the above copyright notice.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||||
* @package cake
|
* @package cake
|
||||||
* @subpackage cake.cake.libs.
|
* @subpackage cake.cake.libs.
|
||||||
* @since CakePHP v 1.2.0.4487
|
* @since CakePHP v 1.2.0.4487
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
* @modifiedby $LastChangedBy$
|
* @modifiedby $LastChangedBy$
|
||||||
* @lastmodified $Date$
|
* @lastmodified $Date$
|
||||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||||
*/
|
*/
|
||||||
class ToolbarComponent extends Object {
|
class ToolbarComponent extends Object {
|
||||||
/**
|
/**
|
||||||
* Controller instance reference
|
* Controller instance reference
|
||||||
*
|
*
|
||||||
* @var object
|
* @var object
|
||||||
*/
|
*/
|
||||||
var $controller;
|
var $controller;
|
||||||
/**
|
/**
|
||||||
* Components used by DebugToolbar
|
* Components used by DebugToolbar
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
var $components = array('RequestHandler');
|
var $components = array('RequestHandler');
|
||||||
/**
|
/**
|
||||||
* The default panels the toolbar uses.
|
* The default panels the toolbar uses.
|
||||||
* which panels are used can be configured when attaching the component
|
* which panels are used can be configured when attaching the component
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
var $_defaultPanels = array('session', 'request', 'sqlLog', 'timer', 'log', 'memory', 'variables');
|
var $_defaultPanels = array('session', 'request', 'sqlLog', 'timer', 'log', 'memory', 'variables');
|
||||||
/**
|
/**
|
||||||
* Loaded panel objects.
|
* Loaded panel objects.
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
var $panels = array();
|
var $panels = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fallback for javascript settings
|
* fallback for javascript settings
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
**/
|
**/
|
||||||
var $_defaultJavascript = array(
|
var $_defaultJavascript = array(
|
||||||
'behavior' => '/debug_kit/js/js_debug_toolbar'
|
'behavior' => '/debug_kit/js/js_debug_toolbar'
|
||||||
);
|
);
|
||||||
/**
|
/**
|
||||||
* javascript files component will be using.
|
* javascript files component will be using.
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
**/
|
**/
|
||||||
var $javascript = array();
|
var $javascript = array();
|
||||||
/**
|
/**
|
||||||
* initialize
|
* initialize
|
||||||
*
|
*
|
||||||
* If debug is off the component will be disabled and not do any further time tracking
|
* If debug is off the component will be disabled and not do any further time tracking
|
||||||
* or load the toolbar helper.
|
* or load the toolbar helper.
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
**/
|
**/
|
||||||
function initialize(&$controller, $settings) {
|
function initialize(&$controller, $settings) {
|
||||||
if (Configure::read('debug') == 0) {
|
if (Configure::read('debug') == 0) {
|
||||||
$this->enabled = false;
|
$this->enabled = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
||||||
|
|
||||||
DebugKitDebugger::startTimer('componentInit', __('Component initialization and startup', true));
|
DebugKitDebugger::startTimer('componentInit', __('Component initialization and startup', true));
|
||||||
if (!isset($settings['panels'])) {
|
if (!isset($settings['panels'])) {
|
||||||
$settings['panels'] = $this->_defaultPanels;
|
$settings['panels'] = $this->_defaultPanels;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($settings['javascript'])) {
|
if (isset($settings['javascript'])) {
|
||||||
$settings['javascript'] = $this->_setJavascript($settings['javascript']);
|
$settings['javascript'] = $this->_setJavascript($settings['javascript']);
|
||||||
} else {
|
} else {
|
||||||
$settings['javascript'] = $this->_defaultJavascript;
|
$settings['javascript'] = $this->_defaultJavascript;
|
||||||
}
|
}
|
||||||
$this->_loadPanels($settings['panels']);
|
$this->_loadPanels($settings['panels']);
|
||||||
unset($settings['panels']);
|
unset($settings['panels']);
|
||||||
|
|
||||||
$this->_set($settings);
|
$this->_set($settings);
|
||||||
$this->controller =& $controller;
|
$this->controller =& $controller;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component Startup
|
* Component Startup
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
**/
|
**/
|
||||||
function startup(&$controller) {
|
function startup(&$controller) {
|
||||||
$currentViewClass = $controller->view;
|
$currentViewClass = $controller->view;
|
||||||
$this->_makeViewClass($currentViewClass);
|
$this->_makeViewClass($currentViewClass);
|
||||||
$controller->view = 'DebugKit.Debug';
|
$controller->view = 'DebugKit.Debug';
|
||||||
if (!isset($controller->params['url']['ext']) || (isset($controller->params['url']['ext']) && $controller->params['url']['ext'] == 'html')) {
|
if (!isset($controller->params['url']['ext']) || (isset($controller->params['url']['ext']) && $controller->params['url']['ext'] == 'html')) {
|
||||||
$format = 'Html';
|
$format = 'Html';
|
||||||
} else {
|
} else {
|
||||||
$format = 'FirePhp';
|
$format = 'FirePhp';
|
||||||
}
|
}
|
||||||
$controller->helpers['DebugKit.Toolbar'] = array('output' => sprintf('DebugKit.%sToolbar', $format));
|
$controller->helpers['DebugKit.Toolbar'] = array('output' => sprintf('DebugKit.%sToolbar', $format));
|
||||||
$panels = array_keys($this->panels);
|
$panels = array_keys($this->panels);
|
||||||
foreach ($panels as $panelName) {
|
foreach ($panels as $panelName) {
|
||||||
$this->panels[$panelName]->startup($controller);
|
$this->panels[$panelName]->startup($controller);
|
||||||
}
|
}
|
||||||
DebugKitDebugger::stopTimer('componentInit');
|
DebugKitDebugger::stopTimer('componentInit');
|
||||||
DebugKitDebugger::startTimer('controllerAction', __('Controller Action', true));
|
DebugKitDebugger::startTimer('controllerAction', __('Controller Action', true));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* beforeRender callback
|
* beforeRender callback
|
||||||
*
|
*
|
||||||
* Calls beforeRender on all the panels and set the aggregate to the controller.
|
* Calls beforeRender on all the panels and set the aggregate to the controller.
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function beforeRender(&$controller) {
|
function beforeRender(&$controller) {
|
||||||
DebugKitDebugger::stopTimer('controllerAction');
|
DebugKitDebugger::stopTimer('controllerAction');
|
||||||
$vars = array();
|
$vars = array();
|
||||||
$panels = array_keys($this->panels);
|
$panels = array_keys($this->panels);
|
||||||
|
|
||||||
foreach ($panels as $panelName) {
|
foreach ($panels as $panelName) {
|
||||||
$panel =& $this->panels[$panelName];
|
$panel =& $this->panels[$panelName];
|
||||||
$vars[$panelName]['content'] = $panel->beforeRender($controller);
|
$vars[$panelName]['content'] = $panel->beforeRender($controller);
|
||||||
$elementName = Inflector::underscore($panelName) . '_panel';
|
$elementName = Inflector::underscore($panelName) . '_panel';
|
||||||
if (isset($panel->elementName)) {
|
if (isset($panel->elementName)) {
|
||||||
$elementName = $panel->elementName;
|
$elementName = $panel->elementName;
|
||||||
}
|
}
|
||||||
$vars[$panelName]['elementName'] = $elementName;
|
$vars[$panelName]['elementName'] = $elementName;
|
||||||
$vars[$panelName]['plugin'] = $panel->plugin;
|
$vars[$panelName]['plugin'] = $panel->plugin;
|
||||||
$vars[$panelName]['disableTimer'] = true;
|
$vars[$panelName]['disableTimer'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$controller->set(array('debugToolbarPanels' => $vars, 'debugToolbarJavascript' => $this->javascript));
|
$controller->set(array('debugToolbarPanels' => $vars, 'debugToolbarJavascript' => $this->javascript));
|
||||||
DebugKitDebugger::startTimer('controllerRender', __('Render Controller Action', true));
|
DebugKitDebugger::startTimer('controllerRender', __('Render Controller Action', true));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load Panels used in the debug toolbar
|
* Load Panels used in the debug toolbar
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
* @access protected
|
* @access protected
|
||||||
**/
|
**/
|
||||||
function _loadPanels($panels) {
|
function _loadPanels($panels) {
|
||||||
foreach ($panels as $panel) {
|
foreach ($panels as $panel) {
|
||||||
$className = $panel . 'Panel';
|
$className = $panel . 'Panel';
|
||||||
if (!class_exists($className) && !App::import('Vendor', $className)) {
|
if (!class_exists($className) && !App::import('Vendor', $className)) {
|
||||||
trigger_error(sprintf(__('Could not load DebugToolbar panel %s', true), $panel), E_USER_WARNING);
|
trigger_error(sprintf(__('Could not load DebugToolbar panel %s', true), $panel), E_USER_WARNING);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$panelObj = new $className();
|
$panelObj = new $className();
|
||||||
if (is_subclass_of($panelObj, 'DebugPanel') || is_subclass_of($panelObj, 'debugpanel')) {
|
if (is_subclass_of($panelObj, 'DebugPanel') || is_subclass_of($panelObj, 'debugpanel')) {
|
||||||
$this->panels[$panel] =& $panelObj;
|
$this->panels[$panel] =& $panelObj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the javascript to user scripts.
|
* Set the javascript to user scripts.
|
||||||
*
|
*
|
||||||
* Set either script key to false to exclude it from the rendered layout.
|
* Set either script key to false to exclude it from the rendered layout.
|
||||||
*
|
*
|
||||||
* @param array $scripts Javascript config information
|
* @param array $scripts Javascript config information
|
||||||
* @return array
|
* @return array
|
||||||
* @access protected
|
* @access protected
|
||||||
**/
|
**/
|
||||||
function _setJavascript($scripts) {
|
function _setJavascript($scripts) {
|
||||||
$behavior = false;
|
$behavior = false;
|
||||||
if (!is_array($scripts)) {
|
if (!is_array($scripts)) {
|
||||||
$scripts = (array)$scripts;
|
$scripts = (array)$scripts;
|
||||||
}
|
}
|
||||||
if (isset($scripts[0])) {
|
if (isset($scripts[0])) {
|
||||||
$behavior = $scripts[0];
|
$behavior = $scripts[0];
|
||||||
}
|
}
|
||||||
if (isset($scripts['behavior'])) {
|
if (isset($scripts['behavior'])) {
|
||||||
$behavior = $scripts['behavior'];
|
$behavior = $scripts['behavior'];
|
||||||
}
|
}
|
||||||
if (!$behavior) {
|
if (!$behavior) {
|
||||||
return array();
|
return array();
|
||||||
} elseif ($behavior === true) {
|
} elseif ($behavior === true) {
|
||||||
$behavior = 'js';
|
$behavior = 'js';
|
||||||
}
|
}
|
||||||
if (strpos($behavior, '/') !== 0) {
|
if (strpos($behavior, '/') !== 0) {
|
||||||
$behavior .= '_debug_toolbar';
|
$behavior .= '_debug_toolbar';
|
||||||
}
|
}
|
||||||
$pluginFile = APP . 'plugins' . DS . 'debug_kit' . DS . 'vendors' . DS . 'js' . DS . $behavior . '.js';
|
$pluginFile = APP . 'plugins' . DS . 'debug_kit' . DS . 'vendors' . DS . 'js' . DS . $behavior . '.js';
|
||||||
if (file_exists($pluginFile)) {
|
if (file_exists($pluginFile)) {
|
||||||
$behavior = '/debug_kit/js/' . $behavior . '.js';
|
$behavior = '/debug_kit/js/' . $behavior . '.js';
|
||||||
}
|
}
|
||||||
return compact('behavior');
|
return compact('behavior');
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Makes the DoppleGangerView class if it doesn't already exist.
|
* Makes the DoppleGangerView class if it doesn't already exist.
|
||||||
* This allows DebugView to be compatible with all view classes.
|
* This allows DebugView to be compatible with all view classes.
|
||||||
*
|
*
|
||||||
* @param string $baseClassName
|
* @param string $baseClassName
|
||||||
* @access protected
|
* @access protected
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function _makeViewClass($baseClassName) {
|
function _makeViewClass($baseClassName) {
|
||||||
if (!class_exists('DoppelGangerView')) {
|
if (!class_exists('DoppelGangerView')) {
|
||||||
App::import('View', $baseClassName);
|
App::import('View', $baseClassName);
|
||||||
if (strpos('View', $baseClassName) === false) {
|
if (strpos('View', $baseClassName) === false) {
|
||||||
$baseClassName .= 'View';
|
$baseClassName .= 'View';
|
||||||
}
|
}
|
||||||
$class = "class DoppelGangerView extends $baseClassName {}";
|
$class = "class DoppelGangerView extends $baseClassName {}";
|
||||||
eval($class);
|
eval($class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Debug Panel
|
* Debug Panel
|
||||||
*
|
*
|
||||||
* Abstract class for debug panels.
|
* Abstract class for debug panels.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit
|
* @package cake.debug_kit
|
||||||
*/
|
*/
|
||||||
class DebugPanel extends Object {
|
class DebugPanel extends Object {
|
||||||
/**
|
/**
|
||||||
* Defines which plugin this panel is from so the element can be located.
|
* Defines which plugin this panel is from so the element can be located.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
var $plugin = null;
|
var $plugin = null;
|
||||||
/**
|
/**
|
||||||
* startup the panel
|
* startup the panel
|
||||||
*
|
*
|
||||||
* Pull information from the controller / request
|
* Pull information from the controller / request
|
||||||
*
|
*
|
||||||
* @param object $controller Controller reference.
|
* @param object $controller Controller reference.
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startup(&$controller) { }
|
function startup(&$controller) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare output vars before Controller Rendering.
|
* Prepare output vars before Controller Rendering.
|
||||||
*
|
*
|
||||||
* @param object $controller Controller reference.
|
* @param object $controller Controller reference.
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function beforeRender(&$controller) { }
|
function beforeRender(&$controller) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Variables Panel
|
* Variables Panel
|
||||||
*
|
*
|
||||||
* Provides debug information on the View variables.
|
* Provides debug information on the View variables.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
**/
|
**/
|
||||||
class VariablesPanel extends DebugPanel {
|
class VariablesPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Session Panel
|
* Session Panel
|
||||||
*
|
*
|
||||||
* Provides debug information on the Session contents.
|
* Provides debug information on the Session contents.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
**/
|
**/
|
||||||
class SessionPanel extends DebugPanel {
|
class SessionPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
/**
|
/**
|
||||||
* beforeRender callback
|
* beforeRender callback
|
||||||
*
|
*
|
||||||
* @param object $controller
|
* @param object $controller
|
||||||
* @access public
|
* @access public
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function beforeRender(&$controller) {
|
function beforeRender(&$controller) {
|
||||||
return $controller->Session->read();
|
return $controller->Session->read();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request Panel
|
* Request Panel
|
||||||
*
|
*
|
||||||
* Provides debug information on the Current request params.
|
* Provides debug information on the Current request params.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
**/
|
**/
|
||||||
class RequestPanel extends DebugPanel {
|
class RequestPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
/**
|
/**
|
||||||
* beforeRender callback - grabs request params
|
* beforeRender callback - grabs request params
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
**/
|
**/
|
||||||
function beforeRender(&$controller) {
|
function beforeRender(&$controller) {
|
||||||
$out = array();
|
$out = array();
|
||||||
$out['params'] = $controller->params;
|
$out['params'] = $controller->params;
|
||||||
if (isset($controller->Cookie)) {
|
if (isset($controller->Cookie)) {
|
||||||
$out['cookie'] = $controller->Cookie->read();
|
$out['cookie'] = $controller->Cookie->read();
|
||||||
}
|
}
|
||||||
$out['get'] = $_GET;
|
$out['get'] = $_GET;
|
||||||
$out['currentRoute'] = Router::currentRoute();
|
$out['currentRoute'] = Router::currentRoute();
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Timer Panel
|
* Timer Panel
|
||||||
*
|
*
|
||||||
* Provides debug information on all timers used in a request.
|
* Provides debug information on all timers used in a request.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
**/
|
**/
|
||||||
class TimerPanel extends DebugPanel {
|
class TimerPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
/**
|
/**
|
||||||
* startup - add in necessary helpers
|
* startup - add in necessary helpers
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startup(&$controller) {
|
function startup(&$controller) {
|
||||||
if (!in_array('Number', $controller->helpers)) {
|
if (!in_array('Number', $controller->helpers)) {
|
||||||
$controller->helpers[] = 'Number';
|
$controller->helpers[] = 'Number';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memory Panel
|
* Memory Panel
|
||||||
*
|
*
|
||||||
* Provides debug information on the memory consumption.
|
* Provides debug information on the memory consumption.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
**/
|
**/
|
||||||
class MemoryPanel extends DebugPanel {
|
class MemoryPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
/**
|
/**
|
||||||
* startup - add in necessary helpers
|
* startup - add in necessary helpers
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startup(&$controller) {
|
function startup(&$controller) {
|
||||||
if (!in_array('Number', $controller->helpers)) {
|
if (!in_array('Number', $controller->helpers)) {
|
||||||
$controller->helpers[] = 'Number';
|
$controller->helpers[] = 'Number';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sqlLog Panel
|
* sqlLog Panel
|
||||||
*
|
*
|
||||||
* Provides debug information on the SQL logs and provides links to an ajax explain interface.
|
* Provides debug information on the SQL logs and provides links to an ajax explain interface.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
**/
|
**/
|
||||||
class sqlLogPanel extends DebugPanel {
|
class sqlLogPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
|
|
||||||
var $dbConfigs = array();
|
var $dbConfigs = array();
|
||||||
/**
|
/**
|
||||||
* get db configs.
|
* get db configs.
|
||||||
*
|
*
|
||||||
* @param string $controller
|
* @param string $controller
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function startUp(&$controller) {
|
function startUp(&$controller) {
|
||||||
if (!class_exists('ConnectionManager')) {
|
if (!class_exists('ConnectionManager')) {
|
||||||
$this->dbConfigs = array();
|
$this->dbConfigs = array();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->dbConfigs = ConnectionManager::sourceList();
|
$this->dbConfigs = ConnectionManager::sourceList();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Get Sql Logs for each DB config
|
* Get Sql Logs for each DB config
|
||||||
*
|
*
|
||||||
* @param string $controller
|
* @param string $controller
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function beforeRender(&$controller) {
|
function beforeRender(&$controller) {
|
||||||
$queryLogs = array();
|
$queryLogs = array();
|
||||||
if (!class_exists('ConnectionManager')) {
|
if (!class_exists('ConnectionManager')) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
foreach ($this->dbConfigs as $configName) {
|
foreach ($this->dbConfigs as $configName) {
|
||||||
$db =& ConnectionManager::getDataSource($configName);
|
$db =& ConnectionManager::getDataSource($configName);
|
||||||
if ($db->isInterfaceSupported('showLog')) {
|
if ($db->isInterfaceSupported('showLog')) {
|
||||||
ob_start();
|
ob_start();
|
||||||
$db->showLog();
|
$db->showLog();
|
||||||
$queryLogs[$configName] = ob_get_clean();
|
$queryLogs[$configName] = ob_get_clean();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $queryLogs;
|
return $queryLogs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log Panel - Reads log entries made this request.
|
* Log Panel - Reads log entries made this request.
|
||||||
*
|
*
|
||||||
* @package cake.debug_kit.panels
|
* @package cake.debug_kit.panels
|
||||||
*/
|
*/
|
||||||
class LogPanel extends DebugPanel {
|
class LogPanel extends DebugPanel {
|
||||||
var $plugin = 'debug_kit';
|
var $plugin = 'debug_kit';
|
||||||
/**
|
/**
|
||||||
* Log files to scan
|
* Log files to scan
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
var $logFiles = array('error.log', 'debug.log');
|
var $logFiles = array('error.log', 'debug.log');
|
||||||
/**
|
/**
|
||||||
* startup
|
* startup
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startup(&$controller) {
|
function startup(&$controller) {
|
||||||
if (!class_exists('CakeLog')) {
|
if (!class_exists('CakeLog')) {
|
||||||
App::import('Core', 'Log');
|
App::import('Core', 'Log');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* beforeRender Callback
|
* beforeRender Callback
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
**/
|
**/
|
||||||
function beforeRender(&$controller) {
|
function beforeRender(&$controller) {
|
||||||
$this->startTime = DebugKitDebugger::requestStartTime();
|
$this->startTime = DebugKitDebugger::requestStartTime();
|
||||||
$this->currentTime = DebugKitDebugger::requestTime();
|
$this->currentTime = DebugKitDebugger::requestTime();
|
||||||
$out = array();
|
$out = array();
|
||||||
foreach ($this->logFiles as $log) {
|
foreach ($this->logFiles as $log) {
|
||||||
$file = LOGS . $log;
|
$file = LOGS . $log;
|
||||||
if (!file_exists($file)) {
|
if (!file_exists($file)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$out[$log] = $this->_parseFile($file);
|
$out[$log] = $this->_parseFile($file);
|
||||||
}
|
}
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* parse a log file and find the relevant entries
|
* parse a log file and find the relevant entries
|
||||||
*
|
*
|
||||||
* @param string $filename Name of file to read
|
* @param string $filename Name of file to read
|
||||||
* @access protected
|
* @access protected
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function _parseFile($filename) {
|
function _parseFile($filename) {
|
||||||
$file = new File($filename);
|
$file = new File($filename);
|
||||||
$contents = $file->read();
|
$contents = $file->read();
|
||||||
$timePattern = '/(\d{4}-\d{2}\-\d{2}\s\d{1,2}\:\d{1,2}\:\d{1,2})/';
|
$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);
|
$chunks = preg_split($timePattern, $contents, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
|
||||||
for ($i = 0, $len = count($chunks); $i < $len; $i += 2) {
|
for ($i = 0, $len = count($chunks); $i < $len; $i += 2) {
|
||||||
if (strtotime($chunks[$i]) < $this->startTime) {
|
if (strtotime($chunks[$i]) < $this->startTime) {
|
||||||
unset($chunks[$i], $chunks[$i + 1]);
|
unset($chunks[$i], $chunks[$i + 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return array_values($chunks);
|
return array_values($chunks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -1,144 +1,144 @@
|
|||||||
<?php
|
<?php
|
||||||
/* SVN FILE: $Id$ */
|
/* SVN FILE: $Id$ */
|
||||||
/**
|
/**
|
||||||
* DebugView test Case
|
* DebugView test Case
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* PHP versions 4 and 5
|
* PHP versions 4 and 5
|
||||||
*
|
*
|
||||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* 1785 E. Sahara Avenue, Suite 490-204
|
* 1785 E. Sahara Avenue, Suite 490-204
|
||||||
* Las Vegas, Nevada 89104
|
* Las Vegas, Nevada 89104
|
||||||
*
|
*
|
||||||
* Licensed under The MIT License
|
* Licensed under The MIT License
|
||||||
* Redistributions of files must retain the above copyright notice.
|
* Redistributions of files must retain the above copyright notice.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||||
* @package cake
|
* @package cake
|
||||||
* @subpackage cake.cake.libs.
|
* @subpackage cake.cake.libs.
|
||||||
* @since CakePHP v 1.2.0.4487
|
* @since CakePHP v 1.2.0.4487
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
* @modifiedby $LastChangedBy$
|
* @modifiedby $LastChangedBy$
|
||||||
* @lastmodified $Date$
|
* @lastmodified $Date$
|
||||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||||
*/
|
*/
|
||||||
App::import('Core', 'View');
|
App::import('Core', 'View');
|
||||||
|
|
||||||
if (!class_exists('DoppelGangerView')) {
|
if (!class_exists('DoppelGangerView')) {
|
||||||
class DoppelGangerView extends View {}
|
class DoppelGangerView extends View {}
|
||||||
}
|
}
|
||||||
|
|
||||||
App::import('View', 'DebugKit.Debug');
|
App::import('View', 'DebugKit.Debug');
|
||||||
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
App::import('Vendor', 'DebugKit.DebugKitDebugger');
|
||||||
/**
|
/**
|
||||||
* Debug View Test Case
|
* Debug View Test Case
|
||||||
*
|
*
|
||||||
* @package debug_kit.tests
|
* @package debug_kit.tests
|
||||||
*/
|
*/
|
||||||
class DebugViewTestCase extends CakeTestCase {
|
class DebugViewTestCase extends CakeTestCase {
|
||||||
/**
|
/**
|
||||||
* set Up test case
|
* set Up test case
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function setUp() {
|
function setUp() {
|
||||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||||
Router::parse('/');
|
Router::parse('/');
|
||||||
$this->Controller =& ClassRegistry::init('Controller');
|
$this->Controller =& ClassRegistry::init('Controller');
|
||||||
$this->View = new DebugView($this->Controller, false);
|
$this->View =& new DebugView($this->Controller, false);
|
||||||
$this->_debug = Configure::read('debug');
|
$this->_debug = Configure::read('debug');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* start Case - switch view paths
|
* start Case - switch view paths
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startCase() {
|
function startCase() {
|
||||||
$this->_viewPaths = Configure::read('viewPaths');
|
$this->_viewPaths = Configure::read('viewPaths');
|
||||||
Configure::write('viewPaths', array(
|
Configure::write('viewPaths', array(
|
||||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||||
ROOT . DS . LIBS . 'view' . DS
|
ROOT . DS . LIBS . 'view' . DS
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test that element timers are working
|
* test that element timers are working
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function testElementTimers() {
|
function testElementTimers() {
|
||||||
$result = $this->View->element('test_element');
|
$result = $this->View->element('test_element');
|
||||||
$this->assertPattern('/^this is the test element$/', $result);
|
$this->assertPattern('/^this is the test element$/', $result);
|
||||||
|
|
||||||
$result = DebugKitDebugger::getTimers();
|
$result = DebugKitDebugger::getTimers();
|
||||||
$this->assertTrue(isset($result['render_test_element.ctp']));
|
$this->assertTrue(isset($result['render_test_element.ctp']));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test rendering and ensure that timers are being set.
|
* test rendering and ensure that timers are being set.
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function testRenderTimers() {
|
function testRenderTimers() {
|
||||||
$this->Controller->viewPath = 'posts';
|
$this->Controller->viewPath = 'posts';
|
||||||
$this->Controller->action = 'index';
|
$this->Controller->action = 'index';
|
||||||
$this->Controller->params = array(
|
$this->Controller->params = array(
|
||||||
'action' => 'index',
|
'action' => 'index',
|
||||||
'controller' => 'posts',
|
'controller' => 'posts',
|
||||||
'plugin' => null,
|
'plugin' => null,
|
||||||
'url' => array('url' => 'posts/index'),
|
'url' => array('url' => 'posts/index'),
|
||||||
'base' => null,
|
'base' => null,
|
||||||
'here' => '/posts/index',
|
'here' => '/posts/index',
|
||||||
);
|
);
|
||||||
$this->Controller->layout = 'default';
|
$this->Controller->layout = 'default';
|
||||||
$View = new DebugView($this->Controller, false);
|
$View =& new DebugView($this->Controller, false);
|
||||||
$View->render('index');
|
$View->render('index');
|
||||||
|
|
||||||
$result = DebugKitDebugger::getTimers();
|
$result = DebugKitDebugger::getTimers();
|
||||||
$this->assertEqual(count($result), 3);
|
$this->assertEqual(count($result), 3);
|
||||||
$this->assertTrue(isset($result['viewRender']));
|
$this->assertTrue(isset($result['viewRender']));
|
||||||
$this->assertTrue(isset($result['render_default.ctp']));
|
$this->assertTrue(isset($result['render_default.ctp']));
|
||||||
$this->assertTrue(isset($result['render_index.ctp']));
|
$this->assertTrue(isset($result['render_index.ctp']));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for correct loading of helpers into custom view
|
* Test for correct loading of helpers into custom view
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function testLoadHelpers() {
|
function testLoadHelpers() {
|
||||||
$loaded = array();
|
$loaded = array();
|
||||||
$result = $this->View->_loadHelpers($loaded, array('Html', 'Javascript', 'Number'));
|
$result = $this->View->_loadHelpers($loaded, array('Html', 'Javascript', 'Number'));
|
||||||
$this->assertTrue(is_object($result['Html']));
|
$this->assertTrue(is_object($result['Html']));
|
||||||
$this->assertTrue(is_object($result['Javascript']));
|
$this->assertTrue(is_object($result['Javascript']));
|
||||||
$this->assertTrue(is_object($result['Number']));
|
$this->assertTrue(is_object($result['Number']));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* reset the view paths
|
* reset the view paths
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function endCase() {
|
function endCase() {
|
||||||
Configure::write('viewPaths', $this->_viewPaths);
|
Configure::write('viewPaths', $this->_viewPaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tear down function
|
* tear down function
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function tearDown() {
|
function tearDown() {
|
||||||
unset($this->View, $this->Controller);
|
unset($this->View, $this->Controller);
|
||||||
DebugKitDebugger::clearTimers();
|
DebugKitDebugger::clearTimers();
|
||||||
Configure::write('debug', $this->_debug);
|
Configure::write('debug', $this->_debug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -1,137 +1,137 @@
|
|||||||
<?php
|
<?php
|
||||||
/* SVN FILE: $Id$ */
|
/* SVN FILE: $Id$ */
|
||||||
/**
|
/**
|
||||||
* Toolbar Abstract Helper Test Case
|
* Toolbar Abstract Helper Test Case
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* PHP versions 4 and 5
|
* PHP versions 4 and 5
|
||||||
*
|
*
|
||||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* 1785 E. Sahara Avenue, Suite 490-204
|
* 1785 E. Sahara Avenue, Suite 490-204
|
||||||
* Las Vegas, Nevada 89104
|
* Las Vegas, Nevada 89104
|
||||||
*
|
*
|
||||||
* Licensed under The MIT License
|
* Licensed under The MIT License
|
||||||
* Redistributions of files must retain the above copyright notice.
|
* Redistributions of files must retain the above copyright notice.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||||
* @package cake
|
* @package cake
|
||||||
* @subpackage debug_kit.tests.views.helpers
|
* @subpackage debug_kit.tests.views.helpers
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
* @modifiedby $LastChangedBy$
|
* @modifiedby $LastChangedBy$
|
||||||
* @lastmodified $Date$
|
* @lastmodified $Date$
|
||||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||||
*/
|
*/
|
||||||
App::import('Helper', 'DebugKit.FirePhpToolbar');
|
App::import('Helper', 'DebugKit.FirePhpToolbar');
|
||||||
App::import('Core', array('View', 'Controller'));
|
App::import('Core', array('View', 'Controller'));
|
||||||
require_once APP . 'plugins' . DS . 'debug_kit' . DS . 'tests' . DS . 'cases' . DS . 'test_objects.php';
|
require_once APP . 'plugins' . DS . 'debug_kit' . DS . 'tests' . DS . 'cases' . DS . 'test_objects.php';
|
||||||
|
|
||||||
FireCake::getInstance('TestFireCake');
|
FireCake::getInstance('TestFireCake');
|
||||||
|
|
||||||
class FirePhpToolbarHelperTestCase extends CakeTestCase {
|
class FirePhpToolbarHelperTestCase extends CakeTestCase {
|
||||||
/**
|
/**
|
||||||
* setUp
|
* setUp
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function setUp() {
|
function setUp() {
|
||||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||||
Router::parse('/');
|
Router::parse('/');
|
||||||
|
|
||||||
$this->Toolbar = new ToolbarHelper(array('output' => 'DebugKit.FirePhpToolbar'));
|
$this->Toolbar =& new ToolbarHelper(array('output' => 'DebugKit.FirePhpToolbar'));
|
||||||
$this->Toolbar->FirePhpToolbar = new FirePhpToolbarHelper();
|
$this->Toolbar->FirePhpToolbar =& new FirePhpToolbarHelper();
|
||||||
|
|
||||||
$this->Controller =& ClassRegistry::init('Controller');
|
$this->Controller =& ClassRegistry::init('Controller');
|
||||||
if (isset($this->_debug)) {
|
if (isset($this->_debug)) {
|
||||||
Configure::write('debug', $this->_debug);
|
Configure::write('debug', $this->_debug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* start Case - switch view paths
|
* start Case - switch view paths
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startCase() {
|
function startCase() {
|
||||||
$this->_viewPaths = Configure::read('viewPaths');
|
$this->_viewPaths = Configure::read('viewPaths');
|
||||||
Configure::write('viewPaths', array(
|
Configure::write('viewPaths', array(
|
||||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||||
ROOT . DS . LIBS . 'view' . DS
|
ROOT . DS . LIBS . 'view' . DS
|
||||||
));
|
));
|
||||||
$this->_debug = Configure::read('debug');
|
$this->_debug = Configure::read('debug');
|
||||||
$this->firecake =& FireCake::getInstance();
|
$this->firecake =& FireCake::getInstance();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* test neat array (dump)creation
|
* test neat array (dump)creation
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function testMakeNeatArray() {
|
function testMakeNeatArray() {
|
||||||
$this->Toolbar->makeNeatArray(array(1,2,3));
|
$this->Toolbar->makeNeatArray(array(1,2,3));
|
||||||
$result = $this->firecake->sentHeaders;
|
$result = $this->firecake->sentHeaders;
|
||||||
$this->assertTrue(isset($result['X-Wf-1-1-1-1']));
|
$this->assertTrue(isset($result['X-Wf-1-1-1-1']));
|
||||||
$this->assertPattern('/\[1,2,3\]/', $result['X-Wf-1-1-1-1']);
|
$this->assertPattern('/\[1,2,3\]/', $result['X-Wf-1-1-1-1']);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* testAfterlayout element rendering
|
* testAfterlayout element rendering
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function testAfterLayout(){
|
function testAfterLayout(){
|
||||||
$this->Controller->viewPath = 'posts';
|
$this->Controller->viewPath = 'posts';
|
||||||
$this->Controller->action = 'index';
|
$this->Controller->action = 'index';
|
||||||
$this->Controller->params = array(
|
$this->Controller->params = array(
|
||||||
'action' => 'index',
|
'action' => 'index',
|
||||||
'controller' => 'posts',
|
'controller' => 'posts',
|
||||||
'plugin' => null,
|
'plugin' => null,
|
||||||
'url' => array('url' => 'posts/index', 'ext' => 'xml'),
|
'url' => array('url' => 'posts/index', 'ext' => 'xml'),
|
||||||
'base' => null,
|
'base' => null,
|
||||||
'here' => '/posts/index',
|
'here' => '/posts/index',
|
||||||
);
|
);
|
||||||
$this->Controller->layout = 'default';
|
$this->Controller->layout = 'default';
|
||||||
$this->Controller->uses = null;
|
$this->Controller->uses = null;
|
||||||
$this->Controller->components = array('DebugKit.Toolbar');
|
$this->Controller->components = array('DebugKit.Toolbar');
|
||||||
$this->Controller->constructClasses();
|
$this->Controller->constructClasses();
|
||||||
$this->Controller->Component->initialize($this->Controller);
|
$this->Controller->Component->initialize($this->Controller);
|
||||||
$this->Controller->Component->startup($this->Controller);
|
$this->Controller->Component->startup($this->Controller);
|
||||||
$this->Controller->Component->beforeRender($this->Controller);
|
$this->Controller->Component->beforeRender($this->Controller);
|
||||||
$result = $this->Controller->render();
|
$result = $this->Controller->render();
|
||||||
$this->assertNoPattern('/debug-toolbar/', $result);
|
$this->assertNoPattern('/debug-toolbar/', $result);
|
||||||
$result = $this->firecake->sentHeaders;
|
$result = $this->firecake->sentHeaders;
|
||||||
$this->assertTrue(is_array($result));
|
$this->assertTrue(is_array($result));
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* endTest()
|
* endTest()
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function endTest() {
|
function endTest() {
|
||||||
TestFireCake::reset();
|
TestFireCake::reset();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* reset the view paths
|
* reset the view paths
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function endCase() {
|
function endCase() {
|
||||||
Configure::write('viewPaths', $this->_viewPaths);
|
Configure::write('viewPaths', $this->_viewPaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tearDown
|
* tearDown
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function tearDown() {
|
function tearDown() {
|
||||||
unset($this->Toolbar, $this->Controller);
|
unset($this->Toolbar, $this->Controller);
|
||||||
ClassRegistry::removeObject('view');
|
ClassRegistry::removeObject('view');
|
||||||
ClassRegistry::flush();
|
ClassRegistry::flush();
|
||||||
Router::reload();
|
Router::reload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -1,358 +1,358 @@
|
|||||||
<?php
|
<?php
|
||||||
/* SVN FILE: $Id$ */
|
/* SVN FILE: $Id$ */
|
||||||
/**
|
/**
|
||||||
* Toolbar HTML Helper Test Case
|
* Toolbar HTML Helper Test Case
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* PHP versions 4 and 5
|
* PHP versions 4 and 5
|
||||||
*
|
*
|
||||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||||
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
* Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* 1785 E. Sahara Avenue, Suite 490-204
|
* 1785 E. Sahara Avenue, Suite 490-204
|
||||||
* Las Vegas, Nevada 89104
|
* Las Vegas, Nevada 89104
|
||||||
*
|
*
|
||||||
* Licensed under The MIT License
|
* Licensed under The MIT License
|
||||||
* Redistributions of files must retain the above copyright notice.
|
* Redistributions of files must retain the above copyright notice.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
* @copyright Copyright 2006-2008, Cake Software Foundation, Inc.
|
||||||
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
||||||
* @package cake
|
* @package cake
|
||||||
* @subpackage debug_kit.tests.views.helpers
|
* @subpackage debug_kit.tests.views.helpers
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
* @modifiedby $LastChangedBy$
|
* @modifiedby $LastChangedBy$
|
||||||
* @lastmodified $Date$
|
* @lastmodified $Date$
|
||||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||||
*/
|
*/
|
||||||
App::import('Helper', array('DebugKit.HtmlToolbar', 'Html', 'Javascript'));
|
App::import('Helper', array('DebugKit.HtmlToolbar', 'Html', 'Javascript'));
|
||||||
App::import('Core', array('View', 'Controller'));
|
App::import('Core', array('View', 'Controller'));
|
||||||
|
|
||||||
class HtmlToolbarHelperTestCase extends CakeTestCase {
|
class HtmlToolbarHelperTestCase extends CakeTestCase {
|
||||||
/**
|
/**
|
||||||
* setUp
|
* setUp
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function setUp() {
|
function setUp() {
|
||||||
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||||
Router::parse('/');
|
Router::parse('/');
|
||||||
|
|
||||||
$this->Toolbar = new ToolbarHelper(array('output' => 'DebugKit.HtmlToolbar'));
|
$this->Toolbar =& new ToolbarHelper(array('output' => 'DebugKit.HtmlToolbar'));
|
||||||
$this->Toolbar->HtmlToolbar = new HtmlToolbarHelper();
|
$this->Toolbar->HtmlToolbar =& new HtmlToolbarHelper();
|
||||||
$this->Toolbar->HtmlToolbar->Html = new HtmlHelper();
|
$this->Toolbar->HtmlToolbar->Html =& new HtmlHelper();
|
||||||
$this->Toolbar->HtmlToolbar->Javascript = new JavascriptHelper();
|
$this->Toolbar->HtmlToolbar->Javascript =& new JavascriptHelper();
|
||||||
|
|
||||||
$this->Controller =& ClassRegistry::init('Controller');
|
$this->Controller =& ClassRegistry::init('Controller');
|
||||||
if (isset($this->_debug)) {
|
if (isset($this->_debug)) {
|
||||||
Configure::write('debug', $this->_debug);
|
Configure::write('debug', $this->_debug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* start Case - switch view paths
|
* start Case - switch view paths
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function startCase() {
|
function startCase() {
|
||||||
$this->_viewPaths = Configure::read('viewPaths');
|
$this->_viewPaths = Configure::read('viewPaths');
|
||||||
Configure::write('viewPaths', array(
|
Configure::write('viewPaths', array(
|
||||||
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS,
|
||||||
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
APP . 'plugins' . DS . 'debug_kit' . DS . 'views'. DS,
|
||||||
ROOT . DS . LIBS . 'view' . DS
|
ROOT . DS . LIBS . 'view' . DS
|
||||||
));
|
));
|
||||||
$this->_debug = Configure::read('debug');
|
$this->_debug = Configure::read('debug');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test Neat Array formatting
|
* test Neat Array formatting
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function testMakeNeatArray() {
|
function testMakeNeatArray() {
|
||||||
$in = false;
|
$in = false;
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', '0' , '/strong', '(false)', '/li',
|
'<li', '<strong', '0' , '/strong', '(false)', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = null;
|
$in = null;
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', '0' , '/strong', '(null)', '/li',
|
'<li', '<strong', '0' , '/strong', '(null)', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = true;
|
$in = true;
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', '0' , '/strong', '(true)', '/li',
|
'<li', '<strong', '0' , '/strong', '(true)', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = array('key' => 'value');
|
$in = array('key' => 'value');
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = array('key' => null);
|
$in = array('key' => null);
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', 'key', '/strong', '(null)', '/li',
|
'<li', '<strong', 'key', '/strong', '(null)', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = array('key' => 'value', 'foo' => 'bar');
|
$in = array('key' => 'value', 'foo' => 'bar');
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||||
'<li', '<strong', 'foo', '/strong', 'bar', '/li',
|
'<li', '<strong', 'foo', '/strong', 'bar', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = array(
|
$in = array(
|
||||||
'key' => 'value',
|
'key' => 'value',
|
||||||
'foo' => array(
|
'foo' => array(
|
||||||
'this' => 'deep',
|
'this' => 'deep',
|
||||||
'another' => 'value'
|
'another' => 'value'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||||
'<li', '<strong', 'foo', '/strong',
|
'<li', '<strong', 'foo', '/strong',
|
||||||
array('ul' => array('class' => 'neat-array depth-1')),
|
array('ul' => array('class' => 'neat-array depth-1')),
|
||||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||||
'/ul',
|
'/ul',
|
||||||
'/li',
|
'/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = array(
|
$in = array(
|
||||||
'key' => 'value',
|
'key' => 'value',
|
||||||
'foo' => array(
|
'foo' => array(
|
||||||
'this' => 'deep',
|
'this' => 'deep',
|
||||||
'another' => 'value'
|
'another' => 'value'
|
||||||
),
|
),
|
||||||
'lotr' => array(
|
'lotr' => array(
|
||||||
'gandalf' => 'wizard',
|
'gandalf' => 'wizard',
|
||||||
'bilbo' => 'hobbit'
|
'bilbo' => 'hobbit'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$result = $this->Toolbar->makeNeatArray($in, 1);
|
$result = $this->Toolbar->makeNeatArray($in, 1);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
||||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||||
'<li', '<strong', 'foo', '/strong',
|
'<li', '<strong', 'foo', '/strong',
|
||||||
array('ul' => array('class' => 'neat-array depth-1')),
|
array('ul' => array('class' => 'neat-array depth-1')),
|
||||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||||
'/ul',
|
'/ul',
|
||||||
'/li',
|
'/li',
|
||||||
'<li', '<strong', 'lotr', '/strong',
|
'<li', '<strong', 'lotr', '/strong',
|
||||||
array('ul' => array('class' => 'neat-array depth-1')),
|
array('ul' => array('class' => 'neat-array depth-1')),
|
||||||
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
||||||
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
||||||
'/ul',
|
'/ul',
|
||||||
'/li',
|
'/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$result = $this->Toolbar->makeNeatArray($in, 2);
|
$result = $this->Toolbar->makeNeatArray($in, 2);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
'ul' => array('class' => 'neat-array depth-0 expanded'),
|
||||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||||
'<li', '<strong', 'foo', '/strong',
|
'<li', '<strong', 'foo', '/strong',
|
||||||
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
||||||
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
'<li', '<strong', 'this', '/strong', 'deep', '/li',
|
||||||
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
'<li', '<strong', 'another', '/strong', 'value', '/li',
|
||||||
'/ul',
|
'/ul',
|
||||||
'/li',
|
'/li',
|
||||||
'<li', '<strong', 'lotr', '/strong',
|
'<li', '<strong', 'lotr', '/strong',
|
||||||
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
array('ul' => array('class' => 'neat-array depth-1 expanded')),
|
||||||
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
'<li', '<strong', 'gandalf', '/strong', 'wizard', '/li',
|
||||||
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
'<li', '<strong', 'bilbo', '/strong', 'hobbit', '/li',
|
||||||
'/ul',
|
'/ul',
|
||||||
'/li',
|
'/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
|
|
||||||
$in = array('key' => 'value', 'array' => array());
|
$in = array('key' => 'value', 'array' => array());
|
||||||
$result = $this->Toolbar->makeNeatArray($in);
|
$result = $this->Toolbar->makeNeatArray($in);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'ul' => array('class' => 'neat-array depth-0'),
|
'ul' => array('class' => 'neat-array depth-0'),
|
||||||
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
'<li', '<strong', 'key', '/strong', 'value', '/li',
|
||||||
'<li', '<strong', 'array', '/strong', '(empty)', '/li',
|
'<li', '<strong', 'array', '/strong', '(empty)', '/li',
|
||||||
'/ul'
|
'/ul'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test injection of toolbar
|
* Test injection of toolbar
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function testInjectToolbar() {
|
function testInjectToolbar() {
|
||||||
$this->Controller->viewPath = 'posts';
|
$this->Controller->viewPath = 'posts';
|
||||||
$this->Controller->action = 'index';
|
$this->Controller->action = 'index';
|
||||||
$this->Controller->params = array(
|
$this->Controller->params = array(
|
||||||
'action' => 'index',
|
'action' => 'index',
|
||||||
'controller' => 'posts',
|
'controller' => 'posts',
|
||||||
'plugin' => null,
|
'plugin' => null,
|
||||||
'url' => array('url' => 'posts/index'),
|
'url' => array('url' => 'posts/index'),
|
||||||
'base' => null,
|
'base' => null,
|
||||||
'here' => '/posts/index',
|
'here' => '/posts/index',
|
||||||
);
|
);
|
||||||
$this->Controller->helpers = array('Html', 'Javascript', 'DebugKit.Toolbar');
|
$this->Controller->helpers = array('Html', 'Javascript', 'DebugKit.Toolbar');
|
||||||
$this->Controller->layout = 'default';
|
$this->Controller->layout = 'default';
|
||||||
$this->Controller->uses = null;
|
$this->Controller->uses = null;
|
||||||
$this->Controller->components = array('DebugKit.Toolbar');
|
$this->Controller->components = array('DebugKit.Toolbar');
|
||||||
$this->Controller->constructClasses();
|
$this->Controller->constructClasses();
|
||||||
$this->Controller->Component->initialize($this->Controller);
|
$this->Controller->Component->initialize($this->Controller);
|
||||||
$this->Controller->Component->startup($this->Controller);
|
$this->Controller->Component->startup($this->Controller);
|
||||||
$this->Controller->Component->beforeRender($this->Controller);
|
$this->Controller->Component->beforeRender($this->Controller);
|
||||||
$result = $this->Controller->render();
|
$result = $this->Controller->render();
|
||||||
$result = str_replace(array("\n", "\r"), '', $result);
|
$result = str_replace(array("\n", "\r"), '', $result);
|
||||||
$this->assertPattern('#<div id\="debug-kit-toolbar">.+</div></body>#', $result);
|
$this->assertPattern('#<div id\="debug-kit-toolbar">.+</div></body>#', $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test injection of javascript
|
* test injection of javascript
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function testJavascriptInjection() {
|
function testJavascriptInjection() {
|
||||||
$this->Controller->viewPath = 'posts';
|
$this->Controller->viewPath = 'posts';
|
||||||
$this->Controller->uses = null;
|
$this->Controller->uses = null;
|
||||||
$this->Controller->action = 'index';
|
$this->Controller->action = 'index';
|
||||||
$this->Controller->params = array(
|
$this->Controller->params = array(
|
||||||
'action' => 'index',
|
'action' => 'index',
|
||||||
'controller' => 'posts',
|
'controller' => 'posts',
|
||||||
'plugin' => null,
|
'plugin' => null,
|
||||||
'url' => array('url' => 'posts/index'),
|
'url' => array('url' => 'posts/index'),
|
||||||
'base' => '/',
|
'base' => '/',
|
||||||
'here' => '/posts/index',
|
'here' => '/posts/index',
|
||||||
);
|
);
|
||||||
$this->Controller->helpers = array('Javascript', 'Html');
|
$this->Controller->helpers = array('Javascript', 'Html');
|
||||||
$this->Controller->components = array('DebugKit.Toolbar');
|
$this->Controller->components = array('DebugKit.Toolbar');
|
||||||
$this->Controller->layout = 'default';
|
$this->Controller->layout = 'default';
|
||||||
$this->Controller->constructClasses();
|
$this->Controller->constructClasses();
|
||||||
$this->Controller->Component->initialize($this->Controller);
|
$this->Controller->Component->initialize($this->Controller);
|
||||||
$this->Controller->Component->startup($this->Controller);
|
$this->Controller->Component->startup($this->Controller);
|
||||||
$this->Controller->Component->beforeRender($this->Controller);
|
$this->Controller->Component->beforeRender($this->Controller);
|
||||||
$result = $this->Controller->render();
|
$result = $this->Controller->render();
|
||||||
$result = str_replace(array("\n", "\r"), '', $result);
|
$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);
|
$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
|
* test Injection of user defined javascript
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function testCustomJavascriptInjection() {
|
function testCustomJavascriptInjection() {
|
||||||
$this->Controller->viewPath = 'posts';
|
$this->Controller->viewPath = 'posts';
|
||||||
$this->Controller->uses = null;
|
$this->Controller->uses = null;
|
||||||
$this->Controller->action = 'index';
|
$this->Controller->action = 'index';
|
||||||
$this->Controller->params = array(
|
$this->Controller->params = array(
|
||||||
'action' => 'index',
|
'action' => 'index',
|
||||||
'controller' => 'posts',
|
'controller' => 'posts',
|
||||||
'plugin' => null,
|
'plugin' => null,
|
||||||
'url' => array('url' => 'posts/index'),
|
'url' => array('url' => 'posts/index'),
|
||||||
'base' => '/',
|
'base' => '/',
|
||||||
'here' => '/posts/index',
|
'here' => '/posts/index',
|
||||||
);
|
);
|
||||||
$this->Controller->helpers = array('Javascript', 'Html');
|
$this->Controller->helpers = array('Javascript', 'Html');
|
||||||
$this->Controller->components = array('DebugKit.Toolbar' => array('javascript' => array('my_custom')));
|
$this->Controller->components = array('DebugKit.Toolbar' => array('javascript' => array('my_custom')));
|
||||||
$this->Controller->layout = 'default';
|
$this->Controller->layout = 'default';
|
||||||
$this->Controller->constructClasses();
|
$this->Controller->constructClasses();
|
||||||
$this->Controller->Component->initialize($this->Controller);
|
$this->Controller->Component->initialize($this->Controller);
|
||||||
$this->Controller->Component->startup($this->Controller);
|
$this->Controller->Component->startup($this->Controller);
|
||||||
$this->Controller->Component->beforeRender($this->Controller);
|
$this->Controller->Component->beforeRender($this->Controller);
|
||||||
$result = $this->Controller->render();
|
$result = $this->Controller->render();
|
||||||
$result = str_replace(array("\n", "\r"), '', $result);
|
$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);
|
$this->assertPattern('#<script\s*type="text/javascript"\s*src="js/my_custom_debug_toolbar.js"\s*>\s?</script>#', $result);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* test message creation
|
* test message creation
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function testMessage() {
|
function testMessage() {
|
||||||
$result = $this->Toolbar->message('test', 'one, two');
|
$result = $this->Toolbar->message('test', 'one, two');
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'<p',
|
'<p',
|
||||||
'<strong', 'test', '/strong',
|
'<strong', 'test', '/strong',
|
||||||
' one, two',
|
' one, two',
|
||||||
'/p',
|
'/p',
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Test Table generation
|
* Test Table generation
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function testTable() {
|
function testTable() {
|
||||||
$rows = array(
|
$rows = array(
|
||||||
array(1,2),
|
array(1,2),
|
||||||
array(3,4),
|
array(3,4),
|
||||||
);
|
);
|
||||||
$result = $this->Toolbar->table($rows);
|
$result = $this->Toolbar->table($rows);
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'table' => array('class' =>'debug-table'),
|
'table' => array('class' =>'debug-table'),
|
||||||
array('tr' => array('class' => 'odd')),
|
array('tr' => array('class' => 'odd')),
|
||||||
'<td', '1', '/td',
|
'<td', '1', '/td',
|
||||||
'<td', '2', '/td',
|
'<td', '2', '/td',
|
||||||
'/tr',
|
'/tr',
|
||||||
array('tr' => array('class' => 'even')),
|
array('tr' => array('class' => 'even')),
|
||||||
'<td', '3', '/td',
|
'<td', '3', '/td',
|
||||||
'<td', '4', '/td',
|
'<td', '4', '/td',
|
||||||
'/tr',
|
'/tr',
|
||||||
'/table'
|
'/table'
|
||||||
);
|
);
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* reset the view paths
|
* reset the view paths
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
**/
|
**/
|
||||||
function endCase() {
|
function endCase() {
|
||||||
Configure::write('viewPaths', $this->_viewPaths);
|
Configure::write('viewPaths', $this->_viewPaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tearDown
|
* tearDown
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function tearDown() {
|
function tearDown() {
|
||||||
unset($this->Toolbar, $this->Controller);
|
unset($this->Toolbar, $this->Controller);
|
||||||
ClassRegistry::removeObject('view');
|
ClassRegistry::removeObject('view');
|
||||||
ClassRegistry::flush();
|
ClassRegistry::flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -30,14 +30,14 @@ $timers = DebugKitDebugger::getTimers();
|
|||||||
?>
|
?>
|
||||||
<h2><?php __('Timers'); ?></h2>
|
<h2><?php __('Timers'); ?></h2>
|
||||||
<p class="request-time">
|
<p class="request-time">
|
||||||
<?php $totalTime = sprintf(__('%s (seconds)', true), DebugKitDebugger::requestTime()); ?>
|
<?php $totalTime = sprintf(__('%.6s (seconds)', true), DebugKitDebugger::requestTime()); ?>
|
||||||
<?php echo $toolbar->message(__('Total Request Time:', true), $totalTime)?>
|
<?php echo $toolbar->message(__('Total Request Time:', true), $totalTime)?>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<?php foreach ($timers as $timerName => $timeInfo):
|
<?php foreach ($timers as $timerName => $timeInfo):
|
||||||
$rows[] = array(
|
$rows[] = array(
|
||||||
$timeInfo['message'],
|
$timeInfo['message'],
|
||||||
$timeInfo['time']
|
sprintf(__('%.6s', true), $timeInfo['time'])
|
||||||
);
|
);
|
||||||
$headers = array(__('Message', true), __('time in seconds', true));
|
$headers = array(__('Message', true), __('time in seconds', true));
|
||||||
endforeach;
|
endforeach;
|
||||||
|
|||||||
9
site/valley_storage.pmgr.htpasswd
Normal file
9
site/valley_storage.pmgr.htpasswd
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
abijah:Property Manager:a2369e3cc9e231ea6f02ce799a8b9970
|
||||||
|
anja:Property Manager:4539d5a6e58dd5895f2f3891d29705b0
|
||||||
|
kevin:Property Manager:f01accc9f5e5cdfc028dcf0cca837cf1
|
||||||
|
adam:Property Manager:ae6835569bb2fc0a0a4a773580ac8cda
|
||||||
|
shirley:Property Manager:e7e9d674c700796c99cdbf3cf105e739
|
||||||
|
admin:Property Manager:bab2226685d9b4b66220db8df80f1822
|
||||||
|
dev:Property Manager:e5c27b3c025e47239a45daceea2c0a00
|
||||||
|
vasst:Property Manager:523abc6c2b8458b463d5a9baa4f58f2e
|
||||||
|
answerfirst:Property Manager:6ac128447fab8be985c74ba7539c39b3
|
||||||
@@ -100,7 +100,7 @@ echo $this->element('ledger_entries', array
|
|||||||
'filter' => array('Account.id' => $account['id']),
|
'filter' => array('Account.id' => $account['id']),
|
||||||
'exclude' => array('Account', 'Amount', 'Cr/Dr', 'Balance',
|
'exclude' => array('Account', 'Amount', 'Cr/Dr', 'Balance',
|
||||||
empty($account['receipts']) ? 'Tender' : null),
|
empty($account['receipts']) ? 'Tender' : null),
|
||||||
'include' => array('Debit', 'Credit', 'Sub-Total'),
|
'include' => array('Transaction', 'Debit', 'Credit', 'Sub-Total'),
|
||||||
'limit' => 50,
|
'limit' => 50,
|
||||||
)));
|
)));
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ function contactMethodDiv($obj, $type, $legend, $values = null) {
|
|||||||
'</DIV>' . "\n" .
|
'</DIV>' . "\n" .
|
||||||
|
|
||||||
// BEGIN method-div
|
// BEGIN method-div
|
||||||
'<div id="'.$type.'-%{id}-method-div"' . "\n" .
|
'<div id="'.$type.'-%{id}-method-div"' . '>' . "\n" .
|
||||||
|
|
||||||
$obj->element
|
$obj->element
|
||||||
('form_table',
|
('form_table',
|
||||||
@@ -131,14 +131,18 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
|||||||
elseif ($stype === 'new') {
|
elseif ($stype === 'new') {
|
||||||
$fields = array
|
$fields = array
|
||||||
('type' => array('label_attributes' => array('class' => 'required'),
|
('type' => array('label_attributes' => array('class' => 'required'),
|
||||||
'opts' => array('options' => $obj->varstore['phoneTypes']),
|
'opts' => array('autocomplete' => 'off',
|
||||||
|
'options' => $obj->varstore['phoneTypes']),
|
||||||
'after' => "Physical type of the phone."),
|
'after' => "Physical type of the phone."),
|
||||||
'phone' => array('label_attributes' => array('class' => 'required empty'),
|
'phone' => array('label_attributes' => array('class' => 'required empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Required: Phone number."),
|
'after' => "Required: Phone number."),
|
||||||
'ext' => array('name' => "Extension",
|
'ext' => array('name' => "Extension",
|
||||||
'label_attributes' => array('class' => 'optional empty'),
|
'label_attributes' => array('class' => 'optional empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Optional: Extension number."),
|
'after' => "Optional: Extension number."),
|
||||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Optional: Comments about this phone number."),
|
'after' => "Optional: Comments about this phone number."),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -167,17 +171,23 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
|||||||
elseif ($stype === 'new') {
|
elseif ($stype === 'new') {
|
||||||
$fields = array
|
$fields = array
|
||||||
('address' => array('label_attributes' => array('class' => 'required empty'),
|
('address' => array('label_attributes' => array('class' => 'required empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Required: First line of mailing address."),
|
'after' => "Required: First line of mailing address."),
|
||||||
'city' => array('label_attributes' => array('class' => 'required empty'),
|
'city' => array('label_attributes' => array('class' => 'required empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Required."),
|
'after' => "Required."),
|
||||||
'state' => array('label_attributes' => array('class' => 'required empty'),
|
'state' => array('label_attributes' => array('class' => 'required empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Required."),
|
'after' => "Required."),
|
||||||
'postcode' => array('name' => 'Zip Code',
|
'postcode' => array('name' => 'Zip Code',
|
||||||
'label_attributes' => array('class' => 'required empty'),
|
'label_attributes' => array('class' => 'required empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Required."),
|
'after' => "Required."),
|
||||||
'country' => array('label_attributes' => array('class' => 'optional empty'),
|
'country' => array('label_attributes' => array('class' => 'optional empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Optional: USA is presumed."),
|
'after' => "Optional: USA is presumed."),
|
||||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Optional: Comments about this mailing address."),
|
'after' => "Optional: Comments about this mailing address."),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -208,8 +218,10 @@ function contactMethodTypeDiv($obj, $type, $stype, $values = null) {
|
|||||||
elseif ($stype === 'new') {
|
elseif ($stype === 'new') {
|
||||||
$fields = array
|
$fields = array
|
||||||
('email' => array('label_attributes' => array('class' => 'required empty'),
|
('email' => array('label_attributes' => array('class' => 'required empty'),
|
||||||
'after' => "Required: E-mail address."),
|
'opts' => array('autocomplete' => 'off'),
|
||||||
|
'after' => "Required: E-mail address."),
|
||||||
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
'comment' => array('label_attributes' => array('class' => 'optional empty'),
|
||||||
|
'opts' => array('autocomplete' => 'off'),
|
||||||
'after' => "Optional: Comments about this email address."),
|
'after' => "Optional: Comments about this email address."),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ function customerContactDiv($obj, $values = null, $primary = false) {
|
|||||||
'</DIV>' . "\n" .
|
'</DIV>' . "\n" .
|
||||||
|
|
||||||
// BEGIN contact-div
|
// BEGIN contact-div
|
||||||
'<div id="contact-%{id}-contact-div"' . "\n" .
|
'<div id="contact-%{id}-contact-div">' . "\n" .
|
||||||
|
|
||||||
$obj->element
|
$obj->element
|
||||||
('form_table',
|
('form_table',
|
||||||
|
|||||||
@@ -157,7 +157,10 @@ function onRowSelect(grid_id, customer_id) {
|
|||||||
$("#customer-id").val(customer_id);
|
$("#customer-id").val(customer_id);
|
||||||
|
|
||||||
// Set the customer name, so the user knows who the receipt is for
|
// Set the customer name, so the user knows who the receipt is for
|
||||||
$("#receipt-customer-name").html($(grid_id).getCell(customer_id, 'Customer-name'));
|
$("#receipt-customer-name")
|
||||||
|
.html('<A HREF="view/' + customer_id + '">'
|
||||||
|
+ $(grid_id).getCell(customer_id, 'Customer-name')
|
||||||
|
+ '</A>');
|
||||||
|
|
||||||
// Hide the "no customer" message and show the current customer
|
// Hide the "no customer" message and show the current customer
|
||||||
$(".customer-selection-invalid").hide();
|
$(".customer-selection-invalid").hide();
|
||||||
|
|||||||
@@ -105,6 +105,27 @@ echo $this->element('ledger_entries', array
|
|||||||
)));
|
)));
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* Invoice History
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* NOT COMPLETED
|
||||||
|
echo $this->element('transactions', array
|
||||||
|
(// Grid configuration
|
||||||
|
'config' => array
|
||||||
|
('caption' => 'Invoices',
|
||||||
|
'limit' => 5,
|
||||||
|
'filter' => array('Customer.id' => $customer['Customer']['id'],
|
||||||
|
'Transaction.type' => 'INVOICE',
|
||||||
|
),
|
||||||
|
//'include' => array(),
|
||||||
|
'exclude' => array('Type'),
|
||||||
|
'remap' => array('ID' => 'Invoice',
|
||||||
|
//'Timestamp' => 'Date',
|
||||||
|
'Entries' => 'Charges'),
|
||||||
|
)));
|
||||||
|
NOT COMPLETED */
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Lease History
|
* Lease History
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ if (!isset($grid_setup))
|
|||||||
$html->css('ui.jqgrid', null, null, false);
|
$html->css('ui.jqgrid', null, null, false);
|
||||||
$javascript->link('jqGrid/grid.locale-en', false);
|
$javascript->link('jqGrid/grid.locale-en', false);
|
||||||
$javascript->link('jqGrid/jquery.jqGrid.min', false);
|
$javascript->link('jqGrid/jquery.jqGrid.min', false);
|
||||||
|
$javascript->link('jqGrid/grid.postext', false);
|
||||||
$javascript->link('pmgr_jqGrid', false);
|
$javascript->link('pmgr_jqGrid', false);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ $cols['ID'] = array('index' => 'Transaction.id', 'formatter' =
|
|||||||
$cols['Type'] = array('index' => 'Transaction.type', 'formatter' => 'enum');
|
$cols['Type'] = array('index' => 'Transaction.type', 'formatter' => 'enum');
|
||||||
$cols['Customer'] = array('index' => 'Customer.name', 'formatter' => 'longname');
|
$cols['Customer'] = array('index' => 'Customer.name', 'formatter' => 'longname');
|
||||||
$cols['Timestamp'] = array('index' => 'Transaction.stamp', 'formatter' => 'date');
|
$cols['Timestamp'] = array('index' => 'Transaction.stamp', 'formatter' => 'date');
|
||||||
$cols['Amount'] = array('index' => 'Transaction.amount', 'formatter' => 'currency');
|
|
||||||
$cols['Entries'] = array('index' => 'entries', 'formatter' => 'number');
|
$cols['Entries'] = array('index' => 'entries', 'formatter' => 'number');
|
||||||
|
$cols['Amount'] = array('index' => 'Transaction.amount', 'formatter' => 'currency');
|
||||||
$cols['Comment'] = array('index' => 'Transaction.comment', 'formatter' => 'comment');
|
$cols['Comment'] = array('index' => 'Transaction.comment', 'formatter' => 'comment');
|
||||||
|
|
||||||
// Render the grid
|
// Render the grid
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
echo $html->css('print', null, array('media' => 'print')) . "\n";
|
echo $html->css('print', null, array('media' => 'print')) . "\n";
|
||||||
echo $html->css('sidemenu') . "\n";
|
echo $html->css('sidemenu') . "\n";
|
||||||
|
|
||||||
echo $javascript->link('jquery-1.3.2.min') . "\n";
|
echo $javascript->link('jquery-1.7.2.min') . "\n";
|
||||||
echo $javascript->link('jquery-ui-1.7.2.custom.min') . "\n";
|
echo $javascript->link('jquery-ui-1.7.2.custom.min') . "\n";
|
||||||
//echo $javascript->link($protocol . 'ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js') . "\n";
|
//echo $javascript->link($protocol . 'ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js') . "\n";
|
||||||
//echo $javascript->link($protocol . 'ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js') . "\n";
|
//echo $javascript->link($protocol . 'ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js') . "\n";
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ echo '<div class="statement_entry overview">' . "\n";
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
$rows[] = array("$months Month Charges", FormatHelper::currency($overview['charges']));
|
$rows[] = array("$months Month Total", FormatHelper::currency($overview['amount']) . " / (" . FormatHelper::currency($overview['amount'] / $months) . " per month)");
|
||||||
|
|
||||||
echo $this->element('table',
|
echo $this->element('table',
|
||||||
array('class' => 'item statement_entry detail',
|
array('class' => 'item statement_entry detail',
|
||||||
'caption' => 'Monthly Charges',
|
'caption' => $reptype,
|
||||||
'rows' => $rows,
|
'rows' => $rows,
|
||||||
'column_class' => array('field', 'value')));
|
'column_class' => array('field', 'value')));
|
||||||
|
|
||||||
@@ -38,11 +38,11 @@ foreach ($overview['months'] AS $month) {
|
|||||||
$odd = 1;
|
$odd = 1;
|
||||||
foreach ($month['subs'] AS $sub) {
|
foreach ($month['subs'] AS $sub) {
|
||||||
$row_class[] = array('subitem', $odd ? 'oddrow' : 'evenrow');
|
$row_class[] = array('subitem', $odd ? 'oddrow' : 'evenrow');
|
||||||
$rows[] = array($sub['name'], FormatHelper::currency($sub['charges']));
|
$rows[] = array($sub['name'], FormatHelper::currency($sub['amount']));
|
||||||
$odd = !$odd;
|
$odd = !$odd;
|
||||||
}
|
}
|
||||||
$row_class[] = 'grand';
|
$row_class[] = 'grand';
|
||||||
$rows[] = array('Total for '.$month['name'], FormatHelper::currency($month['charges']));
|
$rows[] = array('Total for '.$month['name'], FormatHelper::currency($month['amount']));
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $this->element('table',
|
echo $this->element('table',
|
||||||
|
|||||||
@@ -2,11 +2,18 @@
|
|||||||
|
|
||||||
//style="display:inline;
|
//style="display:inline;
|
||||||
echo('<H2 style="display:inline;">Deposit Slip: ' .
|
echo('<H2 style="display:inline;">Deposit Slip: ' .
|
||||||
FormatHelper::datetime($deposit['Transaction']['stamp'])
|
FormatHelper::date($deposit['Transaction']['stamp'])
|
||||||
. '</H2>' . "\n");
|
. '</H2><br>' . "\n");
|
||||||
/* echo('(' . */
|
/* echo('(' . */
|
||||||
/* FormatHelper::age($deposit['Transaction']['stamp'], 60) */
|
/* FormatHelper::age($deposit['Transaction']['stamp'], 60) */
|
||||||
/* . ')<BR>' . "\n"); */
|
/* . ')<BR>' . "\n"); */
|
||||||
|
if ($deposit['Account']['external_name'] || $deposit['Account']['external_account']) {
|
||||||
|
echo('<H2 style="display:inline;">' .
|
||||||
|
($deposit['Account']['external_name'] ? $deposit['Account']['external_name'] : '') .
|
||||||
|
($deposit['Account']['external_name'] && $deposit['Account']['external_account'] ? ': ' : '') .
|
||||||
|
($deposit['Account']['external_account'] ? 'Account #' . $deposit['Account']['external_account'] : '') .
|
||||||
|
'</H2><br>' . "\n");
|
||||||
|
}
|
||||||
|
|
||||||
//pr(compact('deposit'));
|
//pr(compact('deposit'));
|
||||||
|
|
||||||
|
|||||||
@@ -95,16 +95,17 @@ if ($transaction['type'] === 'INVOICE' ||
|
|||||||
* Ledger Entries
|
* Ledger Entries
|
||||||
*/
|
*/
|
||||||
|
|
||||||
echo $this->element('ledger_entries', array
|
if (0) {
|
||||||
(// Grid configuration
|
echo $this->element('ledger_entries', array
|
||||||
'config' => array
|
(// Grid configuration
|
||||||
(
|
'config' => array
|
||||||
'caption' => 'Ledger Entries',
|
(
|
||||||
'filter' => array('Transaction.id' => $transaction['id'],
|
'caption' => 'Ledger Entries',
|
||||||
'Account.id !=' => $account['id']),
|
'filter' => array('Transaction.id' => $transaction['id'],
|
||||||
'exclude' => array('Transaction'),
|
'Account.id !=' => $account['id']),
|
||||||
)));
|
'exclude' => array('Transaction'),
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
/* /\********************************************************************** */
|
/* /\********************************************************************** */
|
||||||
/* * Tenders Deposited */
|
/* * Tenders Deposited */
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -55,7 +55,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
|
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
|
||||||
define('CAKE_CORE_INCLUDE_PATH', 'D:\Website\localhost\CakePHP');
|
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . APP_DIR . DS . 'CakePHP');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1 +1,169 @@
|
|||||||
(function(a){a.jgrid={defaults:{recordtext:"View {0} - {1} of {2}",emptyrecords:"No records to view",loadtext:"Loading...",pgtext:"Page {0} of {1}"},search:{caption:"Search...",Find:"Find",Reset:"Reset",odata:["equal","not equal","less","less or equal","greater","greater or equal","begins with","does not begin with","is in","is not in","ends with","does not end with","contains","does not contain"],groupOps:[{op:"AND",text:"all"},{op:"OR",text:"any"}],matchText:" match",rulesText:" rules"},edit:{addCaption:"Add Record",editCaption:"Edit Record",bSubmit:"Submit",bCancel:"Cancel",bClose:"Close",saveData:"Data has been changed! Save changes?",bYes:"Yes",bNo:"No",bExit:"Cancel",msg:{required:"Field is required",number:"Please, enter valid number",minValue:"value must be greater than or equal to ",maxValue:"value must be less than or equal to",email:"is not a valid e-mail",integer:"Please, enter valid integer value",date:"Please, enter valid date value",url:"is not a valid URL. Prefix required ('http://' or 'https://')"}},view:{caption:"View Record",bClose:"Close"},del:{caption:"Delete",msg:"Delete selected record(s)?",bSubmit:"Delete",bCancel:"Cancel"},nav:{edittext:"",edittitle:"Edit selected row",addtext:"",addtitle:"Add new row",deltext:"",deltitle:"Delete selected row",searchtext:"",searchtitle:"Find records",refreshtext:"",refreshtitle:"Reload Grid",alertcap:"Warning",alerttext:"Please, select row",viewtext:"",viewtitle:"View selected row"},col:{caption:"Show/Hide Columns",bSubmit:"Submit",bCancel:"Cancel"},errors:{errcap:"Error",nourl:"No url is set",norecords:"No records to process",model:"Length of colNames <> colModel!"},formatter:{integer:{thousandsSeparator:" ",defaultValue:"0"},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaultValue:"0.00"},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaultValue:"0.00"},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?["st","nd","rd","th"][Math.min((b-1)%10,3)]:"th"},srcformat:"Y-m-d",newformat:"d/m/Y",masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:"",showAction:"",target:"",checkbox:{disabled:true},idName:"id"}}})(jQuery);
|
;(function($){
|
||||||
|
/**
|
||||||
|
* jqGrid English Translation
|
||||||
|
* Tony Tomov tony@trirand.com
|
||||||
|
* http://trirand.com/blog/
|
||||||
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
**/
|
||||||
|
$.jgrid = $.jgrid || {};
|
||||||
|
$.extend($.jgrid,{
|
||||||
|
defaults : {
|
||||||
|
recordtext: "View {0} - {1} of {2}",
|
||||||
|
emptyrecords: "No records to view",
|
||||||
|
loadtext: "Loading...",
|
||||||
|
pgtext : "Page {0} of {1}"
|
||||||
|
},
|
||||||
|
search : {
|
||||||
|
caption: "Search...",
|
||||||
|
Find: "Find",
|
||||||
|
Reset: "Reset",
|
||||||
|
odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain'],
|
||||||
|
groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ],
|
||||||
|
matchText: " match",
|
||||||
|
rulesText: " rules"
|
||||||
|
},
|
||||||
|
edit : {
|
||||||
|
addCaption: "Add Record",
|
||||||
|
editCaption: "Edit Record",
|
||||||
|
bSubmit: "Submit",
|
||||||
|
bCancel: "Cancel",
|
||||||
|
bClose: "Close",
|
||||||
|
saveData: "Data has been changed! Save changes?",
|
||||||
|
bYes : "Yes",
|
||||||
|
bNo : "No",
|
||||||
|
bExit : "Cancel",
|
||||||
|
msg: {
|
||||||
|
required:"Field is required",
|
||||||
|
number:"Please, enter valid number",
|
||||||
|
minValue:"value must be greater than or equal to ",
|
||||||
|
maxValue:"value must be less than or equal to",
|
||||||
|
email: "is not a valid e-mail",
|
||||||
|
integer: "Please, enter valid integer value",
|
||||||
|
date: "Please, enter valid date value",
|
||||||
|
url: "is not a valid URL. Prefix required ('http://' or 'https://')",
|
||||||
|
nodefined : " is not defined!",
|
||||||
|
novalue : " return value is required!",
|
||||||
|
customarray : "Custom function should return array!",
|
||||||
|
customfcheck : "Custom function should be present in case of custom checking!"
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
view : {
|
||||||
|
caption: "View Record",
|
||||||
|
bClose: "Close"
|
||||||
|
},
|
||||||
|
del : {
|
||||||
|
caption: "Delete",
|
||||||
|
msg: "Delete selected record(s)?",
|
||||||
|
bSubmit: "Delete",
|
||||||
|
bCancel: "Cancel"
|
||||||
|
},
|
||||||
|
nav : {
|
||||||
|
edittext: "",
|
||||||
|
edittitle: "Edit selected row",
|
||||||
|
addtext:"",
|
||||||
|
addtitle: "Add new row",
|
||||||
|
deltext: "",
|
||||||
|
deltitle: "Delete selected row",
|
||||||
|
searchtext: "",
|
||||||
|
searchtitle: "Find records",
|
||||||
|
refreshtext: "",
|
||||||
|
refreshtitle: "Reload Grid",
|
||||||
|
alertcap: "Warning",
|
||||||
|
alerttext: "Please, select row",
|
||||||
|
viewtext: "",
|
||||||
|
viewtitle: "View selected row"
|
||||||
|
},
|
||||||
|
col : {
|
||||||
|
caption: "Select columns",
|
||||||
|
bSubmit: "Ok",
|
||||||
|
bCancel: "Cancel"
|
||||||
|
},
|
||||||
|
errors : {
|
||||||
|
errcap : "Error",
|
||||||
|
nourl : "No url is set",
|
||||||
|
norecords: "No records to process",
|
||||||
|
model : "Length of colNames <> colModel!"
|
||||||
|
},
|
||||||
|
formatter : {
|
||||||
|
integer : {thousandsSeparator: ",", defaultValue: '0'},
|
||||||
|
number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'},
|
||||||
|
currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'},
|
||||||
|
date : {
|
||||||
|
dayNames: [
|
||||||
|
"Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat",
|
||||||
|
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
|
||||||
|
],
|
||||||
|
monthNames: [
|
||||||
|
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
|
||||||
|
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
|
||||||
|
],
|
||||||
|
AmPm : ["am","pm","AM","PM"],
|
||||||
|
S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';},
|
||||||
|
srcformat: 'Y-m-d',
|
||||||
|
newformat: 'n/j/Y',
|
||||||
|
masks : {
|
||||||
|
// see http://php.net/manual/en/function.date.php for PHP format used in jqGrid
|
||||||
|
// and see http://docs.jquery.com/UI/Datepicker/formatDate
|
||||||
|
// and https://github.com/jquery/globalize#dates for alternative formats used frequently
|
||||||
|
// one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many
|
||||||
|
// information about date, time, numbers and currency formats used in different countries
|
||||||
|
// one should just convert the information in PHP format
|
||||||
|
ISO8601Long:"Y-m-d H:i:s",
|
||||||
|
ISO8601Short:"Y-m-d",
|
||||||
|
// short date:
|
||||||
|
// n - Numeric representation of a month, without leading zeros
|
||||||
|
// j - Day of the month without leading zeros
|
||||||
|
// Y - A full numeric representation of a year, 4 digits
|
||||||
|
// example: 3/1/2012 which means 1 March 2012
|
||||||
|
ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy"
|
||||||
|
// long date:
|
||||||
|
// l - A full textual representation of the day of the week
|
||||||
|
// F - A full textual representation of a month
|
||||||
|
// d - Day of the month, 2 digits with leading zeros
|
||||||
|
// Y - A full numeric representation of a year, 4 digits
|
||||||
|
LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy"
|
||||||
|
// long date with long time:
|
||||||
|
// l - A full textual representation of the day of the week
|
||||||
|
// F - A full textual representation of a month
|
||||||
|
// d - Day of the month, 2 digits with leading zeros
|
||||||
|
// Y - A full numeric representation of a year, 4 digits
|
||||||
|
// g - 12-hour format of an hour without leading zeros
|
||||||
|
// i - Minutes with leading zeros
|
||||||
|
// s - Seconds, with leading zeros
|
||||||
|
// A - Uppercase Ante meridiem and Post meridiem (AM or PM)
|
||||||
|
FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt"
|
||||||
|
// month day:
|
||||||
|
// F - A full textual representation of a month
|
||||||
|
// d - Day of the month, 2 digits with leading zeros
|
||||||
|
MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd"
|
||||||
|
// short time (without seconds)
|
||||||
|
// g - 12-hour format of an hour without leading zeros
|
||||||
|
// i - Minutes with leading zeros
|
||||||
|
// A - Uppercase Ante meridiem and Post meridiem (AM or PM)
|
||||||
|
ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt"
|
||||||
|
// long time (with seconds)
|
||||||
|
// g - 12-hour format of an hour without leading zeros
|
||||||
|
// i - Minutes with leading zeros
|
||||||
|
// s - Seconds, with leading zeros
|
||||||
|
// A - Uppercase Ante meridiem and Post meridiem (AM or PM)
|
||||||
|
LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt"
|
||||||
|
SortableDateTime: "Y-m-d\\TH:i:s",
|
||||||
|
UniversalSortableDateTime: "Y-m-d H:i:sO",
|
||||||
|
// month with year
|
||||||
|
// Y - A full numeric representation of a year, 4 digits
|
||||||
|
// F - A full textual representation of a month
|
||||||
|
YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy"
|
||||||
|
},
|
||||||
|
reformatAfterEdit : false
|
||||||
|
},
|
||||||
|
baseLinkUrl: '',
|
||||||
|
showAction: '',
|
||||||
|
target: '',
|
||||||
|
checkbox : {disabled:true},
|
||||||
|
idName : 'id'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
|
|||||||
64
site/webroot/js/jqGrid/grid.postext.js
Normal file
64
site/webroot/js/jqGrid/grid.postext.js
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
;(function($){
|
||||||
|
/**
|
||||||
|
* jqGrid extension
|
||||||
|
* Paul Tiseo ptiseo@wasteconsultants.com
|
||||||
|
*
|
||||||
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
* http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
**/
|
||||||
|
$.jgrid.extend({
|
||||||
|
getPostData : function(){
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
return $t.p.postData;
|
||||||
|
},
|
||||||
|
setPostData : function( newdata ) {
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
// check if newdata is correct type
|
||||||
|
if ( typeof(newdata) === 'object' ) {
|
||||||
|
$t.p.postData = newdata;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
alert("Error: cannot add a non-object postData value. postData unchanged.");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
appendPostData : function( newdata ) {
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
// check if newdata is correct type
|
||||||
|
if ( typeof(newdata) === 'object' ) {
|
||||||
|
$.extend($t.p.postData, newdata);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
alert("Error: cannot append a non-object postData value. postData unchanged.");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setPostDataItem : function( key, val ) {
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
$t.p.postData[key] = val;
|
||||||
|
},
|
||||||
|
getPostDataItem : function( key ) {
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
return $t.p.postData[key];
|
||||||
|
},
|
||||||
|
removePostDataItem : function( key ) {
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
delete $t.p.postData[key];
|
||||||
|
},
|
||||||
|
getUserData : function(){
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
return $t.p.userData;
|
||||||
|
},
|
||||||
|
getUserDataItem : function( key ) {
|
||||||
|
var $t = this[0];
|
||||||
|
if(!$t.grid) { return; }
|
||||||
|
return $t.p.userData[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(jQuery);
|
||||||
393
site/webroot/js/jqGrid/jquery.jqGrid.min.js
vendored
393
site/webroot/js/jqGrid/jquery.jqGrid.min.js
vendored
File diff suppressed because one or more lines are too long
19
site/webroot/js/jquery-1.3.2.min.js
vendored
19
site/webroot/js/jquery-1.3.2.min.js
vendored
File diff suppressed because one or more lines are too long
4
site/webroot/js/jquery-1.7.2.min.js
vendored
Normal file
4
site/webroot/js/jquery-1.7.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user