Browse Source

Merge branch '2.0' of github.com:cakephp/cakephp into 2.0

Jose Lorenzo Rodriguez 14 years ago
parent
commit
2bca1435ab

+ 269 - 90
app/webroot/css/cake.generic.css

@@ -56,7 +56,7 @@ h2 {
 	font-size: 190%;
 }
 h3 {
-	color: #993;
+	color: #2c6877;
 	font-family:'Gill Sans','lucida grande', helvetica, arial, sans-serif;
 	font-size: 165%;
 }
@@ -67,6 +67,9 @@ h4 {
 ul, li {
 	margin: 0 12px;
 }
+p {
+	margin: 0 0 1em 0;
+}
 
 /** Layout **/
 #container {
@@ -158,7 +161,7 @@ table tr td {
 	border-bottom:1px solid #ddd;
 }
 table tr:nth-child(even) {
-	background: #f5f5f5;
+	background: #f9f9f9;
 }
 td.actions {
 	text-align: center;
@@ -168,6 +171,8 @@ table td.actions a {
 	margin: 0px 6px;
 	padding:2px 5px;
 }
+
+/* SQL log */
 .cake-sql-log {
 	background: #fff;
 }
@@ -181,20 +186,47 @@ table td.actions a {
 }
 
 /** Paging **/
-div.paging {
+.paging {
 	background:#fff;
 	color: #ccc;
 	margin-top: 1em;
 	clear:both;
 }
-div.paging span.disabled {
+.paging .current,
+.paging .disabled,
+.paging a {
+	text-decoration: none;
+	padding: 5px 8px;
+	display: inline-block
+}
+.paging > span {
+	display: inline-block;
+	border: 1px solid #ccc;
+	border-left: 0;
+}
+.paging > span:hover {
+	background: #efefef;
+}
+.paging .prev {
+	border-left: 1px solid #ccc;
+	-moz-border-radius: 4px 0 0 4px;
+	-webkit-border-radius: 4px 0 0 4px;
+	border-radius: 4px 0 0 4px;
+}
+.paging .next {
+	-moz-border-radius: 0 4px 4px 0;
+	-webkit-border-radius: 0 4px 4px 0;
+	border-radius: 0 4px 4px 0;
+}
+.paging .disabled {
 	color: #ddd;
-	display: inline;
 }
-div.paging span.current {
-	color: #c73e14;
+.paging .disabled:hover {
+	background: transparent;
 }
-div.paging span a {
+.paging .current {
+	background: #efefef;
+	color: #c73e14;
 }
 
 /** Scaffold View **/
@@ -228,20 +260,18 @@ form {
 	width: 95%;
 }
 fieldset {
-	border: 1px solid #ccc;
+	border: none;
 	margin-bottom: 1em;
-	padding: 16px 20px;
+	padding: 16px 10px;
 }
 fieldset legend {
-	background:#fff;
 	color: #e32;
 	font-size: 160%;
 	font-weight: bold;
 }
 fieldset fieldset {
-	margin-top: 0px;
-	margin-bottom: 20px;
-	padding: 16px 10px;
+	margin-top: 0;
+	padding: 10px 0 0;
 }
 fieldset fieldset legend {
 	font-size: 120%;
@@ -309,10 +339,13 @@ div.checkbox label {
 input[type=radio] {
 	float:left;
 	width:auto;
-	margin: 0 3px 7px 0;
+	margin: 6px 0;
+	padding: 0;
+	line-height: 26px;
 }
-div.radio label {
+.radio label {
 	margin: 0 0 6px 20px;
+	line-height: 26px;
 }
 input[type=submit] {
 	display: inline;
@@ -321,109 +354,201 @@ input[type=submit] {
 }
 form .submit input[type=submit] {
 	background:#62af56;
-	background: -webkit-gradient(linear, left top, left bottom, from(#a8ea9c), to(#62af56));
-	background-image: -moz-linear-gradient(top, #a8ea9c, #62af56);
+	background-image: -webkit-linear-gradient(top, #76BF6B, #3B8230);
+	background-image: -moz-linear-gradient(top, #76BF6B, #3B8230);
 	border-color: #2d6324;
-	color: #000;
-	text-shadow: #8cee7c 0px 1px 0px;
+	color: #fff;
+	text-shadow: rgba(0, 0, 0, 0.5) 0px -1px 0px;
+	padding: 8px 10px;
 }
 form .submit input[type=submit]:hover {
-	background:#4ca83d;
-	background: -webkit-gradient(linear, left top, left bottom, from(#85e573), to(#4ca83d));
-	background-image: -moz-linear-gradient(top, #85e573, #4ca83d);
+	background: #5BA150;
+}
+/* Form errors */
+form .error {
+	background: #FFDACC;
+	-moz-order-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+	font-weight: normal;
+}
+form .error-message {
+	-moz-border-radius: none;
+	-webkit-border-radius: none;
+	border-radius: none;
+	border: none;
+	background: none;
+	margin: 0;
+	padding-left: 4px;
+	padding-right: 0;
+}
+form .error,
+form .error-message {
+	color: #9E2424;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	-ms-box-shadow: none;
+	-o-box-shadow: none;
+	box-shadow: none;
+	text-shadow: none;
 }
 
 /** Notices and Errors **/
-div.message {
+.message {
 	clear: both;
 	color: #fff;
 	font-size: 140%;
 	font-weight: bold;
 	margin: 0 0 1em 0;
-	background: #c73e14;
 	padding: 5px;
 }
-div.error-message {
+
+.success,
+.message,
+.cake-error,
+.cake-debug,
+.notice,
+p.error,
+.error-message {
+	background: #ffcc00;
+	background-repeat: repeat-x;
+	background-image: -moz-linear-gradient(top, #ffcc00, #E6B800);
+	background-image: -ms-linear-gradient(top, #ffcc00, #E6B800);
+	background-image: -webkit-linear-gradient(top, #ffcc00, #E6B800);
+	background-image: -o-linear-gradient(top, #ffcc00, #E6B800);
+	background-image: linear-gradient(top, #ffcc00, #E6B800);
+	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+	border: 1px solid rgba(0, 0, 0, 0.2);
+	margin-bottom: 18px;
+	padding: 7px 14px;
+	color: #404040;
+	text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+	-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+}
+.success,
+.message,
+.cake-error,
+p.error,
+.error-message {
 	clear: both;
 	color: #fff;
-	font-weight: bold;
-	background: #c73e14;
+	background: #c43c35;
+	border: 1px solid rgba(0, 0, 0, 0.5);
+	background-repeat: repeat-x;
+	background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+	background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
+	background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+	background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+	background-image: linear-gradient(top, #ee5f5b, #c43c35);
+	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
 }
-p.error {
-	background-color: #e32;
+.success {
+	clear: both;
 	color: #fff;
-	font-family: Courier, monospace;
+	border: 1px solid rgba(0, 0, 0, 0.5);
+	background: #3B8230;
+	background-repeat: repeat-x;
+	background-image: -webkit-linear-gradient(top, #76BF6B, #3B8230);
+	background-image: -moz-linear-gradient(top, #76BF6B, #3B8230);
+	background-image: -ms-linear-gradient(top, #76BF6B, #3B8230);
+	background-image: -o-linear-gradient(top, #76BF6B, #3B8230);
+	background-image: linear-gradient(top, #76BF6B, #3B8230);
+	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
+}
+p.error {
+	font-family: Monaco, Consolas, Courier, monospace;
 	font-size: 120%;
-	line-height: 140%;
 	padding: 0.8em;
 	margin: 1em 0;
 }
 p.error em {
-	color: #000;
 	font-weight: normal;
 	line-height: 140%;
 }
 .notice {
-	background: #ffcc00;
 	color: #000;
 	display: block;
-	font-family: Courier, monospace;
 	font-size: 120%;
-	line-height: 140%;
 	padding: 0.8em;
 	margin: 1em 0;
 }
 .success {
-	background: green;
 	color: #fff;
 }
 
 /**  Actions  **/
-div.actions ul {
+.actions ul {
 	margin: 0;
 	padding: 0;
 }
-div.actions li {
+.actions li {
 	margin:0 0 0.5em 0;
 	list-style-type: none;
 	white-space: nowrap;
 	padding: 0;
 }
-div.actions ul li a {
+.actions ul li a {
 	font-weight: normal;
 	display: block;
 	clear: both;
 }
-div.actions ul li a:hover {
-	text-decoration: underline;
-}
 
+/* Buttons and button links */
 input[type=submit],
-div.actions ul li a,
-td.actions a {
+.actions ul li a,
+.actions a {
 	font-weight:normal;
 	padding: 4px 8px;
-	background:#e6e49f;
-	background: -webkit-gradient(linear, left top, left bottom, from(#f1f1d4), to(#e6e49f));
-	background-image: -moz-linear-gradient(top, #f1f1d4, #e6e49f);
+	background: #dcdcdc;
+	background-image: -webkit-linear-gradient(top, #fefefe, #dcdcdc);
+	background-image: -moz-linear-gradient(top, #fefefe, #dcdcdc);
+	background-image: -ms-linear-gradient(top, #fefefe, #dcdcdc);
+	background-image: -o-linear-gradient(top, #fefefe, #dcdcdc);
+	background-image: linear-gradient(top, #fefefe, #dcdcdc);
 	color:#333;
-	border:1px solid #aaac62;
-	-webkit-border-radius:8px;
-	-moz-border-radius:8px;
-	border-radius:8px;
-	text-decoration:none;
+	border:1px solid #bbb;
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	text-decoration: none;
 	text-shadow: #fff 0px 1px 0px;
 	min-width: 0;
+	-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);
+	-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);
+	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2);
+	-webkit-user-select: none;
+	user-select: none;
+}
+.actions ul li a:hover,
+.actions a:hover {
+	background: #ededed;
+	border-color: #acacac;
+	text-decoration: none;
 }
-input[type=submit]:hover,
-div.actions ul li a:hover,
-td.actions a:hover {
-	background: #f0f09a;
-	background: -webkit-gradient(linear, left top, left bottom, from(#f7f7e1), to(#eeeca9));
+input[type=submit]:active,
+.actions ul li a:active,
+.actions a:active {
+	background: #eee;
+	background-image: -webkit-linear-gradient(top, #dfdfdf, #eee);
+	background-image: -moz-linear-gradient(top, #dfdfdf, #eee);
+	background-image: -ms-linear-gradient(top, #dfdfdf, #eee);
+	background-image: -o-linear-gradient(top, #dfdfdf, #eee);
+	background-image: linear-gradient(top, #dfdfdf, #eee);
+	text-shadow: #eee 0px 1px 0px;
+	-moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
+	box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3);
+	border-color: #aaa;
+	text-decoration: none;
 }
 
 /** Related **/
-div.related {
+.related {
 	clear: both;
 	display: block;
 }
@@ -432,38 +557,92 @@ div.related {
 pre {
 	color: #000;
 	background: #f0f0f0;
-	padding: 1em;
+	padding: 15px;
+	-moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
+	box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
 }
-pre.cake-debug {
-	background: #ffcc00;
-	font-size: 120%;
-	line-height: 140%;
-	margin-top: 1em;
-	overflow: auto;
+.cake-debug-output {
+	padding: 0;
 	position: relative;
 }
-div.cake-stack-trace {
-	background: #fff;
+.cake-debug-output > span {
+	position: absolute;
+	top: 5px;
+	right: 5px;
+	background: rgba(255, 255, 255, 0.3);
+	-moz-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+	padding: 5px 6px;
+	color: #000;
+	display: block;
+	float: left;
+	-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);
+	-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);
+	box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5);
+	text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
+}
+.cake-debug,
+.cake-error {
+	font-size: 16px;
+	line-height: 20px;
+	clear: both;
+}
+.cake-error > a {
+	text-shadow: none;
+}
+.cake-error {
+	white-space: normal;
+}
+.cake-stack-trace {
+	background: rgba(255, 255, 255, 0.7);
 	color: #333;
-	margin: 0px;
-	padding: 6px;
+	margin: 10px 0 5px 0;
+	padding: 10px 10px 0 10px;
 	font-size: 120%;
 	line-height: 140%;
 	overflow: auto;
 	position: relative;
+	-moz-border-radius: 4px;
+	-wekbkit-border-radius: 4px;
+	border-radius: 4px;
+}
+.cake-stack-trace a {
+	text-shadow: none;
+	background: rgba(255, 255, 255, 0.7);
+	padding: 5px;
+	-moz-border-radius: 10px;
+	-webkit-border-radius: 10px;
+	border-radius: 10px;
+	margin: 0px 4px 10px 2px;
+	font-family: sans-serif;
+	font-size: 14px;
+	line-height: 14px;
+	display: inline-block;
+	text-decoration: none;
+	-moz-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);
+	-webkit-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);
+	box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3);
 }
-div.cake-code-dump pre {
+.cake-code-dump pre {
 	position: relative;
 	overflow: auto;
 }
-div.cake-stack-trace pre, div.cake-code-dump pre {
+.cake-context {
+	margin-bottom: 10px;
+}
+.cake-stack-trace pre {
 	color: #000;
 	background-color: #F0F0F0;
-	margin: 0px;
+	margin: 0px 0 10px 0;
 	padding: 1em;
 	overflow: auto;
+	text-shadow: none;
 }
-div.cake-code-dump pre, div.cake-code-dump pre code {
+/* excerpt */
+.cake-code-dump pre,
+.cake-code-dump pre code {
 	clear: both;
 	font-size: 12px;
 	line-height: 15px;
@@ -471,25 +650,25 @@ div.cake-code-dump pre, div.cake-code-dump pre code {
 	padding: 4px;
 	overflow: auto;
 }
-div.cake-code-dump span.code-highlight {
-	background-color: #ff0;
-	padding: 4px;
+.cake-code-dump .code-highlight {
+	display: block;
+	background-color: rgba(255, 255, 0, 0.5);
 }
-div.code-coverage-results div.code-line {
+.code-coverage-results div.code-line {
 	padding-left:5px;
 	display:block;
 	margin-left:10px;
 }
-div.code-coverage-results div.uncovered span.content {
+.code-coverage-results div.uncovered span.content {
 	background:#ecc;
 }
-div.code-coverage-results div.covered span.content {
+.code-coverage-results div.covered span.content {
 	background:#cec;
 }
-div.code-coverage-results div.ignored span.content {
+.code-coverage-results div.ignored span.content {
 	color:#aaa;
 }
-div.code-coverage-results span.line-num {
+.code-coverage-results span.line-num {
 	color:#666;
 	display:block;
 	float:left;
@@ -497,37 +676,37 @@ div.code-coverage-results span.line-num {
 	text-align:right;
 	margin-right:5px;
 }
-div.code-coverage-results span.line-num strong {
+.code-coverage-results span.line-num strong {
 	color:#666;
 }
-div.code-coverage-results div.start {
+.code-coverage-results div.start {
 	border:1px solid #aaa;
 	border-width:1px 1px 0px 1px;
 	margin-top:30px;
 	padding-top:5px;
 }
-div.code-coverage-results div.end {
+.code-coverage-results div.end {
 	border:1px solid #aaa;
 	border-width:0px 1px 1px 1px;
 	margin-bottom:30px;
 	padding-bottom:5px;
 }
-div.code-coverage-results div.realstart {
+.code-coverage-results div.realstart {
 	margin-top:0px;
 }
-div.code-coverage-results p.note {
+.code-coverage-results p.note {
 	color:#bbb;
 	padding:5px;
 	margin:5px 0 10px;
 	font-size:10px;
 }
-div.code-coverage-results span.result-bad {
+.code-coverage-results span.result-bad {
 	color: #a00;
 }
-div.code-coverage-results span.result-ok {
+.code-coverage-results span.result-ok {
 	color: #fa0;
 }
-div.code-coverage-results span.result-good {
+.code-coverage-results span.result-good {
 	color: #0a0;
 }
 

+ 7 - 3
lib/Cake/Console/Templates/default/views/index.ctp

@@ -65,9 +65,13 @@
 	</p>
 
 	<div class="paging">
-	<?php echo "\t<?php echo \$this->Paginator->prev('<< ' . __('previous'), array(), null, array('class'=>'disabled'));?>\n";?>
-	 | <?php echo "\t<?php echo \$this->Paginator->numbers();?>\n"?> |
-	<?php echo "\t<?php echo \$this->Paginator->next(__('next') . ' >>', array(), null, array('class' => 'disabled'));?>\n";?>
+	<?php
+		echo "<?php\n"; 
+		echo "\t\techo \$this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));\n";
+		echo "\t\techo \$this->Paginator->numbers(array('separator' => ''));\n";
+		echo "\t\techo \$this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));\n";
+		echo "\t?>\n";
+	?>
 	</div>
 </div>
 <div class="actions">

+ 4 - 4
lib/Cake/Test/Case/BasicsTest.php

@@ -677,15 +677,15 @@ class BasicsTest extends CakeTestCase {
 		$pattern = '/(.+?Test(\/|\\\)Case(\/|\\\)BasicsTest\.php|';
 		$pattern .= preg_quote(substr(__FILE__, 1), '/') . ')';
 		$pattern .= '.*line.*' . (__LINE__ - 4) . '.*this-is-a-test.*/s';
-		$this->assertPattern($pattern, $result);
+		$this->assertRegExp($pattern, $result);
 
 		ob_start();
 			debug('<div>this-is-a-test</div>', true);
 		$result = ob_get_clean();
 		$pattern = '/(.+?Test(\/|\\\)Case(\/|\\\)BasicsTest\.php|';
 		$pattern .= preg_quote(substr(__FILE__, 1), '/') . ')';
-		$pattern .=	'.*line.*' . (__LINE__ - 4) . '.*&lt;div&gt;this-is-a-test&lt;\/div&gt;.*/s';
-		$this->assertPattern($pattern, $result);
+		$pattern .= '.*line.*' . (__LINE__ -4) . '.*&lt;div&gt;this-is-a-test&lt;\/div&gt;.*/s';
+		$this->assertRegExp($pattern, $result);
 
 		ob_start();
 			debug('<div>this-is-a-test</div>', false);
@@ -693,7 +693,7 @@ class BasicsTest extends CakeTestCase {
 		$pattern = '/(.+?Test(\/|\\\)Case(\/|\\\)BasicsTest\.php|';
 		$pattern .= preg_quote(substr(__FILE__, 1), '/') . ')';
 		$pattern .=	'.*line.*' . (__LINE__ - 4) . '.*\<div\>this-is-a-test\<\/div\>.*/s';
-		$this->assertPattern($pattern, $result);
+		$this->assertRegExp($pattern, $result);
 	}
 
 /**

+ 7 - 2
lib/Cake/Test/Case/Utility/DebuggerTest.php

@@ -128,7 +128,7 @@ class DebuggerTest extends CakeTestCase {
 		Debugger::output('html');
 		$wrong .= '';
 		$result = ob_get_clean();
-		$this->assertPattern('/<pre class="cake-debug">.+<\/pre>/', $result);
+		$this->assertPattern('/<pre class="cake-error">.+<\/pre>/', $result);
 		$this->assertPattern('/<b>Notice<\/b>/', $result);
 		$this->assertPattern('/variable:\s+wrong/', $result);
 
@@ -137,7 +137,7 @@ class DebuggerTest extends CakeTestCase {
 		$buzz .= '';
 		$result = explode('</a>', ob_get_clean());
 		$this->assertTags($result[0], array(
-			'pre' => array('class' => 'cake-debug'),
+			'pre' => array('class' => 'cake-error'),
 			'a' => array(
 				'href' => "javascript:void(0);",
 				'onclick' => "preg:/document\.getElementById\('cakeErr[a-z0-9]+\-trace'\)\.style\.display = " .
@@ -250,6 +250,11 @@ class DebuggerTest extends CakeTestCase {
 		$this->assertTags($result, $data, true);
 	}
 
+/**
+ * Test adding a format that is handled by a callback.
+ *
+ * @return void
+ */
 	public function testAddFormatCallback() {
 		set_error_handler('Debugger::showError');
 		$this->_restoreError = true;

+ 14 - 36
lib/Cake/Utility/Debugger.php

@@ -44,13 +44,6 @@ class Debugger {
 	public $errors = array();
 
 /**
- * Contains the base URL for error code documentation.
- *
- * @var string
- */
-	public $helpPath = null;
-
-/**
  * The current output format.
  *
  * @var string
@@ -77,8 +70,8 @@ class Debugger {
 			'links' => array()
 		),
 		'html' => array(
-			'trace' => '<pre class="cake-debug trace"><b>Trace</b> <p>{:trace}</p></pre>',
-			'context' => '<pre class="cake-debug context"><b>Context</b> <p>{:context}</p></pre>'
+			'trace' => '<pre class="cake-error trace"><b>Trace</b> <p>{:trace}</p></pre>',
+			'context' => '<pre class="cake-error context"><b>Context</b> <p>{:context}</p></pre>'
 		),
 		'txt' => array(
 			'error' => "{:error}: {:code} :: {:description} on line {:line} of {:path}\n{:info}",
@@ -114,7 +107,7 @@ class Debugger {
 			define('E_RECOVERABLE_ERROR', 4096);
 		}
 
-		$e = '<pre class="cake-debug">';
+		$e = '<pre class="cake-error">';
 		$e .= '<a href="javascript:void(0);" onclick="document.getElementById(\'{:id}-trace\')';
 		$e .= '.style.display = (document.getElementById(\'{:id}-trace\').style.display == ';
 		$e .= '\'none\' ? \'\' : \'none\');"><b>{:error}</b> ({:code})</a>: {:description} ';
@@ -140,20 +133,19 @@ class Debugger {
 		$link .= '\'none\' ? \'\' : \'none\')">Context</a>';
 		$links['context'] = $link;
 
-		$links['help'] = '<a href="{:helpPath}{:code}" target="_blank">Help</a>';
 		$this->_templates['js']['links'] = $links;
 
 		$this->_templates['js']['context'] = '<pre id="{:id}-context" class="cake-context" ';
 		$this->_templates['js']['context'] .= 'style="display: none;">{:context}</pre>';
 
-		$this->_templates['js']['code'] = '<div id="{:id}-code" class="cake-code-dump" ';
-		$this->_templates['js']['code'] .= 'style="display: none;"><pre>{:code}</pre></div>';
+		$this->_templates['js']['code'] = '<pre id="{:id}-code" class="cake-code-dump" ';
+		$this->_templates['js']['code'] .= 'style="display: none;">{:code}</pre>';
 
-		$e = '<pre class="cake-debug"><b>{:error}</b> ({:code}) : {:description} ';
+		$e = '<pre class="cake-error"><b>{:error}</b> ({:code}) : {:description} ';
 		$e .= '[<b>{:path}</b>, line <b>{:line}]</b></pre>';
 		$this->_templates['html']['error'] = $e;
 
-		$this->_templates['html']['context'] = '<pre class="cake-debug context"><b>Context</b> ';
+		$this->_templates['html']['context'] = '<pre class="cake-context"><b>Context</b> ';
 		$this->_templates['html']['context'] .= '<p>{:context}</p></pre>';
 	}
 
@@ -168,17 +160,10 @@ class Debugger {
 		if (!empty($class)) {
 			if (!$instance || strtolower($class) != strtolower(get_class($instance[0]))) {
 				$instance[0] = new $class();
-				if (Configure::read('debug') > 0) {
-					$instance[0]->helpPath = Configure::read('Cake.Debugger.HelpPath');
-				}
 			}
 		}
-
 		if (!$instance) {
 			$instance[0] = new Debugger();
-			if (Configure::read('debug') > 0) {
-				$instance[0]->helpPath = Configure::read('Cake.Debugger.HelpPath');
-			}
 		}
 		return $instance[0];
 	}
@@ -219,6 +204,7 @@ class Debugger {
  * @param integer $line Line that triggered the error
  * @param array $context Context
  * @return boolean true if error was handled
+ * @deprecated This function is supersceeded by Debugger::outputError()
  */
 	public static function showError($code, $description, $file = null, $line = null, $context = null) {
 		$_this = Debugger::getInstance();
@@ -264,15 +250,8 @@ class Debugger {
 			break;
 		}
 
-		if (!empty($_this->helpPath) && preg_match('/.*\[([0-9]+)\]$/', $description, $codes)) {
-			if (isset($codes[1])) {
-				$helpID = $codes[1];
-				$description = trim(preg_replace('/\[[0-9]+\]$/', '', $description));
-			}
-		}
-
 		$data = compact(
-			'level', 'error', 'code', 'helpID', 'description', 'file', 'path', 'line', 'context'
+			'level', 'error', 'code', 'description', 'file', 'path', 'line', 'context'
 		);
 		echo $_this->outputError($data);
 
@@ -662,12 +641,11 @@ class Debugger {
 			'level' => 0,
 			'error' => 0,
 			'code' => 0,
-			'helpID' => null,
 			'description' => '',
 			'file' => '',
 			'line' => 0,
 			'context' => array(),
-			'start' => 2
+			'start' => 2,
 		);
 		$data += $defaults;
 
@@ -694,13 +672,13 @@ class Debugger {
 
 		$data['id'] = 'cakeErr' . uniqid();
 		$tpl = array_merge($this->_templates['base'], $this->_templates[$this->_outputFormat]);
-		$insert = array('context' => join("\n", $context), 'helpPath' => $this->helpPath) + $data;
+		$insert = array('context' => join("\n", $context)) + $data;
 
-		$detect = array('help' => 'helpID', 'context' => 'context');
+		$detect = array('context');
 
 		if (isset($tpl['links'])) {
 			foreach ($tpl['links'] as $key => $val) {
-				if (isset($detect[$key]) && empty($insert[$detect[$key]])) {
+				if (in_array($key, $detect) && empty($insert[$key])) {
 					continue;
 				}
 				$links[$key] = String::insert($val, $insert, $insertOpts);
@@ -716,7 +694,7 @@ class Debugger {
 			}
 			$info .= String::insert($tpl[$key], compact($key) + $insert, $insertOpts);
 		}
-		$links = join(' | ', $links);
+		$links = join(' ', $links);
 		unset($data['context']);
 		if (isset($tpl['callback']) && is_callable($tpl['callback'])) {
 			return call_user_func($tpl['callback'], $data, compact('links', 'info'));

+ 0 - 1
lib/Cake/View/Errors/missing_action.ctp

@@ -34,7 +34,6 @@ class <?php echo $controller;?> extends AppController {
 	}
 </strong>
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_behavior_class.ctp

@@ -30,7 +30,6 @@
 class <?php echo $class;?> extends ModelBehavior {
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_behavior_file.ctp

@@ -30,7 +30,6 @@
 class <?php echo $class;?> extends ModelBehavior {
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_component_class.ctp

@@ -30,7 +30,6 @@
 class <?php echo $class;?> extends Component {<br />
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_component_file.ctp

@@ -30,7 +30,6 @@
 class <?php echo $class;?> extends Component {<br />
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_controller.ctp

@@ -30,7 +30,6 @@
 class <?php echo $controller;?> extends AppController {
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_helper_class.ctp

@@ -30,7 +30,6 @@
 class <?php echo $class;?> extends AppHelper {
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 0 - 1
lib/Cake/View/Errors/missing_helper_file.ctp

@@ -30,7 +30,6 @@
 class <?php echo $class;?> extends AppHelper {
 
 }
-?&gt;
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Notice'); ?>: </strong>

+ 1 - 1
lib/Cake/View/Errors/missing_plugin.ctp

@@ -28,7 +28,7 @@
 <pre>
 &lt;?php
 CakePlugin::load('<?php echo $plugin?>');
-?&gt;
+
 </pre>
 <p class="notice">
 	<strong><?php echo __d('cake_dev', 'Loading all plugins'); ?>: </strong>

+ 1 - 1
lib/Cake/View/Errors/scaffold_error.ctp

@@ -30,7 +30,7 @@
 function _scaffoldError() {<br />
 
 }
-?&gt;
+
 </pre>
 
 <?php echo $this->element('exception_stack_trace'); ?>

+ 0 - 4
lib/Cake/View/Pages/home.ctp

@@ -170,8 +170,4 @@ You can also add some CSS styles for your pages at: APP/webroot/css.');
 	<ul><li><?php echo __d('cake_dev', 'For the Development of CakePHP Git repository, Downloads'); ?></li></ul></li>
 	<li><a href="http://cakephp.lighthouseapp.com/"><?php echo __d('cake_dev', 'CakePHP Lighthouse'); ?> </a>
 	<ul><li><?php echo __d('cake_dev', 'CakePHP Tickets, Wiki pages, Roadmap'); ?></li></ul></li>
-	<li><a href="http://astore.amazon.com/cakesoftwaref-20/"><?php echo __d('cake_dev', 'Book Store'); ?> </a>
-	<ul><li><?php echo __d('cake_dev', 'Recommended Software Books'); ?></li></ul></li>
-	<li><a href="http://www.cafepress.com/cakefoundation"><?php echo __d('cake_dev', 'CakePHP gear'); ?> </a>
-	<ul><li><?php echo __d('cake_dev', 'Get your own CakePHP gear - Doughnate to Cake'); ?></li></ul></li>
 </ul>

+ 5 - 3
lib/Cake/View/Scaffolds/index.ctp

@@ -67,9 +67,11 @@ endforeach;
 	));
 	?></p>
 	<div class="paging">
-	<?php echo $this->Paginator->prev('<< ' . __d('cake', 'previous'), array(), null, array('class' => 'disabled')); ?>
-	 | <?php echo $this->Paginator->numbers(); ?>
-	<?php echo $this->Paginator->next(__d('cake', 'next') .' >>', array(), null, array('class' => 'disabled')); ?>
+	<?php
+		echo $this->Paginator->prev('< ' . __d('cake', 'previous'), array(), null, array('class' => 'prev disabled'));
+		echo $this->Paginator->numbers(array('separator' => ''));
+		echo $this->Paginator->next(__d('cake', 'next') .' >', array(), null, array('class' => 'next disabled'));
+	?>
 	</div>
 </div>
 <div class="actions">

+ 4 - 2
lib/Cake/basics.php

@@ -82,10 +82,12 @@ function debug($var = false, $showHtml = null, $showFrom = true) {
 			$line = $calledFrom[0]['line'];
 		}
 		$html = <<<HTML
-<strong>%s</strong> (line <strong>%s</strong>)
+<div class="cake-debug-output">
+<span><strong>%s</strong> (line <strong>%s</strong>)</span>
 <pre class="cake-debug">
 %s
 </pre>
+</div>
 HTML;
 			$text = <<<TEXT
 
@@ -104,7 +106,7 @@ TEXT;
 		}
 		$var = print_r($var, true);
 		if ($showHtml) {
-			$var = str_replace(array('<', '>'), array('&lt;', '&gt;'), $var);
+			$var = htmlentities($var);
 		}
 		printf($template, $file, $line, $var);
 	}